css深入理解之overflow


第一回 overflow基本屬性

         overflow基本屬性

                   visibel

                   hidden

                   scroll

                   auto

                   inherit

         overflow-x和overflow-y

         overflow-x和overflow-y設置一樣的值,等同於overflow。如果不同,其中一個賦予visibel,auto,另一個賦值visibel,auto ,hidden。則會被重置為auto。

 

         作用的前提

                   1.非display:inline水平!

                   2.對應方位的尺寸限制,width/height/max-width/max-height/absolute拉伸

 

         overflow:visibel妙用

                   IE7瀏覽器下,文字越多,按鈕兩側padding留白就越大。給所有按鈕添加css樣式 overflow:visible

第二回:overflow與滾動條

         滾動條出現的條件

                   1.overflow:auto/overflow:scroll 有些元素自帶滾動條 <html> <textarea>

                  

         body/html與滾動條

                   無論什么瀏覽器,默認滾動條均來自html!而不是body標簽

                   ie8+ html{overflow:auto}

                  

         所以,如果我們想要去除頁面默認滾動條,只需要:html{overflow:hidden}

         body/html與滾動條-js與滾動高度

         兼容寫法

                   var st = document.body.scrollTop || document.documentElement.scrollTop

 

         overflow的padding-bottom缺失現象

                   .box{width:400px;height:100px;padding:100px 0; overfow:auto;}在chrome瀏覽器下bottom是可以滾動出來的。

         滾動條的寬度

                   盒子寬度(帶滾動條)-盒子內寬度 = 滾動條寬度

                   IE firefox chrome均是17像素。

         水平居中跳動問題

                   修復方法 1.html{overflow-y:scroll;}

                             2. .container{padding-left:calc(100vw-100%);}

                             100vw - 瀏覽器寬度;100%-可用內容寬度

         自定義滾動條-webkit

                   整體部分

                            ::-webkit-scrollbar

                   兩端按鈕

                            ::-webkit-scrollbar-button

                   外層軌道

                            ::-webkit-scrollbar-track

                   內層軌道

                            ::-webkit-scrollbar-track-piece

                   滾動滑塊

                            ::-webkit-scrollbar-thumb

                   邊角

                            ::-webkit-scrollbar-corner

                   實際常用

                            ::-webkit-scrollbar{//寬度

                                     width:8px; height:8px;

                            }

                            ::-webkit-scrollbar-thumb{//拖動條

                                     background-color:rgba(0,0,0,.3);

                                     border-radius : 6px;

                            }

                            ::-webkit-scrollbar-track{//背景槽

                                     background-color:#ddd;

                                     border-radius:6px;

                            }

                   自定義滾動條-IE

                   可以使用自定義滾動插件

 

                   IOS原生滾動回調效果

                            -webkit-overflow-scrolling:touch;

第三回:overflow與BFC

         清除浮動,自適應布局等。

 

         BFC block formatting context 塊級格式化上下文

                   頁面之結界,內部元素在怎么折騰都影響不到外面。

 

                   overflow與BFC

                            1.清除浮動影響

                            2.避免margin穿透問題

                            3.兩欄自適應布局

                   內部浮動無影響

                            .clearfix{*zoom:1;}

                            .clearfix:after{centent:'';display:table;clear:both;}

                   避免margin穿透問題

                            設置overflow:scroll

                                overflow:auto

                                overflow:hidden

                   為什么有這樣特性?

                            流體特性下自適應布局

                                     1.左浮動,右普通

                                               .left{float:left;width:128px;}

                                               .right{min-height:190px;background-color:#beceeb}

                                     2.左浮動,右margin

                                               .left{float:left;width:128px;}

                                               .right{min-height:190px;margin-left:150px;background-color:#beceeb}

                                     3.左浮動,右padding

                                               .left{float:left;width:128px;}

                                               .right{min-height:190px;padding-left:150px;background-color:#beceeb}

                                     4.左浮動

                                               .left{float:left;width:128px;}

                                               .right{min-height:190px;overflow:hidden;background-color:#beceeb}

                   給div設置了overflow屬性就是將元素BFC化,使用padding做流體自適應布局時候,萬萬不可讓自適應層BFC化。

 

                   是不是所有BFC屬性都有如此表現

                            yes.由於自身特性,具體表現不一

                            overflow:hidden;      自適應,單溢出不可見 限制應用場景

                            float + float 包裹性+破壞性 無法自適應,塊狀浮動布局

                            position:absolute 脫離文檔流,自娛自樂

                            display:inline-block 包裹性,無法自適應

                            display:table-cell 包裹性,但天生無溢出特性,絕對寬度也能自適應。

                            只有overflow:hidden,display:inline-block,display:table-cell能使元素BFC化

 

                   兩欄自適應布局

                            .cell{

                                     display:table-cell; width:2000px; //2000保證比父元素大

                                     *display:inline-block;*width:auto; //IE7-偽BFC特性

                            }

第四回:overflow與絕對定位

         隱藏失效與滾動固定

         overflow:hidden失效

                   .overflow-hidden{

                            width:300px;

                            height:200px;

                            border:5px solid #333;

                            overflow:auto

                   }

                   img{postion:absolute;}

         失效原因

                   絕對定位元素不總被父級overflow屬性剪裁,尤其當overflow在絕對定位元素及其包含塊之間的時候

                   包含塊指 “含position:relative/absolute/fixed”聲明的父級元素,沒有則body元素

         如何避免失效

                   1.overflow元素自身成為包含塊

                   2.overflow元素的子元素成為包含塊

                   3.任意合法transform聲明當作包含塊

         overflow失效妙用

                   h0{height:0;}

                   .ovh{overflow:hidden;}

                   .tr{text-align:right;}

                   .abs{position:absolute;}

                   <div class="h0 ovh tr">

                            &nbsp;<img src="" class="abs ml10 mt30"></img>

                   </div>

第五回:依賴overflow的樣式表現

         resize拉伸

                   css3有個屬性名為resize,可以拉伸元素尺寸。

                   .resize:both     水平垂直兩邊拉;

                   .resize:horizontal 只有水平方向拉伸

                   .resize:vertical   只有垂直方向拉伸

                   但是,此聲明想要其作用,元素的overflow屬性值不能是visible!

                   <button style="resize:both;overflow:hidden">按鈕</button>

                   這樣一個按鈕就可以實現拉伸效果了。

                  

                   文本域自帶resize屬性,因為文本域默認overflow:auto

                   文本域resize拖拽漁區大小是17*17像素。 也就是滾動條的尺寸

                  

         ellipsis文字溢出點點點省略

                   text-overflow:ellipsis

                   <button style="width:200px;white-space:norwrap;text-overflow:ellipsis;overflow:hidden">這是一個按鈕,寬度僅200像素</button>

第六回:overflow與錨點技術

         錨點定位的本質:該變容器的滾動高度

 

         錨點對位的觸發

                   1.url地址中的錨鏈與錨點元素;

                   2.可focus的錨點元素處於focus態;

         錨點定位的作用

                   1.快速定位

                   2.錨點定位與overflow選項卡技術

 

         應用場景:單頁應用     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM