html - 为什么垂直对齐 CSS 属性不起作用并且没有将跨度放在其父级的中间高度?
问题描述
我已经有一段时间很难理解vertical-align
属性了,而且我还没有成功地应用它,所以我决定在这里写。
有简单的标记
<div class="parent">
<span class="text">Some text centered here
</div>
和
.parent{
height:100px;
background-color:red;
.text{
vertical-align:middle;
background-color:green;
}
}
结果是
为什么 span 不在父容器中居中?这个属性究竟适用于什么?
给你的代码笔:
https://codepen.io/anon/pen/wXYoBO
请注意,我不是在这里问如何在 div 中居中元素,而是为什么这个特定的 css 属性不能像常识那样工作。
在这里,vertical-align 开始生效 https://codepen.io/anon/pen/QxZpYP
解决方案
如果你想使用vertical-align: middle
它需要结合display: table-cell
并申请父母,我不推荐这个解决方案,但是下面是你的代码,固定的,和一些其他的解决方案。
解决方案 1
.parent{
height:100px;
display: table-cell;
vertical-align: middle;
background-color: red
}
.text{
background-color:green;
}
<div class="parent">
<span class="text">Some text centered here</span>
</div>
解决方案 2
使用line-height
为.parent
和vertical-align
孩子定义的。在这个解决方案中,child 相对于 垂直对齐line-height
,它被拉伸了——它有 100px。
.parent {
height: 100px;
background-color: red;
line-height: 100px;
}
.text {
vertical-align: middle;
line-height: normal;
background-color: green;
}
<div class="parent">
<span class="text">Some text centered here</span>
</div>
解决方案 3
我建议使用display: flex
,因为display: table-cell
在表格之外使用根本不是一个好习惯。align-items: center
垂直justify-content: center
对齐内容,水平对齐内容。
.parent{
height:100px;
display: flex;
align-items: center;
justify-content: center;
background-color:red
}
.text{
background-color:green;
}
<div class="parent">
<span class="text">Some text centered here</span>
</div>
推荐阅读
- jenkins - Jenkins 和 terraform 插件,未找到 terraform 文件
- authentication - WSO2 APIM 3.1.0 - API 与一个用户一起运行,但不适用于具有相同角色的其他用户
- angular - “别名”类型的参数不可分配给“任何 []”类型的参数
- flutter - apk 发布模式下 shared_prefrences 的颤振错误(在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现)
- apache-spark - 用pyspark有条件地聚合列?
- vba - 词添加在缓存中,无法删除
- python - 使用 Scrapy [Python] 抓取相对 URL
- r - 优化 dplyr mutate 函数中的计算
- python - 开箱雅虎财经历史图片
- c - 即使正在使用所有函数,库文件也比可执行文件大十倍