我希望有一个2em高的复选框,2em宽,旁边有一些括号中的小文本:(check box to agree to these terms)
xxxxxxxxxxx
xxxxxxxxx∎x
xxxxxxx∎xxx
xxxxxx∎xxxx (check box to agree to these terms)
x∎xx∎xxxxxx
xxx∎xxxxxxx
#container {
height: 3em
}
input {
height: 2em;
width: 2em
}
.legal {
vertical-align: middle
}
<div id="container">
<input type="checkbox">
<div class="legal">(check box to agree to these terms)</div>
<div>
我没有成功通过将文本封装在容器div中,设置其高度以及在文本上使用vertical-align: middle
来使文本垂直移动。
有很多方法可以做到 - 请参阅下面的一些方法:
解决方案1:内联块
将inline-block
用于input
和legal
元素,并将它们垂直对齐到中间:
#container {
height: 3em
}
input {
height: 2em;
width: 2em;
display: inline-block;
vertical-align: middle;
}
.legal {
display: inline-block;
vertical-align: middle;
}
<div id="container">
<input type="checkbox">
<div class="legal">(check box to agree to these terms)</div>
<div>
解决方案2:表格显示
使用table
作为容器,使用table-cell
作为input
和legal
元素:
#container {
height: 3em;
display: table;
}
input {
height: 2em;
width: 2em;
display: table-cell;
vertical-align: middle;
}
.legal {
display: table-cell;
}
<div id="container">
<input type="checkbox">
<div class="legal">(check box to agree to these terms)</div>
<div>
解决方案3:Flexbox
只需使用flex
作为容器,并使用align-items: center
垂直居中:
#container {
height: 3em;
display: flex;
align-items: center;
}
input {
height: 2em;
width: 2em;
}
.legal {
}
<div id="container">
<input type="checkbox">
<div class="legal">(check box to agree to these terms)</div>
<div>
术语div应该有display:inline-block;
since,因为你想使它与复选框一致。容器应该有一个line-height
而不是height
因为vertical-align
只与line-height
一起使用
#container {
line-height: 3em;
vertical-align: middle;
}
input {
height: 2em;
width: 2em;
vertical-align: middle;
}
.legal {
display:inline-block;
width:auto;
}