大家都对vertical-align的各说各话

作者:wheatlee 来源:蓝色理想 时间:2008-06-19 12:11:00 

最近几天仔细研究了一下vertical-align这个属性,结果让我大吃一惊,这个很“资深”的CSS标准竟然在各个浏览器里面的表现都各不相同。

vertical-align的值有点多,包括 baseline sub supper top text-top bottom text-bottom middle以及各种长度值(%,em,ex等等)。我先给大家看一个我觉得最夸张的值:bottom。代码如下:

p {
    font-size: 18px;
    line-height: 36px;
    font-family: Tahoma, sans-serif;
}
img {
    vertical-align: bottom ;
}

然后大家看一看这段CSS在各个浏览器中的效果(图片是我故意做成那个样子,为了可以看清楚相对位置):

呃,这个结果其实很让人匪夷所思,一般我会认为Firefox会比IE解释得更正确,但是看过Opera之后发现它和IE是一样的,而Safari/Win是站在Firefox那边。说实话,我不知道这是怎么回事。

仔细学习了《CSS权威指南(第二版)》,甚至还去查阅了 W3C ,然后自己做出一个关于vertical-align的图:

按照W3C的定义,当内联元素的vertical-align设置为:

  • baseline, top, bottom的时候,都是该元素的baseline(或middle, top, bottom)对其周围元素的相同位置,如图片的top和周围文字的top对齐。

  • text-top和text-bottom的时候,是该元素的top(或bottom)对齐周围元素的text-top(或text-bottom)。

  • 长度(%, em, ex)的时候,是基于baseline往上移动,所以正数往上,负数往下。

  • middle的时候,是该元素的中心对齐周围元素的中心。这里“中心”的定义是:图片当然就是height的一半的位置,而文字应该是基于baseline往上移动0.5ex,亦即 小写字母“x”的正中心 。但是很多浏览器往往把ex这个单位定义为0.5em,以至于其实不一定是x的正中心(以上图为例,x的高度应该是10px,而em是18px,所以两个值不一样)。

但是,即使是按照上面的准则,各个浏览器的解释如此迥异也让我匪夷所思。我也懒得去研究为什么是这样子。总的来说呢,应该就是它们对字体的每一条线的位置的定义都不大一样,所以这个问题不单跟vertical-align有关,而跟浏览器对内联文本和内联图片的结构的解释有很大关系。

最后给大家一个测试页面,可以方面的看看各个浏览器对vertical-align不同值的解释结果。
http://www.mikkolee.com/weblab/001_vertical/

大家可以测试一下其他的值,比如middle或是text-top,也是各个浏览器完全不一样。有什么心得大家来讨论一下吧~~

原文:http://www.mikkolee.com/13

标签:align,css,标准,浏览器
0
投稿

猜你喜欢

  • Python实现计算AUC的三种方式总结

    2021-07-10 23:35:32
  • 深入浅析pycharm中 Make available to all projects的含义

    2023-08-26 00:59:06
  • Python实现拓扑算法的示例

    2023-12-09 15:06:29
  • Ubuntu18.0.4下mysql 8.0.20 安装配置方法图文教程

    2024-01-21 07:10:03
  • Postman使用详解

    2023-09-03 05:59:36
  • Python json读写方式和字典相互转化

    2021-03-25 05:28:19
  • python TK库简单应用(实时显示子进程输出)

    2023-10-08 23:08:19
  • python 爬取英雄联盟皮肤并下载的示例

    2023-07-22 09:57:45
  • python渗透测试linux密码激活的示例

    2023-06-25 16:57:41
  • python中base64编码简介

    2023-09-21 20:26:12
  • django+xadmin+djcelery实现后台管理定时任务

    2023-12-15 03:05:52
  • python自动化测试通过日志3分钟定位bug

    2021-09-12 10:11:19
  • 详解Python结合Genetic Algorithm算法破解网易易盾拼图验证

    2023-05-22 01:34:36
  • ASP中取得图片宽度和高度的类

    2008-10-29 12:38:00
  • mysql回表致索引失效案例讲解

    2024-01-21 01:28:48
  • 举例讲解Python设计模式编程中的访问者与观察者模式

    2021-06-10 06:38:16
  • 有用的SQL语句(删除重复记录,收缩日志)

    2008-03-04 16:59:00
  • 对Python函数设计规范详解

    2023-08-02 15:59:17
  • Asp中Server.ScriptTimeOut属性需要注意的一点

    2011-04-27 08:41:00
  • python Tkinter的图片刷新实例

    2023-10-31 04:32:24
  • asp之家 网络编程 m.aspxhome.com