最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CSS設(shè)計(jì)之頁(yè)面滾動(dòng)條出現(xiàn)時(shí)防止頁(yè)面跳動(dòng)的方法

鑫空間,鑫生活   發(fā)布時(shí)間:2015-06-08 16:24:27   作者:張?chǎng)涡?  我要評(píng)論
這篇文章主要介紹了CSS設(shè)計(jì)之頁(yè)面滾動(dòng)條出現(xiàn)時(shí)防止頁(yè)面跳動(dòng)的方法,在使用overflow:auto之后這樣的跳動(dòng)情況是一個(gè)常見(jiàn)問(wèn)題,本文給出了相關(guān)處理方法,需要的朋友可以參考下

一、水平居中布局與滾動(dòng)條跳動(dòng)的千年難題

當(dāng)前web屆,絕大多數(shù)的頁(yè)面間布局都是水平居中布局,主體定個(gè)寬度,然后margin: 0 auto的節(jié)奏~

例如,大淘寶的首頁(yè):
201568160543236.png (172×77)

然而,這種布局有一個(gè)存在一個(gè)影響用戶體驗(yàn)的隱患。應(yīng)該都知道,現(xiàn)代瀏覽器滾動(dòng)條默認(rèn)是overflow:auto類(lèi)型的,也就是如果尺寸不足一屏,沒(méi)有滾動(dòng)條;超出,出現(xiàn)滾動(dòng)條。于是,問(wèn)題來(lái)了:

    信息流頁(yè)面,如新浪微博,是從上往下push渲染的。開(kāi)始只有頭部一些信息加載,此時(shí)頁(yè)面高度有限,沒(méi)有滾動(dòng)條;然后,更多內(nèi)容顯示,滾動(dòng)條出現(xiàn),占據(jù)可用寬度,margin: 0 auto主體元素自然會(huì)做偏移——跳動(dòng)產(chǎn)生。
    JS交互,本來(lái)默認(rèn)頁(yè)面高度不足一屏,結(jié)果點(diǎn)擊了個(gè)“加載更多”,內(nèi)容超過(guò)一屏,滾動(dòng)條出現(xiàn),頁(yè)面主體就會(huì)左側(cè)跳動(dòng)。
    結(jié)構(gòu)類(lèi)似幾個(gè)頁(yè)面通過(guò)頭部的水平導(dǎo)航刷新切換,結(jié)果有的頁(yè)面有滾動(dòng)條,有的沒(méi)有。造成的結(jié)果就是,導(dǎo)航尼瑪怎么跳來(lái)跳去!

當(dāng)前優(yōu)化這種體驗(yàn)問(wèn)題,一般有兩種解決方法:

    高度尺寸不確定的,例如,新浪微博,使用:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. body { overflow-y: scroll; }  

201568160616938.png (364×111)

高度確定的,例如淘寶網(wǎng)首頁(yè)。使用CSS把頁(yè)面尺寸布局骨架搭好,再在里面吐數(shù)據(jù)。于是,要么沒(méi)有滾動(dòng)條,要么滾動(dòng)條直接出現(xiàn)。不會(huì)出現(xiàn)跳動(dòng)。
然而,然而,后面的策略只適合一些特殊的定制性很強(qiáng)的頁(yè)面。你說(shuō)像知乎這樣子,高度隨內(nèi)容而定的頁(yè)面,顯然就無(wú)法駕馭;而第1種方法overflow-y: scroll,在頁(yè)面高度較小的時(shí)候,依然會(huì)保留一個(gè)丑陋的灰色的滾動(dòng)欄,這其實(shí)又回到了IE當(dāng)?shù)赖呐f社會(huì)時(shí)代?,F(xiàn)代瀏覽器做的那些默認(rèn)視覺(jué)優(yōu)化豈不是白費(fèi)了,想想就好痛心。
二、CSS3計(jì)算calc和vw單位巧妙實(shí)現(xiàn)滾動(dòng)條出現(xiàn)頁(yè)面不跳動(dòng)

很簡(jiǎn)單,只要一行代碼就搞定了:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. .wrap-outer {   
  2.     margin-left: calc(100vw - 100%);   
  3. }  

或者:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. .wrap-outer {   
  2.     padding-left: calc(100vw - 100%);   
  3. }  

然后就可以慶祝放鞭炮啦??!

首先,.wrap-outer指的是居中定寬主體的父級(jí),如果沒(méi)有,創(chuàng)建一個(gè)(使用主體也是可以實(shí)現(xiàn)類(lèi)似效果,不過(guò)本著寬度分離原則,不推薦);
然后,calc是CSS3中的計(jì)算,IE10+瀏覽器支持,IE9瀏覽器基本支持(不能用在background-position上);
最后,100vw相對(duì)于瀏覽器的window.innerWidth,是瀏覽器的內(nèi)部寬度,注意,滾動(dòng)條寬度也計(jì)算在內(nèi)!而100%是可用寬度,是不含滾動(dòng)條的寬度。
于是,calc(100vw - 100%)就是瀏覽器滾動(dòng)條的寬度大小(如果有,如果沒(méi)有滾動(dòng)條則是0)!左右都有一個(gè)滾動(dòng)條寬度(或都是0)被占用,主體內(nèi)容就可以永遠(yuǎn)居中瀏覽器啦,從而沒(méi)有任何跳動(dòng)!

您可以狠狠地點(diǎn)擊這里(IE10+):頁(yè)面出現(xiàn)滾動(dòng)條的時(shí)候沒(méi)有跳動(dòng)demo

demo頁(yè)面中,標(biāo)題和下面的妹子都是居中效果。其中,妹子做了本文所述的“滾動(dòng)無(wú)跳動(dòng)”處理,而標(biāo)題沒(méi)有,結(jié)果,你會(huì)發(fā)現(xiàn),滾動(dòng)條出現(xiàn)與否會(huì)讓標(biāo)題文字跳動(dòng),但是,妹子卻女神般巋然不動(dòng):
201568160638751.png (535×392)

兼容性
支持:IE9+以及其他現(xiàn)代瀏覽器。

窄屏幕寬度下的處理
上面CSS還是有一點(diǎn)瑕疵的,瀏覽器寬度比較小的時(shí)候,左側(cè)留的白明顯與右邊多,說(shuō)不定會(huì)顯得有點(diǎn)傻。此時(shí),可能需要做點(diǎn)響應(yīng)式處理會(huì)更好一點(diǎn):

CSS Code復(fù)制內(nèi)容到剪貼板
  1. @media screen and (min-width1150px) {   
  2.    .wrap-outer {   
  3.        margin-left: calc(100vw - 100%);   
  4.    }   
  5. }  


相關(guān)文章

最新評(píng)論

武陟县| 葵青区| 贺兰县| 安泽县| 乐清市| 文昌市| 惠水县| 和田县| 松潘县| 阜康市| 镇巴县| 深水埗区| 崇义县| 大兴区| 绥芬河市| 政和县| 灌云县| 沙河市| 普格县| 普兰店市| 明星| 罗甸县| 齐齐哈尔市| 大方县| 嫩江县| 雷波县| 阜城县| 潜江市| 灵璧县| 余庆县| 樟树市| 房山区| 新宁县| 淳化县| 广丰县| 余庆县| 汽车| 湘潭县| 滦南县| 扬州市| 年辖:市辖区|