这两天写个页面css的时候用到了vertical-align属性。使用过程中踩到了坑,所以总结例如以下:

vertical-align的定义

W3C上对vertical-align的定义:vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。

同意指定负长度值和百分比值。

这会使元素减少而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

文本通常依据不可见的基线进行对齐的。而字母的底部位于基线之上。vertical-align属性能够在文字的基线之上或之下提升或减少字母或图像。vertical-align属性的值有baseline、sub、super、top、text-top、middle、bottom、text-bottom、、等,当中初始值为baseline。

baseline(基线)——将子元素的基线与父元素的基线相对齐。

对于没有基线的元素,如图像或对象,则使它的底部与父元素的基线对齐。

sub(以下)——把元素置于下方(下标),确切地说是使元素的基线对齐它的父元素首选的下标位置。

super(上面)——把元素置于上方(上标)。确切地说是使元素的基线对齐它的父元素首选的上标位置。

text-top(文本顶部)——使元素的顶部与其父元素最高字母的顶部相对齐。

top(顶部)——使元素的顶部与行中最高事物的顶部相对齐。

middle(中间)——使元素垂直居中。

bottom(底部)——使元素的底部与行中最低事物的底部相对齐。

text-bottom(文本底部)——使元素的底部与其父元素字体的底部相对齐。

vertical-align的解读

W3C上对vertical-align的定义,大体上能够分为两个部分:

第一种使用方法。先看后面一句“在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。”这非常easy理解,假设给一个表格的td加一个vertical-align:middle的样式。表格里面的内容会垂直居中,相同的假设给一个vertical-align:bottom就会底部对齐。假设给一个vertical-align:top就会顶部对齐。

另外一种使用方法,看前页一句“该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。”专业的语言我不会说的。能够打个比喻:假设有两个行内元素a和b,a和b都是img,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置,例如以下图:

假设a和b都加了一个vertical-align:middle样式。那么就互相对齐了对方的中间位置,也就是它们在垂直方向上的中线对齐了,例如以下图:

比方,img和span一起出现。要想文字对齐图片的中间位置,就须要为图片加入img{vertical-align:middle;}

再比方input和span连用时,谷歌火狐IE8以上版本号里默认的是span在input的中间位置,但ie6/ie7里,span底部和input底部对齐。实现统一的办法就是给input加入input{vertical-align:middle;},要想它们垂直方向上的中线对齐。就同一时候也为span设置span{vertical-align:middle;}

vertical-align的使用

1.用于内联元素

以下以图像的垂直对齐为样例说明一下vertical-align属性的使用方法。

img{ vertical-align:middle;}
<div><img src="http://pic2.58.com/ui7/job/hire/pic4.png" />看看我的位置</div>

2.用于表格

vertical-align属性能够直接用于表格单元格,效果相当于HTML中的valign属性。

td{ height:40px; vertical-align:middle;}
<table><tr><td>这是一个測试</td><td>这是一个測试</td></tr><tr><td>这是一个測试</td><td>这是一个測试</td></tr></table>

3.用于块元素

vertical-align属性是不适用于块元素的。这就是为什么有些人使用vertical-align属性无效的原因。可是我们能够使用display属性,设置其值为table-cell。将块元素转化为单元格,然后再使用vertical-align属性。

div{width:500px; height:200px; border:1px blue solid; display: table-cell; vertical-align: middle;}
<div><img src="http://pic2.58.com/ui7/job/hire/pic4.png" /></div>

须要注意的是。上面这样的方法是存在兼容性问题的。IE6/IE7以及以IE为核心的浏览器如世界之窗、360、遨游等浏览器不支持这样的使用方法,而Chrome、火狐却能支持。

为了兼容ie6/7能够为div添加下面属性

div{
*display:block; *font-size:175px;/*高度为200px。 则200*0.873约为175px* 撑开/ }

**

特别提醒:vertical-align仅仅对行内元素有效,对块级元素无效。

**

CSS vertical-align属性的使用方法的更多相关文章

  1. 前端知识点回顾之重点篇——CSS中vertical align属性

    来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...

  2. 【转】CSS z-index 属性的使用方法和层级树的概念

    文章转自:CSS z-index 属性的使用方法和层级树的概念,另外加了一点自己的注释 CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面 ...

  3. css中的float属性以及清除方法 (2011-09-03 17:36:26)

    CSS里面的浮动属性是布局的常用工具,只有真正了解它并熟练使用才能将它的优点发挥到极致. 许多页面中都有文字绕图效果,并且各区块分布得错落有置,很多朋友在自学CSS布局时为了做出这些效果往往会被div ...

  4. ios jquery css('left')无法读取属性解决的方法

    ios jquery css('left')无法读取属性解决的方法 <pre>$(this).position().left因为display:none状态下是读取不了 $(this).o ...

  5. 【转】CSS Sprites教程大全(使用方法、工具介绍)

    什么是CSS Sprite CSS Sprite 又叫CSS精灵,是目前大型网站中经常运用的图片处理方式.它的原理很简单,将网站上零散的小图片(或图标)整合在一张大图上,再用CSS中“backgrou ...

  6. CSS 垂直居中的5种实现方法

    利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站.         使用 CSS 实现垂直居中并不容易.有些 ...

  7. 提高CSS文件可维护性的五种方法

    当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节.然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成.所以,结构优良的代码能很大程度上优化它的可 ...

  8. 深入理解css中position属性及z-index属性

    深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...

  9. CSS Counters 计数属性

    CSS Counters其实就是一计数器,早期在CSS中计数器仅存在于ul和ol元素.如果要使用在div这样的元素上,只能通过list-style-image或者是元素的backgroud-image ...

随机推荐

  1. 洛谷 P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver

    P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题目描述 The cows are out exercising their hooves again! There are N ...

  2. opencv中的Java库

    opencv中有一个用Java编写的库,opencv2.4.4以上,在opencv解压包里路径:opencv/build/java/opencv.jar,再依据用户计算机位数选择,假设是32位计算机, ...

  3. vim-复制、粘贴

    选中某些行,可以在命令行模式下执行如下操作 v(小写),按上下左右键,可以选中某些行 V(大写),按上下键,这时候可以直接选中光标所在的行 ctrl+v(小写),可以选中一个矩形区域 取消选中,这些指 ...

  4. 关于mybatis里面的Executor--转载

    原文地址:http://blog.csdn.net/w_intercool/article/details/7893344 使用mybatis查寻数据,跟踪其执行流程 最开始执行的语句 this.ge ...

  5. 1.21 Python基础知识 - python常用模块-2

    一.xml 什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 X ...

  6. 仙人掌的同构(hash)

    关于仙人掌的同构,主要是我太蒟蒻了QAQ,问了好几位大佬才弄好. 手撕仙人掌,你得先有手套 ,你得先了解以下基本知识 a.点双连通分量,没什么好说得,仙人掌上有环,判环用点双 b.树的hash点这里 ...

  7. Shell中反引号(`)与$()用法的区别

    今天有人提问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样? 这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题 ...

  8. 【ASP.NET开发】.NET三层架构简单解析

    对于三层架构来说,主要是使用设计模式的思想,对于项目的各个模块实现"高内聚,低耦合"的思想.这里就不做详细的介绍了,如果大家有兴趣,可以阅读软件工程和设计模式相关文章. 对于三层架 ...

  9. python内存增长问题

    如果你的程序没有调用什么特殊的库, 只是用了很平常的库, 而且使再循环很多的情况下, 那么建议你把循环里的程序拆出来,写成一子函数,循环子函数. 如下面格式: for   (循环) 子函数 这样程序每 ...

  10. ECMALL功能拓扑图以及模式分析

    ECMALL  VS  常规的B2C产品(以ECSHOP做对比)的区别: 1.支持多用户在同一个域名下开店. 2.开店的卖家各自结算,直接收钱.平台只是提供了一个类似传统行业的摊位.平台不过手金钱 3 ...