免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1841 | 回复: 1
打印 上一主题 下一主题

vertical-align属性 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-07 16:00 |只看该作者 |倒序浏览
vertical-align属性







vertical-align属性算是CSS中一个比较不好理解的,记下自己的理解。

vertical-align可以用三个2来总结:两种情况;两个概念;两个属性。

两种情况:

  vertical-align可以用在display:table-cell 的下面(典型的就是td),这时的有四个可取值baseline|top|middle|bottom。这种情况下比较简单,分别用cell box的baseline、top、middle、bottom对齐这一行的baseline、top、middle、bottom即可。

  cell-box:包围内容的最小框。

  cell-box的baseline:一般来说为这个cell-box里第一行文字框从下往上四分之一处(大约,为个人理解)。

  这一行的baseline:这一行vertical-align为baseline的所有cell-box,cell-box顶部到该 cell-box baseline距离最大的 cell-box的baseline做为这一行的baseline(vertical-align:baseline的inline-replace元素 的baseline视为其margin box的底部)。


  如上图,前两个box的vertical-align都为baseline,要确定这一行的baseline就跟这两个box有关。这两个 cell-box的baseline到该cell-box顶的最大距离为2号,所以就选2号的baseline做为这一行的baseline。

  bottom,top,middle则比较简单,分别用cell-box的bottom,top,middle与行的相应对齐即可。

  上面即为情况一,下面是情况二

  用于inline-level elements (概念1),影响它在其line-box里的垂直位置。line-box(概念2)的高度由其中的inline-level元素计算,对于inline-replace元素就为其margin box的height,no-replace元素为其line-height。

  用于对齐的两个对象分别为 line-height box(或margin box)和line-box。

  baseline:line-height box(或 margin box)的baseline与line-box的baseline对齐。line-height box的baseline为该box里最后一行文字从下往上略1/4处(英文e的下沿),inline-replace元素找到不baseline的,用 其margin box的下沿当baseline。

  line box的baseline的计算为:line box中所有vertical-align:baseline(没明显设置,即默认也为baseline)的line-height box和margin box都参与计算,还有一个臆想的box(strut),这个box有font和line-height两个属性,这两属性的值都可以继承而来。算出每个 box中baseline到box顶部的距离,最距离最大的box的baseline做为这个line box的baseline(和上面table-cell里行的baseline计算差不多)。然后就用相应的位置对齐即可,对齐时可能会改变line box的高度。

  middle:inline-height box (或 margin box)的中心对齐line box的baseline再上移x中心的距离(跟font-size有关,一般直觉上认为中间对中间即可)。

  bottom,top:简单,顶对顶,底对底。

  text-top,text-bottom:顶对文字顶,底对文字底。

  sub,super:对齐basline,再分别降、升box。

  数值:相对baseline调整。

  百分比:相对line-height计算出数值,再相对baseline调整。

分清清两种情况,了解两个概念,理解两个相关属性,再加上一个搞懂baseline的计算这一核心,vertical-algin就差不多了。

论坛徽章:
0
2 [报告]
发表于 2012-01-07 16:00 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP