overflow基本屬性
overflow屬性介紹
overflow: visible(預設)|hidden|scroll|auto|inherit
當overflow-x 與 overflow-y值相同時,等同於overflow
當overflow-x 與 overflow-y值不相同時,其中一個值被賦予hidden|auto|scroll時,若另一個值為visible,
那這個visvible會被重置為auto
https://codepen.io/curlywater…
overflow作用前提
元素非 display: inline
對應方位的尺寸限制: width/height/max-width/max-height/absolute拉伸
對於單元格等, 需要 table 為 table-layout: fixed 狀態才可以
overflow與滾動條
-
頁面預設滾動條來自html(與body無關),因此若要去除預設滾動條,只需要
html { overflow: hidden; }
-
獲取滾動高度
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; /* chrome瀏覽器:document.body.scrollTop */ /* 其他瀏覽器:document.documentElement.scrollTop*/
- 內部padding-bottom缺失
除Chrome之外的其他瀏覽器會有padding-bottom缺失效果,將導致scrollHeight值不一致
-
滾動條寬度機制
- 滾動條會佔用容器的可用寬度|高度
- 計算滾動條寬度:containerWidth – boxWidth
- 因寬度佔用,overflow: auto可能會造成容器內部區域性混亂,因此容器內部需使用自適應佈局
-
水平居中跳動問題,容器定寬居中時,當視口高度變化導致滾動條出現將導致容器跳動。
解決方法:
- 針對IE9以下瀏覽器,強制設定html滾動
- 其他瀏覽器,利用calc函式計算滾動條寬度(瀏覽器寬度 – 可用內容區寬度),通過padding把寬度補給容器 – 效果演示
-
自定義滾動條
- webkit自定義滾動條,詳細解讀
-
自定義滾動條外掛
- malihu-custom-scrollbar-plugin – 支援IE8+,擴充套件性極佳
- antiscroll – cross-browser native OS X Lion scrollbars
-
iOS原生滾動回撥
-webkit-overflow-scrolling: touch;
overflow與BFC
overflow: visible不會產生BFC
overflow: hidden|scroll|auto 產生BFC,但是具有溢位不可見的副作用
overflow與絕對定位
overflow失效:絕對定位元素不總是被overflow元素剪裁/隨滾動條滾動,尤其當overflow元素處於絕對定位元素和其包含塊中間時
避免失效的方法:
- overflow元素自身為包含塊
- overflow元素的子元素為包含塊
- overflow元素的子元素有transform宣告
依賴overflow的樣式表現
- 在overflow為visible時,resize屬性將會失效
-
text-overflow: ellipsis
以overflow: hidden
為前提
overflow與錨點技術
錨點技術的實質時容器改變滾動高度