box-sizing:border-box的作用


  其實一直沒仔細研究過CSS3新增的這個屬性box-sizing,只是經常會看到其它網頁和公司項目里面有用到這個屬性,然后就百度找到了一篇不錯的介紹

  https://www.jianshu.com/p/e2eb0d8c9de6

 

   要想清楚這個屬性的作用,首先要理解盒子模型

  盒子模型是指:外邊距(margin)+ border(邊框) + 內邊距(padding)+ content(內容)

  可以把每一個容器,比如div,都看做是一個盒子模型

  比如你給一個div設置寬高為500px,但實際你設置的只是content,之后你又設置了padding:10px;border:1px solid red;

  這時div的寬高就會變為544px(content 500px + padding 40px + border 4px)

  相當於一個元素的實際寬高是由: padding + border + content  組成

 

 

  ①:沒有設置box-sizing:border-box屬性,寬高會加上padding和border的值,需要我們手動去計算,

    減去padding和border的值,並調整content的值,以免超過給定的寬高

    比如下圖,我給父元素parent設置寬高為500px,背景色為黑色;然后給子元素設置寬高為478px,並設置內邊距10px,紅色邊框1px,背景顏色為灰色

    此時子元素的寬高為500px(content 478px + padding 40px + border 4px)所以就覆蓋了父元素的黑色背景,只能看到子元素的灰色背景

   

 

 

  :加了box-sizing:border-box屬性,padding和border的值就不會在影響元素的寬高,相當於把padding和border的值都算在content里

    盒子模型會自動根據padding和border的值來調整content的值,就不需要手動調整

 

  上面的示例①是標准盒子模型,一般瀏覽器也都默認為標准盒子模型。即:box-sizing:content-box

  上面的示例②是怪異盒子模型,一般根據實際項目需要自行設置。即:box-sizing:border-box

 

  測試代碼(上面可能說的不太清楚,下面的示例代碼實驗一下你就懂了)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style> .parent { position: relative; margin: 0 auto; width: 500px; height: 500px; background-color: #000;
            } .son { box-sizing: border-box; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; padding: 10px; width: 478px; height: 478px; border: 1px solid red; background-color: #ccc;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="son">
            </div>
        </div>
    </body>
</html>

 


免責聲明!

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



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