这两天写个页面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. 查看oracle数据库的启动时间

    Oracle的sys用户下有个视图v_$instance,该视图只有一行数据.通过SQL语名可查询其内容: select * from sys.v_$instance 此视图可查看很多东西,如实例名, ...

  2. Spring有用功能--Profile、WebService、缓存、消息、ORM

    本篇介绍一些Spring与其它框架结合的有用功能,包含:Apache CXF WebService框架.Redis缓存.RabbitMQ消息.MyBatis框架. 另外对于Profile,也是Spri ...

  3. 可变参数的实现my_sprintf

    #include "stdafx.h" #include <stdio.h> #include <stdarg.h> void my_sprintf(cha ...

  4. 洛谷P1043 数字游戏

    题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...

  5. 1.20 Python基础知识 - python常用模块-1

    一.time和datetime 1.time模块 1)time.process_time() >>> import time >>> time.process_ti ...

  6. vue打包添加样式兼容前缀

    在ios8 版本上的h5对flex的支持不太好,需要有兼容的写法. vue-cli自带了postCss autoprefixer 进行兼容处理,配置如下 在vue-loader.config.js中开 ...

  7. BZOJ3510首都(LCT)

    Description 在X星球上有N个国家,每个国家占据着X星球的一座城市.由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的. X星球上战乱频发,如果A国打败了B国,那么B国将永远从 ...

  8. Android开发工具之adt-bundle-windows

    adt-bundle-windows是非常久之前的android开发工具.是集成了ADT版本号的eclipse,可是里面并没有下载SDK.这个须要自己单独下载,这个工具适合刚開始学习的人使用. 由于刚 ...

  9. TreeView 的简单实用

    TreeView组件是由多个类来定义的,TreeView组件是由命名空间"System.Windows.Forms"中的"TreeView"类来定义的,而其中的 ...

  10. ADO.net简单增删改查

    嘿嘿,又到了总结了的时间,今天我们学习了ADO.net,什么是ADO.NET:ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, Sys ...