我只是不能让类按钮align-right在中间垂直对齐.
HTML:
<div class="panel-footer">
<span style="width:100%;" class="header-footer-item">
<button class="align-right" type="button">Save</button>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.panel-footer {
height: 70px;
vertical-align: middle;
border: solid;
}
.header-footer-item {
display: inline-block;
line-height: 70px;
border: solid red;
}
.align-right {
float: right;
}
.align-middle {
vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle:https://jsfiddle.net/d1vrqkn9/2/
如果我float:right从按钮中移除它,它可以工作,但我希望它在右边.
如果我改变header-footer-item从inline-block到inline那么浮动按钮呈现其包含的元素,我认为是对上述规则:(在接受的答案#4这里如何垂直方向的中间对齐浮动无名高地的要素是什么?) -尽管父元素是然后在中间垂直对齐.
我已根据CSS添加行高度垂直对齐不适用于浮点数
最大的问题是 - 我该如何解决?我也有兴趣知道为什么使子元素(按钮)向右浮动使得父元素(span)不再在包含div中垂直对齐(但仅当它inline-block不是时inline)....最后,不是'违反规则'(https://www.w3.org/TR/CSS21/visuren.html#float-rules,#4),浮动箱的外部顶部要高一些比其包含块的顶部?......显然是这样header-footer-item的inline.
有很多关于垂直调整事物的问题,你认为他们会用"认真地,垂直地对齐这个东西 - 无论什么,没有抱怨,只是这样做:sudo force vertical-align:middle !important or I'm coming for you"
最好和最干净的方法是这样使用flex:
添加display: flex到您的外部div panel-footer[检查下面的代码]
移除浮动并使用text-align:right按钮的跨度.[检查以下代码]
添加align-self: center到内部跨度.[检查以下代码]
1:
.panel-footer {
height: 70px;
border: solid;
display:flex;
}
Run Code Online (Sandbox Code Playgroud)
2:
.header-footer-item {
text-align: right;
}
Run Code Online (Sandbox Code Playgroud)
3:
.header-footer-item {
align-self: center;
}
Run Code Online (Sandbox Code Playgroud)
jsFiddle: https ://jsfiddle.net/d1vrqkn9/4/
这是一个带有适当HTML和足够CSS的版本。
.panel-footer {
height: 70px;
border: solid;
position: relative;
}
.panel-footer button {
position: absolute;
right: .5em;
top: 50%;
transform: translate(0,-50%);
}Run Code Online (Sandbox Code Playgroud)
<div class="panel-footer">
<button>Save</button>
</div>Run Code Online (Sandbox Code Playgroud)