对于以下 DOM,只有 child3 应该具有 100% 宽度,忽略/覆盖父容器的填充,其余子元素应该具有 100% 宽度,同时也尊重填充
<div class="container">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
<div class="child4"></div>
<div class="child5"></div>
<div class="child6"></div>
</div>
容器 CSS 的约束
.container {
width: 300px;
padding: 40px;
}
实施同样的最佳方法是什么? 实现这一目标的一种方法是:
.child3 {
width: 300px;
margin-left: -40px; /*to offset parent container's padding*/
}
这是我的代码的作用:
.container {
width: 300px;
padding: 40px;
}
.child3 {
width: 300px;
margin-left: -40px; /*to offset parent container's padding*/
}
<div class="container">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
<div class="child4"></div>
<div class="child5"></div>
<div class="child6"></div>
</div>
--padding
变量。要更改变量的值,只需在 :root
中更改即可。total possible length when not parent padding is ignored + twice the padding(becuase padding acts on both side) - 1px(which is border)
-padding
代码片段:
:root {
--padding: 40px;
}
.container {
width: 300px;
padding: var(--padding);
height: 100px;
border: 1px solid black;
}
.child3 {
width: calc(100% + (2*var(--padding)) - 1px);
margin-left: calc(0px - var(--padding)); /*to offset parent container's padding*/
}
.container *{
border: 1px solid red;
height:5px;
}
<div class="container">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
<div class="child4"></div>
<div class="child5"></div>
<div class="child6"></div>
</div>
另一种方法是这样写(当我看到布局时)...... 如果我错了,请原谅,因为我删除了填充并为 div 添加了边距,并与您添加到帖子中的图像相匹配。
看看@Roko C. Buljan 的时刻
我不知道您是否想这样做,所以请告诉我它是否适合您,或者我是否必须删除我的答案。
AMO 似乎不那么棘手。
*{
box-sizing: border-box;
}
.container {
width: 300px;
padding-top: 40px;
padding-bottom: 40px;
border:1px solid #000000;
}
.container div{
margin-left: 40px;
margin-right: 40px;
margin-bottom: 10px;
height:20px;
border:1px solid #000000;
}
.container .child3 {
width: 100%;
margin-left:auto;
margin-right:auto;
border:1px solid #ff0000;
}
.container .child6 {
margin-bottom: 0px;
}
<div class="container">
<div class="child1">My content 1</div>
<div class="child2">My content 2</div>
<div class="child3">My content 3</div>
<div class="child4">My content 4</div>
<div class="child5">My content 5</div>
<div class="child6">My content 6 (last div)</div>
</div>