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

資訊專欄INFORMATION COLUMN

水平居中布局與滾動條跳動的千年難題

songjz / 2051人閱讀

摘要:于是,問題來了,信息流頁面,如新浪微博,是從上往下渲染的。,結構類似幾個頁面通過頭部的水平導航刷新切換,結果有的頁面有滾動條,有的沒有。

絕大多數的頁面間布局都是水平居中布局,主體定個寬度,
然后margin: 0 auto的節奏~例如,婦女之友大淘寶的首頁:

.warp{
    width:1190px;
    margin:0 auto;
    position:relative;
}

然而,這種布局有一個存在一個影響用戶體驗的隱患。應該都知道,現代瀏覽器滾動條默認是overflow:auto類型的,也就是如果尺寸不足一屏,沒有滾動條;超出,出現滾動條。于是,問題來了:

1,信息流頁面,如新浪微博,是從上往下push渲染的。開始只有頭部一些信息加載,此時頁面高度有限,沒有滾動條;然后,更多內容顯示,滾動條出現,占據可用寬度,margin: 0 auto主體元素自然會做偏移——跳動產生。
2,JS交互,本來默認頁面高度不足一屏,結果點擊了個“加載更多”,內容超過一屏,滾動條出現,頁面主體就會左側跳動。
3,結構類似幾個頁面通過頭部的水平導航刷新切換,結果有的頁面有滾動條,有的沒有。造成的結果就是,導航尼瑪怎么跳來跳去!

當前優化這種體驗問題,一般有兩種解決方法:

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

body { overflow-y: scroll; }

高度確定的,例如淘寶網首頁。使用CSS把頁面尺寸布局骨架搭好,再在里面吐數據。于是,要么沒有滾動條,要么滾動條直接出現。不會出現跳動。

然而,然而,后面的策略只適合一些特殊的定制性很強的頁面。你說像知乎這樣子,高度隨內容而定的頁面,顯然就無法駕馭;而第1種方法overflow-y: scroll,在頁面高度較小的時候,依然會保留一個丑陋的灰色的滾動欄,這其實又回到了IE當道的舊社會時代。現代瀏覽器做的那些默認視覺優化豈不是白費了,想想就好痛心。

大師,難道就沒有一了百了、兩全其美、三生有幸的方法了嗎?
阿彌陀佛,騷年,請看我手中的這盞燈……

CSS3計算calc和vw單位巧妙實現滾動條出現頁面不跳動
很簡單,只要一行代碼就搞定了:

.wrap-outer {
    margin-left: calc(100vw - 100%);
}

或者:

.wrap-outer {
    padding-left: calc(100vw - 100%);
}

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

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

您可以狠狠地點擊這里(IE10+):頁面出現滾動條的時候沒有跳動demo

demo頁面中,標題和下面的妹子都是居中效果。其中,妹子做了本文所述的“滾動無跳動”處理,而標題沒有,結果,你會發現,滾動條出現與否會讓標題文字跳動,但是,妹子卻女神般巋然不動:

兼容性
支持:IE9+以及其他現代瀏覽器。

窄屏幕寬度下的處理
上面CSS還是有一點瑕疵的,瀏覽器寬度比較小的時候,左側留的白明顯與右邊多,說不定會顯得有點傻。此時,可能需要做點響應式處理會更好一點:

@media screen and (min-width: 1150px) {
   .wrap-outer {
       margin-left: calc(100vw - 100%);
   }
}

更新于2016年9月28日
經過一些列項目實踐,關于瀏覽器出現滾動條和消失頁面不滾動有了更加終極的解決方案,經過大型項目實踐已經驗證相當具有可行性,這里特意分享下:

html {
  overflow-y: scroll;
}

:root {
  overflow-y: auto;
  overflow-x: hidden;
}

:root body {
  position: absolute;
}

body {
  width: 100vw;
  overflow: hidden;
}

難道,你就不想點個贊再走。
吃了我的辣條,你還想跑,站住,別跑!
文章出處請點點點

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

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

相關文章

  • 水平居中布局滾動跳動千年難題

    摘要:于是,問題來了,信息流頁面,如新浪微博,是從上往下渲染的。,結構類似幾個頁面通過頭部的水平導航刷新切換,結果有的頁面有滾動條,有的沒有。 絕大多數的頁面間布局都是水平居中布局,主體定個寬度,然后margin: 0 auto的節奏~例如,婦女之友大淘寶的首頁: .warp{ width:1190px; margin:0 auto; position:relativ...

    techstay 評論0 收藏0
  • 水平居中布局滾動跳動千年難題

    摘要:于是,問題來了,信息流頁面,如新浪微博,是從上往下渲染的。,結構類似幾個頁面通過頭部的水平導航刷新切換,結果有的頁面有滾動條,有的沒有。 絕大多數的頁面間布局都是水平居中布局,主體定個寬度,然后margin: 0 auto的節奏~例如,婦女之友大淘寶的首頁: .warp{ width:1190px; margin:0 auto; position:relativ...

    mo0n1andin 評論0 收藏0
  • 水平居中布局滾動跳動千年難題

    摘要:于是,問題來了,信息流頁面,如新浪微博,是從上往下渲染的。,結構類似幾個頁面通過頭部的水平導航刷新切換,結果有的頁面有滾動條,有的沒有。 絕大多數的頁面間布局都是水平居中布局,主體定個寬度,然后margin: 0 auto的節奏~例如,婦女之友大淘寶的首頁: .warp{ width:1190px; margin:0 auto; position:relativ...

    mist14 評論0 收藏0
  • 可視化效果(Visual effects)

    摘要:一般地,一個塊盒的內容都被限制在該盒的邊內。這種盒并不一定會根據其祖先的屬性裁剪。默認情況下,元素不會被裁剪。在閉合路徑內的內容會顯示,而路徑外邊的都會被剪掉著作權歸作者所有。 Overflow and clipping 一般地,一個塊盒的內容都被限制在該盒的content邊內。某些情況下,一個盒可能會溢出,意味著它的部分內容或者全部內容位于該盒外部,例如: 一行無法拆分,導致行盒比...

    JowayYoung 評論0 收藏0

發表評論

0條評論

songjz

|高級講師

TA的文章

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