我这里有一个jsfiddle - https://jsfiddle.net/hjq6ay60/12/
超级简单,我总是忘记怎么做。
我左边有文字,右边有一个按钮。
我只需要将它们垂直居中 - 我相信你可以通过在文本中添加填充来实现这一点。
.block{
border: 1px solid red;
padding: 10px;
width: 400px;
&-top{
display: inline-block;
float: left;
vertical-align: middle;
}
&-bottom{
float: right;
vertical-align: middle;
&__button{
border: 1px solid grey;
height: 50px;
width: 50px;
}
}
}
答案 0 :(得分:2)
为什么不使用display:table
和display:table-cell
?见here
.block {
display:table;
}
.block-bottom,.block-top {
display table-cell;
vertical-align: middle;
}
.block-bottom {
width: 50px;
}
并从float:left
float:right
和.block-bottom .block-top
答案 1 :(得分:1)
我们可以这样使用position
和translateY
:
.block {
border: 1px solid red;
padding: 10px;
width: 400px;
position: relative; // Add here
&-top {
position: absolute; // Add here
top: 50%; // Add here
left: 5px; // Add here
right: 65px; // Add here
transform: translateY(-50%); // Add here
p {
margin: 0;
}
}
}
预览强>
一行:https://jsfiddle.net/xpgszmvn/
多行:https://jsfiddle.net/zqxvwv8L/
答案 2 :(得分:1)
Flexbox可以免费为您完成。另外,你可以获得摆脱花车的额外好处。
<强> Example Here 强>
.block{
border: 1px solid red;
padding: 10px;
width: 400px;
display: flex;
align-items: center; /* Magic! */
&-top{
flex: 1; /* Stretch this item all the way */
/* By default, items take only as much as they need */
}
&-bottom{
/* No need for floats or display: */
&__button{
border: 1px solid grey;
height: 50px;
width: 50px;
}
}
}
答案 3 :(得分:0)
以相等的值使用height
和line-height
,例如
button{
height:30px;
line-height:30px;
text-align:center;
}
始终文字将位于中心
对于两行文字
button{
width:50px;
height:auto;
padding:10px;
}
这将创建高度取决于文本的按钮
答案 4 :(得分:0)
试试这个,肯定会为你工作。
.block {
display: table
}
.block-top {
display: table-cell;
vertical-align: middle;
}
.block-bottom {
display: table-cell;
width: 50px;
vertical-align: middle;
}