关于vertical-align的种种

有些时候 vertical-align 的渲染结果并不同我们想象的一样。
虽然现在已经有很多 CSS 属性可以完美替代 vertical-align 的渲染效果,但有些时候碰到还是很头疼,所以最好还是搞清楚它。

作用对象inlineinline-block子元素。
这个属性失效的情况:

  1. 作用对象是块级元素(因为块级元素会霸占整行);
  2. 作用元素设置了浮动、定位等脱离文本流的属性(父元素设置这些属性不影响);
  3. 父元素是flex或grid布局(作用元素设置这些布局不影响)。

属性值:

描述
baseline(default) 元素的基线与父元素的基线对齐。
top把对齐的子元素的顶端与line box顶端对齐。
text-top把元素的顶端与父元素内容区域的顶端对齐(文字顶端)。
middle元素的中垂点与父元素的基线加1/2父元素中字母的高度对齐。
bottom把对齐的子元素的底端与 line box底端对齐。
text-bottom把元素的底端与父元素内容区域的底端对齐。
sub垂直对齐文本的下标。
super垂直对齐文本的上标。
inherit采用父元素相关属性的相同的指定值。
长度通过距离升高或降低元素。
%通过相对于line-height属性的百分值升高或降低元素。0值等同于baseline

看表格的描述太抽象,还不如来点儿实际的~
HTML 代码:

<div class="container">
  Father Text
  <span class="content">
  	Child Text
  </span>
  <img class="align" src="./img/xx.png" alt="vertical align image">
  <!-- 下面的图片不作特定垂直对齐,作为一个参照 -->
  <img src="./img/**.png" alt="reference image">
</div>
  1. baseline:元素放在父元素的基线上。
    实际上文本子元素是文本内容放在父元素基线上。因为这是默认值,其他子元素都是baseline
    baseline

  2. top:元素的顶端与行中最高元素的顶端对齐。

    .align { vertical-align: top; }
    

    baseline看,这里的最高元素是参照图。
    top

  3. text-top:元素的顶端与父元素字体的顶端对齐。
    text-top

  4. middle:元素在父元素内垂直居中。
    可以看出,middle实际是指元素中部与父元素文本中部对齐。
    middle

  5. bottom:元素底端与行中最低元素底端对齐。
    baseline可以看出这里最低元素是 content 元素。
    bottom

  6. text-bottom:元素底端与父元素文本底端对齐。

    这和baseline是不一样的。

    text-bottom

  7. 长度值:使用定长表示元素底部与父元素基线的距离。
    正值升高元素,负值降低元素。0值等同于baseline

    .align {
      vertical-allign: 10px; /* 元素相对于基线向下偏移2px */
    }
    

    10px

  8. 百分比:元素底部相对于父元素基线移动相对于元素行高line-height的百分比。
    这里百分比是相对于元素的line-height值。

    .align { vertical-align: -10%; }
    

    假设.align本身未设置行高,继承的行高是20px,这里的-10%代表的实际值是-10% × 20 = -2px,所以是让元素下降 2 像素。
    2px
    设置.align行高为100px,这里的-10%代表的实际值是-10% × 100 = -10px,所以是让元素下降 10 像素。
    -10px

    IE6 / 7 下的vertical-align百分比值不支持小数的line-height

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值