vertical-align的深入学习

  W3C官方对vertical-align属性的定义有4个方面:    
(1)vertical-align属性用于定义“周围的文字、inline元素以及inline-block元素”相对于该元素基线的垂直对齐方式。这里的“该元素”指的是被定义了vertical-align属性的元素;
(2)在表格单元格中,vertical-align属性可以定义单元格td元素中内容的对齐方式。td元素是table-cell元素,也就是说vertical-align属性对table-cell类型元素有效;
(3)vertical-align属性对inline元素、inline-block元素和table-cell元素有效, 对block元素无效;
(4)vertical-align属性允许指定负长度值(如-2px)和百分比值(如50%);

   vertical-align属性中的“基线”跟line-height属性中的基线是一样的道理。在CSS中,vertical-align属性最见的属性值有4个:top(顶部对齐)、middle(中部对齐)、baseline(基线对齐)、bottom(底部对齐)。

table-cell元素
    W3C定义:在表格单元格中,vertical-align属性可以定义单元格中内容的对齐方式。也就是说vertical-align属性对table-cell类型元素有效。
    这里要注意一下,table-cell元素跟inline、inline-block元素使用vertical-align是有很大区别的:
  (1)inline元素和inline-block元素的vertical-align是针对周围的元素来说,vertical定义的是周围元素相对于当前元素的对齐方式;
  (2)table-cell元素的vertical-align属性是针对自身而言。vertical-align定义的是内部子元素相对于自身的对齐方式;

<html>
    <head>
        <meta charset="UTF-8">
        <title>闭包经典题型</title>
    </head>
    <style>
    /*vertical-align属性对inline元素、inline-block元素和table-cell元素有效, 对block元素无效;*/
        div{
            width: 500px;
            height: 500px;
            border:1px solid red;
            display: table-cell;/*设置了table-cell元素,vertical-align定义的是内部子元素相对于自身的对齐方式*/
            vertical-align: middle;
        }
        img{
            vertical-align:middle;/*img是inline元素,inline元素和inline-block元素的vertical-align是针对周围的元素来说,vertical定义的是周围元素相对于当前元素的对齐方式*/
        }
    </style>
    <body>
        <div>我是文字<img src="img/bike-1.jpg" alt="">我是文字</div>
    </body>
</html>

原文地址:https://www.cnblogs.com/lijinwen/p/5902675.html