js通訊錄效果,你見過麼
最近有一個需求,要寫一個通訊錄效果的聯絡人列表效果,相信這個大家都不陌生,當然當我寫到一半的時候,同事告訴我這個是android和IOS的需求,,,十分鬱悶,但是本人求知慾甚是強烈,就用jq實現了這個功能。
現在我們先來看一下這個功能演示,這個實現了基本的功能,不過一些過渡的動畫沒有寫上,後期會補上,大家想用的話,自行不上這個過渡效果:
通訊錄效果演示.gif
首先我們來看一下html的佈局,這個佈局很簡單
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="format-detection" content="telephone=no"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <title>Title</title> <style> *{padding: 0;margin: 0} html,body{ width: 100%;height: 100%;box-sizing: border-box; font-size: 62.5%; } a,ul,li{ list-style: none; text-decoration: none; } .slider{width: 100%;height: 100%;position: relative ; padding-top: 1.5rem } .sliderNav{width: 10%;position: fixed;right: 0;height: 100%;text-align: center;top: 1.5rem;} .slider>h2{ font-size: 2rem; line-height: 3.5rem; padding-left: 1.5rem; } .sliderNav>li>a{ font-size: 2rem; color: #18a2ff; } .slider-content{ position: absolute; left: 1.5rem; width: 85%; } .slider-content>div{ font-size: 30px; padding-left: 1.5rem; height: 50px; line-height: 50px; background-color: #7f8393; } .slider-content>div:nth-child(2n+1){ background-color: #bff3de; } .slider-content>div:nth-child(2n){ background-color: #7f8393; } .slider-content>ul{ padding-top: 0.5rem; } .slider-content>ul>li{ line-height:3rem; } </style> <script src="jquery.min.js"></script> <script src="codeList.js"></script> <script src="test.js"></script> <link rel="stylesheet" href="test.css"> </head> <body> <div class="slider" id="slider"> <h2 >邀請的好友列表</h2> <div class="slider-content" id="sliderContent"></div> <ul class="sliderNav" id="sliderNav"></ul> </div> </body> <script> </script> </html>
鑑於檔案的太多,引入的檔案部分我會以連結的形式,大家可以跳轉頁面,下載相應的部分
- 引入一個jquery檔案
- 變數 的引入,其中需要引入一個 字元的Unicode編碼範圍為19968至40869
- 對應的漢字轉碼
4.列表顯示的資料展示
111111111111111111111.png
相關連結請跳轉此處
2016121411540catFish.jpg
有了以上的條件,我們來看js實現部分
/** * Created by Administrator on 2017/1/5. */ $(function () { var obj = getInviterFirst(inviter); getSliderNav(obj.inviterFirst); console.log(obj.sortInviter); getSliderContent(obj.sortInviter); }); function getSliderContent(object) { var html = ''; var _li_html = ''; for(var i in object){ console.log(i); for (var j = 0 ; j < object[i].length; j++){ _li_html+='<li>'+object[i][j]+'</li>'; } html += '<div id='+i+'><span>'+i+'</span></div><ul >'+_li_html+'</ul>'; _li_html = ''; } $('#sliderContent').html(html); } /** * 字母排序 * @param a * @param b * @returns {number} */ function mySorter(a, b){ if (/^\d/.test(a)^/^\D/.test(b)) return a>b?1:(a==b?0:-1); return a>b?-1:(a==b?0:1); } /** * 獲取通訊錄右側的索引 * @param array */ function getSliderNav(array) { var html = ''; for (var i = 0; i < array.length ; i ++){ html+='<li ><a href=#'+array[i]+'>'+array[i]+'</a></li>'; } $('#sliderNav').append(html); $('.sliderNav li').css('height',($('.sliderNav').height()-35)/array.length); $('.sliderNav li').css('line-height',($('.sliderNav').height()-35)/array.length+'px'); } /** * 獲取所有資料包含的首字母,並且去重,按照字母順序進行排序,並將資料按照首字母進行分類 * @param arr * @returns {*|Array.<T>} */ function getInviterFirst(arr){ var objObj = {}; var array = []; var objArr = []; for (var i = 0 ; i < arr.length ; i ++){ array.push(query(arr[i])); console.log(query(arr[i])); if (!objObj.hasOwnProperty(query(arr[i]))){ objArr = []; objArr.push(arr[i]); objObj[query(arr[i])] = objArr; }else{ objArr.push(arr[i]); } } return obj = { sortInviter:objObj, inviterFirst:(Array.from(new Set(array))).sort(mySorter) }; } /** *檢視拼音首字母縮寫 */ function query(str){ if(str == "") return; var arrRslt = makePy(str); return arrRslt[0].toLowerCase().substr(0,1); } /** * 引數,中文字串 * 返回值:拼音首字母串陣列 * @param str * @returns {*} */ function makePy(str){ if(typeof(str) != "string") throw new Error(-1,"函式makePy需要字串型別引數!"); var arrResult = new Array(); //儲存中間結果的陣列 for(var i=0,len=str.length;i<len;i++){ //獲得unicode碼 var ch = str.charAt(i); //檢查該unicode碼是否在處理範圍之內,在則返回該碼對映漢字的拼音首字母,不在則呼叫其它函式處理 arrResult.push(checkCh(ch)); } //處理arrResult,返回所有可能的拼音首字母串陣列 return mkRslt(arrResult); } function checkCh(ch){ var uni = ch.charCodeAt(0); //如果不在漢字處理範圍之內,返回原字元,也可以呼叫自己的處理函式 if(uni > 40869 || uni < 19968) return ch; //dealWithOthers(ch); //檢查是否是多音字,是按多音字處理,不是就直接在strChineseFirstPY字串中找對應的首字母 return (oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968))); } function mkRslt(arr){ var arrRslt = [""]; for(var i=0,len=arr.length;i<len;i++){ var str = arr[i]; var strlen = str.length; if(strlen == 1){ for(var k=0;k<arrRslt.length;k++){ arrRslt[k] += str; } }else{ var tmpArr = arrRslt.slice(0); arrRslt = []; for(k=0;k<strlen;k++){ //複製一個相同的arrRslt var tmp = tmpArr.slice(0); //把當前字元str[k]新增到每個元素末尾 for(var j=0;j<tmp.length;j++){ tmp[j] += str.charAt(k); } //把複製並修改後的陣列連線到arrRslt上 arrRslt = arrRslt.concat(tmp); } } } return arrRslt; }
哈哈,看著這個通訊錄效果雖然比較簡陋但是基本效果還是實現了,大家可以引用在此基礎上進行修改以滿足你們的需求欲,如有疑問請留言或者傳送我的郵箱[email protected]
不足之處大家儘可以指出來,方便交流探討
今晚加個雞腿.jpg
相關推薦
js通訊錄效果,你見過麼
最近有一個需求,要寫一個通訊錄效果的聯絡人列表效果,相信這個大家都不陌生,當然當我寫到一半的時候,同事告訴我這個是android和IOS的需求,,,十分鬱悶,但是本人求知慾甚是強烈,就用jq實現了這個功能。 現在我們先來看一下這個功能演示,這個實現了基本的功能,不過一些過渡的動畫沒有寫上,後期會補上,大家想
能藏套套、能防沈迷、能玩桌遊……這些創意手機殼,你見過沒!
手機殼兵者詭道也,其實對於創意來說,也是如此。或許很多人會說,手機殼再創意,它也是門小生意。畢竟對某一個創意能夠形成剛需的,總是極少數。就算是藍海,也是一個規模很小的藍海。話雖如此,但很多時候,恰恰是許多創業者的命門——什麽都擠著去風口上,然後錯過了很多獲得第一桶金的小藍海。反觀工具型手機殼,其實有很多思路可
智能玻璃,你見過嗎?
辦公室 導讀 元素 大氣 排列 液晶 特殊 玄機 實現 [導讀]如果玻璃變得智能化,又會怎麽樣呢? 傳統的玻璃存在的狀態一般為三種。透明狀,不透,半透!工藝中加入特殊元素會產生有色現象。在家庭生活裏更是不可或缺,那麽如果玻璃變得智能化,又會怎麽樣呢?小編今天要介紹的是一款
Java之父22年前寫的一段程式碼,你見過嗎?
Java之父高斯林是一位加拿大的計算機天才。 他創造了偉大的程式語言——Java,在TIOBE排行榜上,Java常年排名第一。 現在這位63歲高齡的祖師爺依然戰鬥在程式設計最前線,寶刀不老。 1、Java之父找不到工作? 之算是Java之父,也難逃中老年危機。 高斯林曾在Facebook上
深入15個HTML元素方法,你見過嗎?
雖然現代化的 web 開發更多地依賴各種 MVC 框架,但開發者仍需要熟練掌握 HTML 與 DOM 方面的基礎知識。不過,即使是有著多年經驗的前端開發者,也會遇到一些不明所以的情況。本文首先將為初學者介紹 HTML 與 DOM 的基本常識,隨後為大家介紹15個比較冷門的 HTML 元素的方
從“窮逼VIP”論註釋規範,你見過哪些奇葩的註釋?
點選有驚喜 最近的“窮逼VIP”事件想必大家有所耳聞!詳細的我就不說了大家可以去看看,當然了出於好奇,我在網上也看到了很多的奇葩的程式設計師寫的註釋來看看吧! 高富屌絲型程式猿 挨批受挫型程式猿 填坑吐槽型程式猿 言語混亂型程式猿 基情講解型
spring的split坑,你見過沒?
最近在使用String split分割時出現了下面問題,講道理分出來的陣列是有21位的,可是當我選擇20的下標時,出現了 注意看字串2015-04-03後面有兩個,按照我們之前的想法應該會給
你見過最牛逼的程式設計師是什麼樣的?拳打回車鍵,腳踩Emacs編輯器
我自己是一名大資料架構師,目前辭職在做線上教育大資料講師,每天都會直播分享免費公開課,大家可以加群參加。以及我自己整理了一套最新的大資料學習系統教程,包括Hadoop,資料探勘,資料分析。送給正在學習大資料的小夥伴!這裡是大資料學習者聚集地,歡迎初學和進階中的小夥伴!加QQ群:5849001
一封來自惡魔的挑戰邀請函,那些你見過或者沒見過的C語言指標都在這裡了
前言 相信大多數的同學都是第一門能接觸到語言是C/C++,其中的指標也是比較讓人頭疼的部分了,因為光是指標都能專門出一本叫《C和指標》的書籍,足見指標的強大。但如果不慎誤用指標,這些指標很大可能就會像惡魔一樣把你的程式給直接搞崩潰。 3個月前,我編寫了一份這些指標都是惡魔嗎?.c的檔案,裡面從大多數常用的
Python小白很難繞過的六大神坑,你入過坑麼?
Python大家對於這門語言的理解大多是說Python是最簡單的程式語言,但是這幾個深坑肯定是十個人無一未踩過的!特意總結了一下這些坑,看看你踩過沒? 學習Python中有不明白推薦加入交流裙 &n
關於hashCode,你一定聽說過會重複,那麼你見過2個不同的字串hashCode值卻是相同的嗎
java中String.hashCode()方法的演算法如下:str.charAt(0) * 31n-1 + str.charAt(1) * 31n-2 + ... + str.charAt(n-1)據說演算法中31這個數字是對英文字元進行優化後產生的一個最佳數字,但是碰上字
這些Linux數據恢復工具,你用過哪幾個
linux數據恢復不論你運用的是臺式電腦仍是筆記本,需求重視的要點之一都是怎麽保護好你的名貴數據。由於總會有各種突發狀況使你的系統潰散,然後你要做的就是恢復數據。不論你怎麽想,要是我失去了一切的數據卻無法恢復的話,我會分分鐘肢解了這臺破電腦。不過幸虧的是,如今商場上有不少的數據恢復工具,能協助咱們從體系的硬盤
每天計算著這點錢怎麽花的日子,你還要過多久?
前端 北漂 據新加坡《聯合早報》網站7月17日報道稱,中國90後或成“不買房一代”,租房由過去不得已變成享受生活的一種方式,輿論以及不少業內人士也都呼籲年輕人租房,不要買房。說的現實一點就是:反正也買不起房,不如把錢省下來租房好好享受吧!可是租房也不便宜啊,楊十八最近了解了一下大北京的租房市場,南三環
VR禁毒體驗,你試過了嗎?
研發 img 成了 此舉 pict clas bsp 廣州 嘗試 VR禁毒體驗,你試過了嗎? 大家先來跟著小編的文字,嘗試冥想一下——當你正處於寧靜的情緒中,對於顏色感覺生動、豐富而深刻,感到周圍事物絢麗多彩,五光十色;對音樂的鑒賞能力增強,對其他聲音也很敏感。然後,感到時
果敢老百勝娛樂13208831115你見過淩晨12點後的麥當勞嗎?
自助點餐機已經關閉 人生百態卻剛剛開果敢老百勝娛樂13208831115網址www.lbs818.com你有沒有想過 白天裏充滿歡樂嬉笑的麥當勞餐廳 到了淩晨 會是怎樣一個狀況? 當城市入夜,一切歸於寧靜 到24h營業的麥當勞餐廳的人 都是些什麽人? 問大家一個問題,你印象中的麥當勞是? ——甜品第二個半價
毫秒級檢測!你見過帶GPU的樹莓派嗎?
load 定義 interval += 編譯 lena 驗證 iss 另一個 樹莓派3B+英特爾神經計算棒進行高速目標檢測 轉載請註明作者夢裏茶 代碼: 訓練數據預處理: https://gist.github.com/ahangchen/ae1b7562c1f93f
目前最受歡迎的12個Python開源框架,你用過幾個?
python 爬蟲 web 入門 開源 今天給大家帶來了12個在GitHub等開源網站中最受歡迎的Python開源框架。如果你正在學習python,那麽這12個開源框架,千萬別錯過,這些框架包括事件I/O,OLAP,Web開發,高性能網絡通信,測試,爬蟲等。雖說不上是全都有,但也足夠滿足你
5 個非常有用的 Laravel Blade 指令,你用過哪些?
內容 def upload user 兩個 doc 系統 使用 hub 接下來我將帶大家認識下五個 Laravel Blade 指令,這些指令將讓你在解決特定問題時如虎添翼。如果你是剛接觸 Laravel 的用戶,這些小技巧能帶你認識到 Laravel Blade 模板引
8個最高效的Python爬蟲框架,你用過幾個?
python 爬蟲 入門 詳細 官網 小編收集了一些較為高效的Python爬蟲框架。分享給大家。1.ScrapyScrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。。用這個框架可以輕松爬下來如亞馬遜商品信息之
騷騷的CRT,你玩過沒
watermark itl 環境變量 今天 orm shel nbsp port 技術分享 今天朋友發了段命令給我:PS1="\[\e[35;33m\][\[\e[35;33m\]\u\[\e[35;35m\]@\h \[\e[35;35m\]\w\[\e[35m