css深入理解padding


padding 中規中矩,性格溫婉平和!

         第一節:CSS padding與容器的尺寸——了解padding與元素尺寸之間關系

          CSS padding與容器的尺寸關系復雜

            對於block水平元素 沒有padding的時候 .gay{width:50cm;} padding影響元素尺寸      (理解為人身體的脂肪,人和人之間的距離).gay{width:20cm;padding:0 12px;}

            但是width:auto或box-sizing為border-box的時候 .gay{width:80cm;box-sizing:border-box;padding:0 15px;}

            .text{width:8cm;box-sizing:border-box;padding:0 1.5cm;}這個時候padding不會影響元素尺寸,但是當padding大小超過寬高的時候,.text{width:8cm;box-sizing:border-box;padding:0 8cm; }這時候元素按內聯元素最小寬度顯示,此時padding同樣影響了元素的尺寸。

            結論:對於block水平元素

            1.padding值暴走,一定會影響尺寸;

            2.width:auto,padding影響尺寸;

            3.width為auto或box-sizing為border-box,同時padding值沒有暴走,不影響尺寸。

          對於inline水平元素

              水平padding影響尺寸,垂直padding不影響尺寸 .leader{padding:50px},但是會影響背景色(占據空間)。大到比父元素還大的時候,設置overflow:auto會出現滾動條

 

           如何利用這一特性

                   高度可控的分割線

                   1.直接使用字符:注冊|退出登錄

                   2.inline-block控制:注冊|退出登錄

                   3.使用inline padding:注冊|退出登錄

                   注冊<span></span>退出登錄

                   span{padding:16px 6px 1px;margin-left:12px;border-left:2px solid font-size:0;}

         第二節:css padding負值和百分比值——了解padding特殊值的特殊表現

 

             1.關於padding的負值,padding不支持任何形式的負值。

             2.關於百分比均是相對與寬度計算的。

               如何實現這一特性,輕松實現一個正方形 div:padding:50%(相對百分比計算)

 

               真實案例

               <div class="container">

                   <div class="example">

                     <h2>你的指尖</h2>

                     <h4>慕課網</h4>

                   </div>

               </div>

               .container{padding:50%;background:url(exp.jpg);background-size:100%;position:relative;}  .example{position:absolute;top:0;right:0;bottom:0;left:0;}實現一個正方形的響應式布局。

             3.inline水平元素的padding百分比值

               1.同樣相對於寬度計算

               2.默認的高度寬度細節有差異

               3.padding會斷行

 

               inline元素的padding斷行

               span{padding:50%;}

               <span syle="padding:50%;">內有文字若干</span>

               如果是空的inline元素,高度還是要比寬度高

                   設置fon-size:0px;得到一個正方形。

                   為何會有額外的高度 

                   inline元素的的那個會讓“幽靈空白節點”顯現,也就是規范中的strut出現。content-area,可以通過font-size:0px;讓他不顯示。

         第三節:標簽元素的內置padding-這里有一些你可能不知道的小秘密

                   1.ol/ul列表

                            1.1 ol/li元素內置padding-left,但是單位是px不是em;

                            1.2 例如chrome瀏覽器下是40px;

                            1.3 如果字號很小,間距就會很開;

                            1.4 如果字號很大,序號回爬到容器外面

                            margin等一般em的。

                   2.表單元素的內置padding值

                            所有的瀏覽器input/textarea輸入框內置padding

                            所有瀏覽器button按鈕內置padding

                            部分瀏覽器select下拉內置padding,如firefox ie8+可以設置padding

                            所有瀏覽器radio/checkbox單選框無內置padding

                            button按鈕元素的按鈕是最難控制的。

                              1.chrome瀏覽器是沒有問題的。

                              2.firefox瀏覽器  設置padding:0左右依然有padding! 需要設置button::-moz-focus-inner{padding:0;}padding才為0

                              3.IE瀏覽器 ie7文字越多,左右padding逐漸變寬。設置overflow:hidden以后就正常了。

                              4.padding與高度計算的不兼容

                                     button{

                                               line-height:20px;

                                              padding:10px;

                                               border:none;

                                     }

                                     IE7   45px;

                                     IE8   40px;

                                     FireFox 42px;

                                     Chrome:  40px;

                            button表單按鈕padding

                            <button id="btn"></button>

                            <label for="btn">按鈕</label>

                            label{display:inline-block;inline-height:20px;padding:10px;}

                            讓button可見性隱藏。

第四節:padding與圖形繪制——利用padding來繪制圖形

         實現3道杠——不借助偽元素,只用一個div

                   實現示意

                   <div class="line-tri"></div>

                   .line-tri{

                       width:150px;height:30px;

                       padding:15px 0;

                       border-top:30px solid;

                       border-bottom:30px solid;

                       background-color:currentcolor;

                       background-clip:content-box;

                   }

                   實現一個點

                   <div class="eye"></div>

                   .eye{

                            width:150px;

                            height:150px;

                            padding:10px;

                            border:10px solid;

                            border-radius:50%;

                            background-color:currentcolor;

                            background-clip:content-box;

                   }

 

         第五節:padding布局實戰----padding在布局這塊比較好的應用

                   1.使用百分比單位構建比較固定比例布局結構

                     移動端1:1頭圖布局

                            div{padding:50%;}

                   2.配合margin實現等高布局。

                    .box{overflow:hidden;resize:vertical;}

                    .child-orange,.child-green{

                            margin-buttom:-600px;

                            padding-bottom:600px;

 

                    }

                    .child-orange{

                            float:left;

                            background:orange;

                    }

                    .child-green{

                            float:left;

                            background:green;

                    }

                   3.padding實現兩欄自適應布局

                     <div class="pbox">

                       <img src="mm.jpg" />

                       <div class="auto">

                            本例子實現。。。。

                       </div>

                     </div>

                     img{float:left;}

                     .auto{

                       padding-left:120px;

                     }


免責聲明!

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



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