當設置了父元素的寬度,子元素設置寬度爲100%後再在加上子元素上添加padding或margin值就會溢出。舉個例子:css
<!-- 示例 --> <!-- html --> <div class="parent"> <div class="child"></div> </div> <!-- css --> .parent { width: 500px; height: 50px; background-color: green; border: 1px solid #E74D4D; } .child { width: 100%; height: 30px; margin: 20px; background-color: pink; }
示例html
這是由於設置了width: 100%;
後已經將父元素佔滿,再添加margin
值就會溢出(默認溢出值爲左側的margin
值)css3
解決方法:瀏覽器
padding
<!-- 弊端是增長了parent佔用的寬度 --> .parent { width: 500px; height: 50px; padding: 20px; background-color: green; border: 1px solid #E74D4D; } .child { width: 100%; height: 30px; background-color: pink; }
box-sizing: border-box;
屬性解釋連接border
和padding
全會在你設置的寬度內部。.parent { width: 500px; height: 50px; padding:20px; background-color: green; border: 1px solid #E74D4D; box-sizing: border-box; } .child { width: 100%; height: 30px; background-color: pink; }
<div class="parent"> <div class="child2"> <!-- 設置margin: 20px; --> <div class="child"></div> </div> </div>
** end **spa
下面是彩蛋。。。.net
我在舉這個例子的時候發現了一個css hack(針對不一樣的瀏覽器/不一樣版本寫相應的CSS code的過程):父元素與子元素之間的margin-top問題。
html代碼ssr
<div class="box1"> <div class="box2"></div> </div>
css樣式code
.box1{height:200px;width:200px;background:gray;} .box2{height:100px;width:100px;background:gold;margin-top:50px;}
結果htm
示例blog
父元素的盒子包含一個子元素盒子,給子元素盒子一個垂直外邊距margin-top,父元素盒子也會往下走margin-top的值,而子元素和父元素的邊距則沒有發生變化。
解決方法:
ps:
https://www.cnblogs.com/bluey/p/6417922.html
https://www.cnblogs.com/Renyi-Fan/p/9006084.html