语法

用来指定行内元素或表格元素的垂直对齐方式

相对父元素的值

  • baseline

    • 使元素的基线与父元素的基线对齐。HTML规范没有详细说明部分可替换元素的基线,如textarea,这意味着这些元素使用此值的表现因浏览器而异。
  • middle
    • 使元素的中部与父元素的基线加上父元素x-height(译注:x高度)的一半对齐。
  • sub
    • 使元素的基线与父元素的下标基线对齐。
  • super
    • 使元素的基线与父元素的上标基线对齐。
  • text-top
    • 使元素的顶部与父元素的字体顶部对齐。
  • text-bottom
    • 使元素的底部与父元素的字体底部对齐。

相对行的值

  • top

    • 使元素极其后代元素的顶部与整行的顶部对齐。
  • bottom

    • 使元素及其后代元素的底部与整行的底部对齐。

    没有基线的元素,使用外边距的下边缘替代。

baseLine

1、baseLine 的含义

2、baseLine 的确定规则

1. inline-table 的 baseline 是他的table的第一行的 baseline
2. 父元素 [line box] 的 baseline 是最后一个 line box 的 baseline。
3. inline-block 元素的 baseline 确定规则
1. inline-block 元素,如果内部有 line box,则 inline-block 元素的 baseline 就是最后一个作为内容存在的元素 [inline box] 的 baseline,而这个元素的 baseline 的确定就要根据它自身来定了。
2. inline-block 元素,如果内部没有 line box 或他的 overflow 属性是 visible 以外的值,那么 baseline 将是这个 inline-block 元素的 margin 边界。

3、inline-block 的例子

  • 子元素为行内块,里面无行内框。
    <style type="text/css">
.ctn-block {
background-color: #bbb;
height: 500px;
text-align: center;
} .ctn-block .child {
display: inline-block;
width: 100px;
height: 200px;
background: orange;
}
</style>
<body>
<div class="ctn-block">
x
<div class="child">
</div>
</div>
</body>
![屏幕快照 2019-08-31 下午5.04.28](https://shenggao.oss-cn-beijing.aliyuncs.com/blog/2020/02/29/ping-mu-kuai-zhao-20190831-xia-wu50428.png)

原因:

  • 依照规则2。父元素的基线是最后一个行内框的基线。
  • 最后一个行内框为一个行内块。先判断该行内块 overflow 属性不是 visiable 以外的值,然后确定其内部没有行内框,得出该元素的基线是底部 margin 齐平。
  • 父元素的基线就是黄色块的底部 margin。
  • 子元素为行内块,里面有行内框。
<style type="text/css">
.ctn-block {
background-color: #bbb;
height: 500px;
text-align: center;
} .ctn-block .child {
display: inline-block;
width: 100px;
height: 200px;
background: orange;
}
</style>
<body>
<div class="ctn-block">
x
<div class="child">
x
</div>
</div>
</body>



原因:

* 依照规则2。父元素的基线是最后一个行内框的基线。最后一个行内框为一个行内块。

* 先判断得出该行内块 overflow 属性不是 visiable,然后确定其有一个作为内容存在的元素,所以当前行内框的baseline就是最后一个作为内容存在的元素的baseline,也就是内容 x 的baseline,默认是 x 的底部。

* 所以当前父元素的基线是内容区 x 的底部。

  • 子元素有行内块,且其 overflow 属性为 hidden。

    则子元素的基线是底部 margin。所以相应的父元素的基线是底部 margin。

inline-block 元素下方有空隙。

  • 垂直空隙
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
* {
margin: 0;
padding: 0
} ul {
background-color: bisque;
} .box {
display: inline-block;
width: 100px;
height: 100px;
background-color: aliceblue;
}
</style>
</head> <body> <ul>
<li class="box"></li>
<li class="box"></li>
<li class="box"></li>
<span>x</span>
</ul>
</body> </html>



出现的原因:li 为行内块,且其 vertical-align 属性默认为 baseline,也就是字母 x 的底边,而相对于 s、y 等一些较高的字母,其底部会长一下,所以 baseline 的下方会给字母的一部分留出空间,因此会产生间隙。解决方法,就是**改变 line box 的 baseline 位置,比如设置 li 的 vertical-align 为 middle。如下所示。

  • 左右间隙

    出现原因:li 元素的水平空隙是因为换行引起的,这个换行会变成一个空白,这个空白会被解析为 DOM 中的文本节点。

    解决办法:

    1. li 前后兄弟元素连起来书写。
    2. 用注释来代替空白,注释节点默认在渲染的时候是不渲染的。

深入理解 vertical-align 属性的更多相关文章

  1. 前端知识点回顾之重点篇——CSS中vertical align属性

    来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...

  2. 【JVM虚拟机】(7)---深入理解Class中-属性集合

    #[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)- ...

  3. iOS runtime探究(三): 从runtime開始理解OC的属性property

    你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639303 本文主要解说runtime相关知识, ...

  4. HTML 标签元素的 align 属性

    align 属性规定段落中文本的对齐方式. 有 left  right center  justify 这些参数 left  right center  就是左对齐 右对齐 中间对齐 justify  ...

  5. What is Vertical Align?

    https://css-tricks.com/what-is-vertical-align/ ************************************************* CSS ...

  6. 关于Vertical Align的理解

    1:vertical-align 翻译就是垂直-对齐... 2:关于line-height的点 2.1:如果一个标签没有定义height属性,那么其最终表现的高度一定是由line-height起作用. ...

  7. yii2知识点理解(成员属性)

    yii2成员属性 成员变量类似于public $a; 成员属性类似于 public function a(){} 成员变量是就类的结构构成而言的概念,而属性是就类的功能逻辑而言的概念 成员属性应用: ...

  8. 理解CSS Clip属性及用法

    应用Clip属性实现的一个简单效果图: 样式写法: .my-element { position: absolute; clip: rect(10px  350px  170px  0); /* IE ...

  9. 深入理解Spring Boot属性配置文件

    我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改 ...

  10. 理解 CALayer ContentsCenter 属性

    http://aaronzjp.cn/2016/12/01/iOS-CALayer/ 这个属性和android 的 .9 文件类似,定义了图片的拉伸范围:例子中明显是四个角不拉伸,对于需要做背景,co ...

随机推荐

  1. python--包package、模块module、类Class、Mixin类(未完成)

    包package>模块module>类Class(包含了属性.方法.实例等概念) 模式一:一个包下面有多个py文件,即多个模块module 模式二:一个包下面包含多个子包packages ...

  2. top和margin-top的区别

    1.top等为绝对定位,需与position:absolute一起用才有效:而margin-top为相对定位: 2.绝对定位一般情况下以body为标准:若父元素设置position:relative, ...

  3. IIC通信控制的AD5259------在调试过程中遇到的奇葩问题

    首先说一下的遇到的问题: 1.AD5259按照SCL是100KHz的情况下,可以正常接收上位机的数据,但是一段时间后,就不能正确的按照时序来走了 原因在于AD5259在接收到上位机的数据后需要一定的响 ...

  4. [LC] 221. Maximal Square

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and re ...

  5. Nginx笔记:对url中携带的参数进行多次判断

    Nginx中只支持简单的if语句,不支持多条件判断和嵌套,通过特殊的方式也可以达到效果 location / { proxy_set_header Host $host; proxy_set_head ...

  6. 3DMAX 卸载工具,完美彻底卸载清除干净3dmax各种残留注册表和文件

    一些同学安装3dmax出错了,也有时候想重新安装3dmax的时候会出现这种本电脑windows系统已安装3dmax,你要是不留意直接安装,只会安装3dmax的附件,3dmax是不会安装上的.这种原因呢 ...

  7. tfjs-node初体验:训练模型的存储

    JS,一门从浏览器兴起,却不止于浏览器的脚本,个人一直认为其是最有潜力的脚本语言.不只是因为ES6优雅的语法,更重要的是其易上手,跨平台的优点. Node将JS从browser带去了client是革命 ...

  8. java 实体类中日期格式转换

    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss&quo ...

  9. Python---14面向对象高级编程(__slots__&@property)

    一.使用__slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Stude ...

  10. <HAOI2008>硬币购物

    和神奇dp的战斗 还有容斥原理 终于get到了 #include<cstdio> #include<cstring> #include<iostream> #inc ...