查看codepen中的问题:https://codepen.io/pencillrpal/pen/QWLOLGv
我有一个flex容器,其中将有一个水平滑块,其元素的长度与整个页面的宽度一样长。
但是我意识到我无法控制子元素的宽度,因为它们将始终具有使它们适合容器的宽度,并且不会延伸到容器之外。
我发现了一个窍门。如果我将我的孩子的div一张一张地包裹起来,它将按我的意愿工作。
为什么这种方式起作用?
.container {
display: flex;
flex-direction: row;
justify-content: center;
height: 40vh;
max-width: 100%;
overflow-x: hidden;
border: 5px solid black;
margin: 0 auto;
}
.box {
position: relative;
width: 90vw;
margin: 10px;
line-height: 10vh;
text-align: center;
background: black;
color: white;
border: 5px solid red;
}
<h1>Box should have 100vw width</h1>
<div class="container">
<div class="box">
<h3>Box</h3>
</div>
<div class="box">
<h3>Box</h3>
</div>
<div class="box">
<h3>Box</h3>
</div>
</div>
<h1>This one has though</h1>
<div class="container">
<div>
<div class="box">
<h3>Box</h3>
</div>
</div>
<div>
<div class="box">
<h3>Box</h3>
</div>
</div>
<div>
<div class="box">
<h3>Box</h3>
</div>
</div>
</div>
答案 0 :(得分:2)
您可以控制flex子级的宽度。所有flex子代都有默认的flex
值来控制flex-grow
和flex-shrink
属性。禁用这些属性,即可控制宽度。
将这些行添加到CSS。
/**
* Disable flex grow and shrink so that it no longer tries to divide the
* space between the .box elements.
*
* Use flex-basis or width to control the width of the element.
*/
.box {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 90vw;
width: 90vw;
}