【发布时间】:2020-05-17 23:42:06
【问题描述】:
我想知道是否有更好的方法(更动态)使用 flexbox 将标题与下方的输入框左对齐。输入框需要与它们上方的标题内联显示。目前我不得不在标题和输入框周围包裹一个 div 并设置一个固定的像素宽度。有没有更好的方法来使用 flexbox 实现相同的结果?
我已经尝试在这个包装器上使用 inline-flex,但它仍然将它视为一个全宽元素,而不是像它的内容一样宽。我也试过在无序列表上设置 inline-flex ,结果完全一样。
我不想设置固定的像素宽度。下次如果我需要做同样的事情但使用不同的元素,我需要继续设置一个不理想的固定像素大小。
提前致谢
html {
font-size: 14px;
}
.section {
padding: 1.5rem;
}
.wrapper {
display: flex;
background: lightblue;
}
.warning-percentage-wrapper {
background: lightcoral;
flex: 0 0 30%;
}
.warning-percentage {
display: inline-flex;
margin-left: -1rem;
}
.warning-percentage li {
flex: 0 1 80px;
margin-left: 1rem;
}
.days-of-week-wrapper {
background: lightseagreen;
flex: 1;
display: flex;
justify-content: flex-end;
}
.inline-wrapper {
background: pink;
display: flex;
flex-direction: column;
flex: 0 1 644px;
}
.days-of-week {
display: inline-flex;
margin-left: -1rem;
}
.days-of-week li {
flex: 0 1 80px;
margin-left: 1rem;
}
<section class="section">
<div class="wrapper">
<div class="warning-percentage-wrapper">
<h5 class="title is-5">Warning Percentages</h5>
<ul class="warning-percentage">
<li>
<label class="label">Low</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Medium</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">High</label>
<input class="input" type="text" readonly>
</li>
</ul>
</div>
<div class="days-of-week-wrapper">
<div class="inline-wrapper">
<h5 class="title is-5">Days of Week</h5>
<ul class="days-of-week">
<li>
<label class="label">Monday</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Tuesday</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Wednesday</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Thursday</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Friday</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Saturday</label>
<input class="input" type="text" readonly>
</li>
<li>
<label class="label">Sunday</label>
<input class="input" type="text" readonly>
</li>
</ul>
</div>
</div>
</div>
</section>
【问题讨论】:
-
一旦你删除了列表元素的默认填充/边距,并删除了你设置的左边距,那么一切都会左对齐。 jsfiddle.net/kd5e7t1a
-
我忘了提到我正在使用 Bulma,它默认会删除边距和填充。问题似乎出在将 inline-flex 和 flex-basis 与像素值一起使用时。