拥有一个
第一个元素忽略了标签的顶部边距,第二个元素由于使用了
inline
元素并将其与嵌套的含有flex
盒子的inline-flex
元素放在一起会影响垂直对齐(忽略了顶部边距)。我找到的解决方案是在inline-flex
元素中添加一个::before
,但我不太确定为什么这样可以解决问题。第一个元素忽略了标签的顶部边距,第二个元素由于使用了
::before
可以正常显示顶部边距。
label {
margin: 20px 5px 0 0;
}
.input-container {
display: inline-flex;
}
.with-before::before {
content: '';
}
.buttons {
display: flex;
flex-direction: column;
}
<div>
<label>Top margin ignored:</label>
<div class="input-container">
<div class="buttons">
<button><</button>
<button>></button>
</div>
<input type="text"/>
</div>
</div>
<br/>
<div>
<label>Top margin works:</label>
<div class="input-container with-before">
<div class="buttons">
<button><</button>
<button>></button>
</div>
<input type="text"/>
</div>
</div>
vertical-alignment: top
和display: inline-block
添加到标签中也可以使顶部边距生效,但仍不确定原因。https://codepen.io/GarthDB/pen/veBjvM - Garth Braithwaite