深入理解 vertical-align 属性

从字面上看, vertical-align 很好理解,即控制元素的“垂直对齐”方式。参照 W3School 的说明:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

1 先单独看一个简单的例子

<html>
<head>
<style type="text/css">
img.top {vertical-align:text-top}
img.bottom {vertical-align:text-bottom}
img.middle {vertical-align:middle}
img.default{}
</style>
</head>
<body>
<p>
这是一幅<img class="top" border="0" src="http://www.w3school.com.cn/i/eg_cute.gif" />位于段落中的图像。
</p> 
<p>
这是一幅<img class="bottom" border="0" src="http://www.w3school.com.cn/i/eg_cute.gif" />位于段落中的图像。
</p>
<p>
这是一幅<img class="middle" border="0" src="http://www.w3school.com.cn/i/eg_cute.gif" />位于段落中的图像。
</p>
<p>
这是一幅<img  class="default" border="0" src="http://www.w3school.com.cn/i/eg_cute.gif" />位于段落中的图像。
</p>
</body>
</html>

注意这里设置 vertical-align 属性的是行内元素 img 而非 块级元素 p,其中 img 是 p 的子元素。效果如下:

可见,默认情况下 vertical-align 属性的值是 baseline。并且在某些情况下,vertical-align:top 和 vertical-align:text-top、vertical-align:bottom 和 vertical-align:text-bottom 以及 vertical-align:baseline可能会呈现相同的效果。

2 再看一个 table 中的例子

<html>
<head>
<style type="text/css">
    td{ border:1px solid black;height:100px}
    td:nth-child(1){}
    td:nth-child(2){vertical-align:middle}
    td:nth-child(3){vertical-align:top}
    td:nth-child(4){vertical-align:bottom}
</style>
<body>
<table>
  <tr>
    <td> 单元格1 </td>
    <td> 单元格2 </td>
    <td> 单元格3 </td>
    <td> 单元格4 </td>
  </tr>
</table>
</body>
</html>

注意, td 元素的宽度是自适应内容宽度(在未设置 width 的情况下)的,这点是表格元素最特殊的地方——列宽自适应。而其高度和其它所有元素一样,是自适应内容高度的(在未设置 height 的情况下)。为了表现出 vertical-align 的效果,这里设置了 height。效果如下:

可见,td 元素的 vertical-align 属性的默认值并非 baseline 而是 middle。

3 再看一个复杂些的 table 中的例子

<html>
<head>
<style type="text/css">
   td{ display: table-cell; padding:10px;margin:10px;border:1px solid #ccc; height:300px}
   td div{ display:inline-block}
</style>
<body>

<table>
  <tr>
    <td>
      <div style="padding:40px 80px 10px 10px; background: #639146; color:#fff;">div+css</div>
      <div style="padding:60px 80px 10px 10px; background: #2B82EE; color:#fff;">javascript</div>
      <div style="padding:70px 80px 10px 10px; background: #F57900; color:#fff;">HTML5</div>
      <div style="padding:80px 80px 10px 10px; background: #BC1D49; color:#fff;">CSS3</div>
    </td>
  </tr>
</table>
</body>
</html>

效果如下:

可见 td 中的内容是“垂直居中”的, 但是这个垂直居中是以高度最大的元素为标准的。而其他的 div 元素则与其底线水平对齐,相当于

td div{vertical-align:baseline}

还是 vertical-align 属性的默认值。因此,若要属性所有内容垂直居中,需要如下代码:

 td div{ display:inline-block;vertical-align:baseline}

效果如下:

总之:vertical-align 属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐方式,其默认值是 baseline, 但对于 td 元素其默认值是 middle。

时间: 2024-10-21 14:52:28

深入理解 vertical-align 属性的相关文章

html基础 设置img的align属性,left,right 实现图文混排的效果

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ ex1: code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; chars

iOS runtime探究(三): 从runtime开始理解OC的属性property

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639303 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属

理解CSS Clip属性及用法

应用Clip属性实现的一个简单效果图: 样式写法: .my-element { position: absolute; clip: rect(10px  350px  170px  0); /* IE4 to IE7 */ clip: rect(10px, 350px, 170px, 0); /* IE8+ & other browsers */ } 属性解析: clip: { shape | auto | inherit } ; auto 即浏览器默认解析,无clip效果,inderit 继承

HTML &lt;p&gt; 标签的 align 属性

align 属性规定段落中文本的对齐方式. 有 left  right center  justify 这些参数 left  right center  就是左对齐 右对齐 中间对齐 justify 对行进行伸展,这样每行都可以有相等的长度 用法 <p align="justify"> 使用之前 使用之后

&lt;img&gt;标签的align属性

align 属性用于定义图像相对应文本的位置 <p>图像 <img src="eg_cute.gif" align="bottom"> 在文本中</p> <p>图像 <img src ="eg_cute.gif" align="middle"> 在文本中</p> <p>图像 <img src ="eg_cute.gif"

【JVM虚拟机】(7)---深入理解Class中-属性集合

#[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)---深入理解Class中访问标志.类索引.父类索引.接口索引 那么这篇博客主要讲有关 字段表集合 相关的理解和代码示例. 字段表:用于描述接口或者类中声明的变量,字段包括类级(static修饰)变量以及实例级变量,但是不包括局部变量(方法内部变量). 一.概念 字段表集合:包括了字段计数器和字段数据

line height 与 vertical align

一.line height 其中代表inline box(包含上下间距,若height==line-height,则行间距=line-height - font-size/2),big代表content area. 注: 若line-height < content area ,则line box要取line-height的值,这也是为什么会重叠的原因. line-height属性取值: 1. % 若自身没有设置line-height,则line-height = 父元素的font-size *

[ css 深入理解 vertical-align line-height 属性 ] css中深入理解vertical-align和line-height的基友关系及实例演示的区别

一.想死你们了 几个星期没有写文章了,好忙好痒:个把月没有写长篇了,好忙好想:半个季度没在文章中唠嗑了,好痒好想. 后面一栋楼有对夫妻在吵架,声音雄浑有力,交锋酣畅淋漓,还以为只有小乡镇才有这架势,哦,突然想起来,我就是住在上海郊外的小乡镇上. 刚刚买了几十股京东的股票,第一次玩这个,看好京东的发展.其实股价21的时候就打算入手了,但是,转外汇的时候,提示,要工作时间.然后一忙二忘,等现在入的时候,已经涨了20%多了,科科,肥皂弄人啊!写到这里的时候,忍不住拿出手机一看,哎呦,不错哦,盈利28刀

JS面向对象篇一、理解对象及属性特性(属性描述符)

本文内容 1.理解对象; 2.ECMAScript有两种属性类型:数据属性和访问器属性(getter和setter函数); 3.数据属性的属性特性:[[Configurable]].[[Enumerable]].[[Writable]].[[value]]; 4.访问器属性的属性特性:[[Configurable]].[[Enumerable]].[[get]].[[set]]; 5.Object.defineProperty().Object.defineProperties().Object

【WPF学习】第十一章 理解依赖项属性

依赖项属性是标准.NET属性的全新实现——具有大量新增价值.在WPF的核心特性(如动画.数据绑定以及样式)中需要嵌入依赖项属性.WPF元素提供的大多数属性都是依赖项属性.到目前位置所见到的所有示例都用到了依赖项属性,但你可能还没有意识到这一点.这是因为依赖项属性的用法和普通属性的是相同的. 然而,依赖项属性并非普通属性.可能乐意认为依赖项属性是添加了一套WPF功能的常规属性(采用典型的.NET方式进行定义).从概念上讲,依赖项属性确实以这种方式工作,但它们的背后的实现方式并非如此.原因十分简单: