国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

純css實現手機通訊錄

蘇丹 / 1079人閱讀

摘要:不過要是一個簡單的小項目,沒那么多要求的話,純還是能很好的適用的,性能上絕對要比通過滾動監聽強上好多倍,而且引用方便,只要數據生成了就可以直接使用

我們經常在手機上看到通訊錄列表,這類布局一般有兩個顯著的效果

首字母吸頂

快速定位

下面我們來實現一下

頁面結構

這里頁面結構很簡單,就是兩個列表

A
a1
a2
B
b1
b2
...
A B

然后加點樣式

html,body{
    margin: 0;
    height: 100%;
    padding: 0;
}
dl,dd{
    margin: 0;
}
.con{
    position: relative;
    height: 100%;
    overflow-x: hidden;
}
.index{
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.index a{
    display: block;
    width: 30px;
    height: 30px;
    text-align: center;
    line-height: 30px;
    border-radius: 50%;
    background: cornflowerblue;
    text-decoration: none;
    color: #fff;
    outline: 0;
    margin: 5px;
}
.contacts{
    height: 100%;
    background: #fff;
    overflow: auto;
    line-height: 2em;
}
.contacts dt{
    background: bisque;
    font-size: 1.5rem;
    color:cornflowerblue;
    height: 2em;
    line-height: 2em;
    padding: 0 10px;
}
.contacts dd{
    padding: 0 10px;
    display: block;
    cursor: pointer;
}

這樣就可以看到布局了

https://codepen.io/xboxyan/pe...

實現吸頂效果

吸頂效果其實很簡單,只要用到css中的新屬性position:sticky就可以了

粘性定位元素(stickily positioned element)是計算后位置屬性為 sticky 的元素。

兼容性還不錯,至少在移動端可以放心使用

.contacts dt加上position:sticky

.contacts dt{
    /*添加如下屬性*/
    position: sticky;
    top: 0;
}

這樣就實現了每個類目吸頂效果

https://codepen.io/xboxyan/pe...

實現快速定位效果

如果不用js,那么可采用href錨點的方式來實現定位

具體做法就是



...

...


如果整個頁面是可以滾動的,那么只要點擊a,那么頁面就會迅速跳轉到id=A的元素上

現在對我們的頁面添加一些herfid

A
a1
a2
B
b1
b2
...
A B

https://codepen.io/xboxyan/pe...

點擊右側的導航按鈕,頁面就可以快速定位了

等等,好像還有些問題,當往回跳轉時,發現并沒有完全展開,比如像調回A,結果雖然A標簽出來了,但是,A下面的列表卻沒有出來

這是什么問題呢?

經過多次的研究,發現是position:sticky搞的鬼!

當往上定位的時候,我們通過href定位過去,定位的依據是到該元素第一次可見的位置,此時雖然該元素空壓機了,但是下面的元素沒有展示出來,所以就造成了這樣的問題

發現問題就要解決問題

快速定位效果修復

其實我們想要定位的還可以是A下面的第一個列表元素,但是又不能是該元素,因為如果是第一代元素,當跳轉的時候就會被上面的A標簽遮住。

所以我們在兩者之間再插入一個標簽,用于定位

如下,添加了

A
a1
a2
B
b1
b2
...

如果直接放在這里肯定會占空間,所以我們把他向上位移,然后設置不可見,使該元素剛好覆蓋在原標簽位置

如下

.contacts .stikcy-fix{
    position: static;
    visibility: hidden;
    margin-top: -2em;
}

https://codepen.io/xboxyan/pe...

現在看看,是不是完美跳轉了?

其他細節

通常我們在選擇右側索引時,頁面中間會出現一個大寫的字母

這個如果用css實現也比較簡單,用到偽元素的content:attr()就可以了,在之前的文章(用純css實現打星星效果)中也講到過

具體實現如下

.index a:active:after{
    content: attr(data-type);
    position: fixed;
    left: 50%;
    top: 50%;
    width: 100px;
    height: 100px;
    border-radius: 5px;
    text-align: center;
    line-height: 100px;
    font-size: 50px;
    transform: translate(-50%,-50%);
    background: rgba(0,0,0,.5);
}

這里用到了content: attr(data-type),所以a上面要有一個data-type屬性


A B

其次,實際項目中,我們需要用js來生成這些列表

假定我們要求的數據如下

var data = [
        {
            "type":"A",
            "user":[
                {
                    name:"a1"
                },
                {
                    name:"a2"
                },
                {
                    name:"a3"
                },
                {
                    name:"a1"
                },
                {
                    name:"a2"
                },
                {
                    name:"a3"
                },
                {
                    name:"a3"
                },
                {
                    name:"a1"
                },
                {
                    name:"a2"
                },
                {
                    name:"a3"
                },
            ]
        },
        {
            "type":"B",
            "user":[
                {
                    name:"b1"
                },
                {
                    name:"b2"
                },
                {
                    name:"b3"
                },
                {
                    name:"b1"
                },
                {
                    name:"b2"
                },
                {
                    name:"b3"
                },
                {
                    name:"b3"
                },
                {
                    name:"b1"
                },
                {
                    name:"b2"
                },
                {
                    name:"b3"
                },
            ]
        },
        {
            "type":"C",
            "user":[
                {
                    name:"c1"
                },
                {
                    name:"c2"
                },
                {
                    name:"c3"
                },
                {
                    name:"c1"
                },
                {
                    name:"c2"
                },
                {
                    name:"c3"
                },
                {
                    name:"c3"
                },
                {
                    name:"c1"
                },
                {
                    name:"c2"
                },
                {
                    name:"c3"
                },
            ]
        },
        {
            "type":"D",
            "user":[
                {
                    name:"d1"
                },
                {
                    name:"d2"
                },
                {
                    name:"d3"
                },
                {
                    name:"d1"
                },
                {
                    name:"d2"
                },
                {
                    name:"d3"
                },
                {
                    name:"d3"
                },
                {
                    name:"d1"
                },
                {
                    name:"d2"
                },
                {
                    name:"d3"
                },
            ]
        },
        {
            "type":"E",
            "user":[
                {
                    name:"e1"
                },
                {
                    name:"e2"
                },
                {
                    name:"e3"
                },
                {
                    name:"e1"
                },
                {
                    name:"e2"
                },
                {
                    name:"e3"
                },
                {
                    name:"e3"
                },
                {
                    name:"e1"
                },
                {
                    name:"e2"
                },
                {
                    name:"e3"
                },
            ]
        }
    ]

這種格式的數據可以要求后端返回,或者直接前端改造都行

然后對數據進行循環遍歷即可

var indexs = document.getElementById("index");
var contacts = document.getElementById("contacts");
var index_html = "";
var contacts_html = "";
data.forEach(el=>{
    contacts_html += "
"+el.type+"
"; index_html += ""+el.type+""; el.user.forEach(d=>{ contacts_html+="
"+d.name+"
"; }) contacts_html+="
" }) indexs.innerHTML = index_html; contacts.innerHTML = contacts_html;

https://codepen.io/xboxyan/pe...

這部分js只是生成布局,沒有任何功能上的邏輯

一些不足

雖然通過錨點實現列表的快速定位,但是此時瀏覽器的地址欄會加上#A這樣的標識,一不好看,二在使用瀏覽器默認的返回時會把這些標識全部走一遍,不太方便。

還有一個問題,在滾動列表的時候,沒法做到右側索引當前類別高亮顯示,同時右側索引也不支持滑動快速定位。

這些細節問題也只能通過js來修復了。

不過要是一個簡單的小項目,沒那么多要求的話,純css還是能很好的適用的,性能上絕對要比通過js滾動監聽強上好多倍,而且引用方便,只要數據生成了就可以直接使用^^

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/53080.html

相關文章

  • css實現手機訊錄

    摘要:不過要是一個簡單的小項目,沒那么多要求的話,純還是能很好的適用的,性能上絕對要比通過滾動監聽強上好多倍,而且引用方便,只要數據生成了就可以直接使用 我們經常在手機上看到通訊錄列表,這類布局一般有兩個顯著的效果 showImg(https://segmentfault.com/img/remote/1460000016709371?w=360&h=640); 首字母吸頂 快速定位 下...

    王晗 評論0 收藏0
  • css實現手機訊錄

    摘要:不過要是一個簡單的小項目,沒那么多要求的話,純還是能很好的適用的,性能上絕對要比通過滾動監聽強上好多倍,而且引用方便,只要數據生成了就可以直接使用 我們經常在手機上看到通訊錄列表,這類布局一般有兩個顯著的效果 showImg(https://segmentfault.com/img/remote/1460000016709371?w=360&h=640); 首字母吸頂 快速定位 下...

    leonardofed 評論0 收藏0
  • 誰是云計算市場的新變量?

    摘要:云計算深入,驅動市場過去十年,云計算服務取得了長足的發展。之于云計算的重要性,相當于操作系統之于電腦。細分市場投融資活躍全球云計算服務模式中,雖然市場份額最小,但是增速卻是最快的。向進軍已是云計算產業投資者和創業者的新戰略方向。1. 互聯網應用風口快速迭代,為企業提供風口型解決方案的PaaS服務商重要性凸顯。2. PaaS領域資本熱度增高,Docker技術平臺和通訊云平臺是今年最熱的細分領域...

    justjavac 評論0 收藏0
  • 工作總結

    摘要:微信現在出現屏蔽常規撥號功能,具體解決辦法見微信開發實現一鍵撥號出現屏蔽問題的解決方案最常用頁面實現一鍵發送短信功能移動頁面一鍵發送短信咨詢功能在信息錄入界面,顯示發送號碼,并提示錄入信息。1、標題頁加圖標: 2、隱藏滾動條 3、placeholder 顏色改變: 4、文字兩端對齊 5、微信開發之移動手機WEB頁面(HTML5)Javascript實現一鍵撥號及短信發送功能 6、微信里不能復...

    番茄西紅柿 評論0 收藏0
  • HTML+CSS+JavaScript 編寫的計算器應用

    摘要:不允許再有其他文件,不允許再有單獨的文件。必須支持標準的四則運算。請在收到郵件的小時內獨立完成本測試,并回復本郵件。項目地址最終版的計算器,項目地址和預覽圖片在。并且使用單位來進行自動計算尺寸。 一道筆試題 之前偶然看到一個公司的筆試題,題目如下: 用HTML5、CSS3、JavaScript,做一個網頁,實現如下圖形式計算器 showImg(https://segmentfault....

    PiscesYE 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<