【发布时间】:2019-11-23 01:17:14
【问题描述】:
我正在尝试将两个子元素嵌套在一个包装器中,该包装器指定侧边距,以便在显示窄时其内容和屏幕两侧之间有空间,而当显示宽时使用max-width。
第二个孩子有一些溢出应该是可见的,而第一个孩子应该严格留在包装器的内容框中。删除第一个孩子后,第二个孩子的行为符合预期。但是,当我添加第一个孩子时,它似乎完全忽略了包装器的边距,拉伸了包装器的内容框并打破了第二个孩子。
将overflow: hidden 应用于包装器可以解决边距问题,但会剪切第二个孩子。将边距应用到第一个子级并不会使其与父级一起折叠,因为它位于新的块格式化上下文中。
到目前为止,我发现的唯一解决方法是:
.wrapper {
> * {
margin-left: 1.5rem;
margin-right: 1.5rem;
}
}
并将包装器的最大宽度增加 3rem,但我希望有一些解决方案不需要我将边距从包装器转移到其子级。
https://codepen.io/HybridCore/pen/jjoWmd
body {
background-color: #000;
color: #FFF;
display: flex;
justify-content: center;
}
.wrapper {
margin: 0 1.5rem;
max-width: 40rem;
width: 100%;
}
.fit_content_box {
display: flex;
align-items: center;
}
.L {
min-width: 0;
flex: 1 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.R {
margin-left: 1rem;
height: 1rem;
width: 1rem;
background-color: #FFF;
}
.overflow {
display: flex;
justify-content: space-between;
}
.overflow>div {
width: 0;
display: flex;
justify-content: center;
}
<body>
<div class="wrapper">
<div class="fit_content_box">
<p class="L">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<div class="R"></div>
</div>
<div class="overflow">
<div>
<p>0</p>
</div>
<div>
<p>12</p>
</div>
<div>
<p>24</p>
</div>
</div>
</div>
</body>
【问题讨论】:
-
@Michael_B,为什么要设置导致问题的
width: 0? codepen.io/tarunlalwani/pen/voNGNw -
@TarunLalwani,这并不能解决问题。请参阅以下 Temani Afif 的答案。