vertical-align 的使用

 以前总是想要一些元素垂直居中对齐,经常用line-height,可是对于图片来说,line-height的表现并不理想(非常不理想)可看我的文章:line-height系列(二)
,所以得用vertical-align:middle。然而用的时候总是无效,查了资料和实践后,终于知道vertical-align的用法了!
 
作用环境:父元素设置line-height。
作用对象:子元素中的inline-block和inline元素。

一、当父元素设置了line-height

  • 父元素(inline-block\block)必须含有line-height(inline元素有无皆可),子元素中的(inline-block/inline元素)vertical-align才能起作用。
  • vertical-align不可继承,必须对子元素单独设置。
 

关于定义——

在父元素定义了line-height的条件下,vertical-align的作用是让(inline/inline-block)子元素依据父元素的基点对齐。

描述
长度 通过距离升高(正值)或降低(负值)元素。'0cm'等同于'baseline'
百分值 – % 通过距离(相对于1line-height1值的百分大小)升高(正值)或降低(负值)元素。'0%'等同于'baseline'
baseline 默认。元素的基线与父元素的基线对齐。
sub 降低元素的基线到父元素合适的下标位置。
super 升高元素的基线到父元素合适的上标位置。
top 把对齐的子元素的顶端与line box顶端对齐。
text-top 把元素的顶端与父元素内容区域的顶端对齐。
middle 元素的中垂点与 父元素的基线加1/2父元素中字母x的高度 对齐。
bottom 把对齐的子元素的底端与line box底端对齐。
text-bottom 把元素的底端与父元素内容区域的底端对齐。
inherit 采用父元素相关属性的相同的指定值。
 数值详解:
1. 首先关于数值,见下面的示例:
 .test{vertical-align:-2px;}
 元素相对于基线向下偏移两像素,这个常常用来修复单选框/复选框与12像素文字大小不对齐的问题。
 
2. 再者关于百分数值,这里的vertical-align,是相对于此标签继承的line-height值决定的。例如,如下示例代码:
 .test{vertical-align:-10%;}
 假设这里的.test的标签继承的行高是20px,则这里的所代表的实际值是:-10%*20px=-2px。 IE6/IE7浏览器下的vertical-align的百分比值不支持小数line-height。
 
 

关于作用环境——

只有一个元素属于inline或是inline-block(table-cell也可以理解为inline-block水平)水平,其身上的vertical-align属性才会起作用。
  • 所谓inline-block水平的元素,即可以与inline水平元素混排,又能设置高宽属性的元素,例如图片,按钮,单复选框,单行/多行文本框等HTML控件,只有这些元素默认情况下会对vertical-align属性起作用。
  • 对inline元素设置vertical-align是有作用的,只是要重新设置line-height的值,否则继承了父元素的line-height只能垂直居中。
 
例一:inline元素作为父元素可以不设置line-height,字体会撑起一个适合子元素作用的高度。小白点可以各种对齐。
<span class="box"> <span class="dot"></span> 我是一段卡哇伊的文字。 </span>
.box{background:black; color:white; padding-left:20px;}
.dot{display:inline-block; width:4px; height:4px; background:white;vertical-align:top;}
 
 
例二:div父元素必须设置line-height,否则对其设置vertical-align无效,图片不会在绿色框里动~
<div class="outerbox">
<img src="C:\Users\Administrator\Desktop\test.jpg"/>
<span>这是外层元素的内部文字</span>
</div>
.outerbox{width:300px; line-height: 300px;font-size: 16px; }
.outerbox img{width: 30px; height:30px; vertical-align: bottom;}
.outerbox span{vertical-align: top;}

 
对文字设置vertical-align:top 无效是因为文字继承了父元素的line-height,导致文字居中,要想vertical-align起作用,可在该元素上设置line-height小一些覆盖父元素。
 
 
 
 

二、当父元素没有设置line-height时,inline/inline-block子元素之间对齐。

  • 当父元素没有设置line-height时,只对行内元素的兄弟元素对齐有用,无法子元素居中对齐父元素。
  • 设置了vertical-align:middle的子元素的中线与兄弟元素的基线对齐。若兄弟元素都设置该项,则居中对齐。
 
例:黄色的线为图片中垂线。
<div style="height:200px">
<img src="C:\Users\Administrator\Desktop\桌面\gallery4.jpg" style="width:50px;vertical-align:middle;">
<span style="vertical-align:middle">hahahahhah</span>
</div>
只设文字的vertical-align,则文字的中线对齐图片底线
只设图片的vertical-align,则图片的中线与文字的基线对齐
 
两个的vertical-align都为middle,则两个的中线互相对齐
 
 
2017-01-20

怎么应用vertical-align,才能生效?的更多相关文章

  1. 创建MySQL用户 赋予某指定库表的权限 flush privileges才能生效!!!!;@'localhost'授权本地,@'%'授权远程

    update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 建议使用GRANT语句进行授权,语句如下: gra ...

  2. What is Vertical Align?

    https://css-tricks.com/what-is-vertical-align/ ************************************************* CSS ...

  3. Idea使用记录--每次修改JS文件都需要重启Idea才能生效解决方法

    最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能 ...

  4. JSP的改动需要重启应用服务器才能生效?

    PLM的版本由2013版升级到2016版,部署到应用服务器tomEE的war包也更新了,今天在Linux服务器上hot fix一个JSP页面的时候发现改动没有生效,要重启tomEE才生效,纳闷了一下才 ...

  5. idea中war和war exploded的区别及修改jsp必须重新启动tomcat才能生效的问题

    刚开始使用idea,发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能有这么不方便的功能存在. 需要在Tomca ...

  6. Idea-每次修改JS文件都需要重启Idea才能生效解决方法

    最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能 ...

  7. 修改JS文件都需要重启Idea才能生效解决方法

    最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能 ...

  8. 更改windows服务的配置文件(app.config)必须重启服务才能生效吗?

    这个问题是前一阶段写windows服务碰到的.本来在写获取配置文件的某个配置的值的时候,通常我都是写类似下面的这么一个静态方法来获取: 1: /// <summary> 2: /// 获取 ...

  9. 父容器的flowover:hidden 必须配合父容器的宽高height width才能生效

    有时候 给父容器 加上了 flowover:hidden 这个css后, 其中的子元素为什么仍然会跑出来? 解决的根本方法就是要给 父容器 加上具体的一个宽度, 或高度. (而这个宽度和高度, 其实你 ...

随机推荐

  1. ASP.NET MVC---自定义HtmlHelper方法

    HtmlHelper方法是ASP.NET MVC中非常强大的特性,有了这个特性,我们就能更加随心所欲的定制自己的页面. 自定义自己的HtmlHelper方法通常有三种, 像是: 一.Razor语法 采 ...

  2. html 自定义标签的作用

    比如早期的时候,如果浏览器不支持 nav 这个标签的话, style标签中的样式 nav {color: yellow}会不起作用,字体不会变黄. 怎么处理兼容性呢? 用 javascript. 加上 ...

  3. MySQL 批量导入 csv 文件

    注意编码一致性,如:我的数据库是utf-8编码,csv文档的编码也是utf-8. 导入使用 LOAD DATA LOCAL INFILE 详细用法请参看文档或者书籍. mysql  user表结构: ...

  4. mysql建表---级联删除

    CREATE TABLE `roottb` (  `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,  `data` VARCHAR(100) NOT NUL ...

  5. xCode中如何安装旧的模拟器

    http://blog.csdn.net/cmengzhongren/article/details/50414493 这里给出如何把老版本的SDK加入到新的Xcode中的方法.其实很简单,就是将老版 ...

  6. Tomcat配置文件Host元素属性介绍

    1.属性名:appBase.使用对象:all.含义:这一Host的Web应用程序目录的路径(Web应用程序和/或WAR文件驻留的目录).可以是CATALINA_HOME的相对路径,或者是绝对路径.默认 ...

  7. 关于Android反编译

    详情查看:http://blog.csdn.net/ordinaryjoe/article/details/8626010

  8. EasyUI datagrid 的checkbox设置

    参考url: http://blog.csdn.net/baronyang/article/details/9323463 我的需求: 抓取数据生成的日志,日志中有部分是抓取失败的,需要将失败的发送到 ...

  9. 设置ubuntu下使用ls命令显示文件颜色显示

    文件颜色属性: # Attribute codes: 字符属性# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed#00无 ...

  10. UVa 10523 - Very Easy !!!

    题目大意:给你一个公式,直接按照式子计算就可以了,要用到大数. import java.io.*; import java.util.*; import java.math.*; class Main ...