css的padding和border問題


第一步:先跟據需求定義一個div,要求width為300px,height為300px;

第二步:給該div添加一個邊框,要求實線,寬度10px,粉色;

 

第三步:給該div再設置20px的內邊距;

 

我們發現這個div隨着border和padding的設置一直在變大。此時div的占位寬度為:width+padding+border=300+20*2+10*2=360px。

但是我想設置border和padding之后,div還保持width=300px、height=300px,這怎么辦呢?

第一種解決方式:

事先算好div的width和height。比如上面的例子,我想保證div這個盒子模型的寬度和高度為300px,那么就得設置div的寬度的初始值為

width=300-border-padding=300-20-40=240px。高度height同理也是240px。

第二種解決方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div{
            width:300px;
            height: 300px;
            background: #CCC;
            border: 10px solid pink;
            padding: 20px;
            box-sizing: border-box;  /*靈魂代碼*/

        }
    </style>
</head>
<body>
   <div>css</div>
</body>
</html>    
box-sizing: border-box; 有了這句靈魂代碼之后問題就解決了。它會自動做減法運算保證整個div的width和height為300px。
最終的樣式為:


總結:
在盒子模型中,當盒子的width和height保持不變時,設置盒子的border和padding,此時盒子真實尺寸為:寬度=width+border+padding;
高度=height+border+padding。但是這不是我們想要的結果,我們想設置border和padding時盒子的寬度和高度還是原始值,此時只能通過減少
width和height的像素來實現,box-sizing:border-box;就為我們自動做了減法運算,解決了該問題。

 


免責聲明!

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



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