vertical-align属性探究
在前端开发中我们经常需要将元素垂直居中对齐,我们很自然的想到使用vertical-align属性,但是使用后却发现有时候能起作用,有时候却又不起作用。究其原因还是因为我们没有将vertical-align属性弄清楚,今天就来分析一下这个属性,若分析有误,还请原谅,望一起探讨!
规范介绍
Value: baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length> | inherit
Initial: baseline
Applies to: inline-level and 'table-cell' elements
Inherited: no
Percentages: refer to the 'line-height' of the element itself
Media: visual
Computed value:for <percentage> and <length> the absolute length, otherwise as specified
适用元素
该属性仅适用于inline,inline-block,table-cell元素
属性值介绍
介绍属性之前先来了解一下各个属性值代表着什么,通过下面这张图可以知道

我们知道英语本子每行有4条线,其中红色的线即为基线
所用demo
<div class="box">
<span class="aa"></span>
x
</div>
baseline
将元素的基线与父元素的基线对齐
.aa4{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: baseline;
}
baseline的确定规则
- inline-table元素的baseline是它的table第一行的baseline。
- 父元素【line box】的baseline是最后一个inline box 的baseline。
- inline-block元素,如果内部有line box,则inline-block元素的baseline就是最后一个作为内容存在的元素[inline box]的baseline,而这个元素的baseline的确定就要根据它自身来定了。
- inline-block元素,如果其内部没有line box或它的overflow属性不是visible,那么baseline将是这个inline-block元素的底margin边界。
length
基于基线上(正值)下(负值)移动元素
input[name="sex"]{
margin:0;
padding:0;
vertical-align:-2px;
}
基于基线向下移动-2px
percentage
基于基线上(正值)下(负值)移动元素,值通过百分比乘上line-height而得
.aa2{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: -10%;
line-height: 30px;
}
这里的vertical-align:-10%所代表的实际值是:-10% * 30 = -3px,即向基线下方移动3px
注意:若该元素没有定义line-height,则会使用继承的line-height值
middle
将元素的中线与父元素的基线加上字母x的高度的一半对齐
.aa3{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: middle;
}
text-top
将元素的顶部与父元素正文区域的顶部对齐,元素的位置受父元素font-size的大小影响
.aa5{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: text-top;
}
text-bottom
将元素的底部与父元素的正文区域的底部对齐,元素的位置受父元素font-size的大小影响
.aa6{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: text-bottom;
}
top
将元素的顶部与line box顶部对齐
.aa7{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: top;
}
bottom
将元素的底部与line box底部对齐
.aa8{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: bottom;
}
super
将元素置于基线上方合适的位置
.aa10{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: super;
}
sub
将元素置于基线下方合适的位置
.aa9{
display:inline-block;
width:5px;
height:5px;
background:blue;
vertical-align: sub;
}
参考文章
vertical-align属性探究的更多相关文章
- 前端知识点回顾之重点篇——CSS中vertical align属性
来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...
- HTML 标签元素的 align 属性
align 属性规定段落中文本的对齐方式. 有 left right center justify 这些参数 left right center 就是左对齐 右对齐 中间对齐 justify ...
- What is Vertical Align?
https://css-tricks.com/what-is-vertical-align/ ************************************************* CSS ...
- Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究
2017-08-14 21:44:23 有很多中情况,分别展示. 1.Activity不做任何设置,布局使用LinearLayout 会自动滚动EditText之上的所有View,代码: <?x ...
- 格而知之2:UIView的autoresizingMask属性探究
UIView的autoresizingMask属性,是用在当一个UIView实例的父控件的尺寸发生变化时,来自动调整UIView实例在父控件中的位置与尺寸的.autoresizingMask属性是一个 ...
- 关于Vertical Align的理解
1:vertical-align 翻译就是垂直-对齐... 2:关于line-height的点 2.1:如果一个标签没有定义height属性,那么其最终表现的高度一定是由line-height起作用. ...
- 浏览器兼容CSS代码:按钮文字垂直居中(input button text vertical align)
经过测试的浏览器:IE6, IE7, IE8, IE9, Firefox, Chrome, Safiri, Maxthon 按钮的HTML代码: <input id="btn_comm ...
- img 的 align 属性
AbsBottom 图像的下边缘与同一行中最大元素的下边缘对齐. AbsMiddle 图像的中间与同一行中最大元素的中间对齐. Baseline 图像的下边缘与第一行文本的下边缘对齐. Bottom ...
- HTML自定义对象与属性探究(谷歌,火狐,IE9浏览器没问题)
1.自定义标签 <zqz>asdas</zqz> <style> zqz{ color:red; } </style> 页面变色 2.自定义标签的hov ...
随机推荐
- 微信小程序入门(三)
11.开发框架基本介绍 四个组成部分,其它三个前面介绍过了,主要WXS: WXS:对wxml增强的一种脚本语言,可以对请求的数据进行filter或者做计算处理,帮助wxml快速构建出页面结构. 12. ...
- Microsoft 机器学习产品体系对比和介绍
Microsoft 提供多种多样的产品选项用于生成.部署和管理机器学习模型. 本文将比较这些产品,并帮助你选择所需的产品,以便最有效地开发机器学习解决方案. 机器学习产品 描述 作用 Azure云端服 ...
- 自动测试工具(Jmeter,qtp等)
loadrunner.Selenium.QTP三者区别? Loadrunner是商业性能测试工具,收费,功能强大,适合做复杂场景的性能测试. Selenium是开源的web自动测试工具,免费 ...
- 项目ITP(二) 二维码 拿起你的手机装一装,扫一扫 【每日一搏】
前言 系列文章:[传送门] 五一,期待的两天假期.我的生日,happy. [吐槽] 学校真恶心,半月前让我给他搞个东西,md,课题不加人.后来又来求,说钱(钱,咱不需要:我猜也不多).到现在,又来了, ...
- C#.Net Core 操作Docker中的redis数据库
做软件开发的人,会在本机安装很多开发时要用到的软件,比如数据库,有MS SQL Server,MySQL,等,如果每种数据库都按照在本机确实有点乱,这个时候我们就想用虚拟机来隔离,这样就不会扰乱本机一 ...
- 使用redis进行基于shiro的session集群共享
之前写过一篇nginx多tomcat负载均衡,主要记录了使用nginx对多个tomcat 进行负载均衡,其实进行负载均衡之前还有一个问题没有解决,那就是集群间的session共享,不然用户在登录网站之 ...
- Go基础系列:Go接口
接口用法简介 接口(interface)是一种类型,用来定义行为(方法). type Namer interface { my_method1() my_method2(para) my_method ...
- [Redux] redux的概述
redux 的概述 随着 javascript 单页应用的不断发展,javascript 需要管理比以往都要多的状态,管理不断变化的 state 非常困难,数据流动不断变的模糊不可预测,代码的开发与维 ...
- zepto的构造器$
在zepto中,通过$来构造对象 $ = function(selector, context){ return zepto.init(selector, context) } 由该函数,实际上,在调 ...
- 使用.Net Core 2.1开发Captcha图片验证码服务
更新后续篇:Captcha服务(后续1) 使用.Net Core 2.1开发Captcha验证码服务 开发工具:Visual Studio 2017 15.7.3 开发平台:64位 Windows 1 ...