css vertical-align之居中说明

  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就差不多了。

来个相关的应用

  不定高度图片垂直居中:

代码:

<div style="border: 1px solid #CCC; height: 200px;">
	<span style="width: 1px; display: inline-block; margin-right: -1px; height: 100%; vertical-align: middle;"></span>
    <img src="http://filesimg.111cn.net/2011/05/20110924004459148.jpg" width="100" style="vertical-align: middle;" />
</div>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索属性
vertical align 居中、css vertical align、css3 vertical align、css中vertical align、cssvertical align,以便于您获取更多的相关知识。

时间: 2024-10-24 17:55:02

css vertical-align之居中说明的相关文章

CSS属性Vertical Align基本使用方法

CSS有一个属性叫Vertical Align.当你第一次学习它的时候会有些困惑,因此我觉得我们可以通过它的用法来了解它.最基本的用法像这样: img{ vertical-align: middle; } 注意在这个应用案例中,它被应用到了img元素上.图片通常是行内元素,意味着它通常是和文字在一起的.但是到底"在一起"确切的是什么意思?这就是Vertical-align所要解决的. 有效值为:baseline,sub,super,top,text-top,middle,bottom,

用CSS创建一个布局居中的页面

css|创建|页面 最近有一个读者问到,怎样用CSS创建一个居中的页面布局.该读者所追求的,是要达到这样一种效果,就如同在一个1024象素宽的页面上设计出一个800象素宽的表格.这是一种使用很广泛的页面设计方法,按照传统,它要靠嵌套表格才能达到这一效果,因此,这位读者追寻一种用CSS来达到这一效果的方法并不让人惊讶. 用CSS来创建一个居中的页面设计的基本技术相对来说较简单,不过与同类相比,也简单不了太多.让我们看一下,要将这种由来已久的基于表格的设计转变成用CSS,该怎样做. 传统的做法:居中

css控制div不能居中的解决办法

  1.css控制div不能居中最容易犯的也最简单的就是没写DTD语句,不符合w3c规则,这个解决起来很容易,在页面的最上方加上: 就行了!其实还有很多css失效的问题也都是因为没有写dtd语句而引起的. 2.使用margin来让DIV居中 最简单的写法就是: .divtemp{ margin:0 auto; } 还可以这样: .divtemp{ margin-left:auto; margin-right:auto; } 这样就可以让DIV居中了! 用css控制div居中

js+CSS实现弹出居中背景半透明div层的方法

 这篇文章主要介绍了js+CSS实现弹出居中背景半透明div层的方法,涉及javascript操作弹出div层的操作技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了js+CSS实现弹出居中背景半透明div层的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

js+CSS实现弹出居中背景半透明div层的方法_javascript技巧

本文实例讲述了js+CSS实现弹出居中背景半透明div层的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999

讨论CSS中的各类居中方式_CSS/HTML

今天主要谈一谈CSS中的各种居中的办法. 首先是水平居中,最简单的办法当然就是 复制代码 代码如下: margin:0 auto; 也就是将margin-left和margin-right属性设置为auto,从而达到水平居中的效果. 那么其他的办法呢?容我一一道来: line-height 首先介绍文字的水平居中方法: 复制代码 代码如下: <div class="wrap">刘放</div> 利用line-height设为height的一样即可: 复制代码 代

用CSS制作网页时居中如何实现?

css|网页 在使用表格的时候,我们发现居中是很容易的,但是在css中如何让页面居中呢?使用css,设置了div align=center一样无效,怎么才能让页面居中呢,在使用css的过程中发现,居中跟body的属性有关,来看看 body {text-align:center;}#container{margin:0 auto;wdith:760px; text-align:left; } 在body属性的文字文本对齐方式中使用center 在容器的外补丁margin中,设置左右自动即auto就

6种CSS控制元素上下居中效果

 通常我们用到的css布局都是左右居中,经典css写法如下:   body{       margin:0;       padding:0;       width:100%;       height:100%;   }   div{       margin:0 auto;       width:500px;       heigth:auto;   }   上面是经典的左右居中的css写法,那么像登录框那些比较小得div块只是左右居中是否不是太美观,如果上下左右都居中这是 大多数网站的

典型的DIV+CSS三行二列居中高度自适应布局

css|自适应 如何使整个页面内容居中,如何使高度适应内容自动伸缩.这是学习CSS布局最常见的问题.下面就给出一个实际的例子,并详细解释.(本文的经验和是蓝色理想论坛xpoint.guoshuang共同讨论得出的.) 首先先按这里看实际运行效果,这个页面在mozilla.opera和IE浏览器中均可以实现居中和高度自适应.我们来分析代码: CSS: body{background:#999;text-align:center;color: #333;font-family:arial,verda

CSS中ul li居中的问题

li的float:left方法显然有一个问题,就是无法居中(水平),只能使用padding-left或margin-right的方法方法来固定其居中. 一直以为对ul li居中对齐已经掌握了.但最近做项目时发现之前li的float:left方法显然有一个问题,就是无法居中(水平),只能使用padding-left或margin-right的方法方法来固定其居中.但这样可能在宽屏与窄屏的显示不一致. 使用这种方法主要是利用li的浮动固定宽度来实现,li的默认display为block,将其这个属性