2017.9.15 垂直居中的方法
来源:互联网 发布:逆战冰神鼠标宏数据 编辑:程序博客网 时间:2024/06/05 20:25
1.vertical-align
首先要理解vertical-align的特性
vertical-align 属性设置元素的垂直对齐方式。
该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
定义解析:
该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。
vertical-align 首先定义的对象是 行内元素 行内元素当然也包括行内块级元素
行内元素对于该元素所在的基线 垂直对齐
vertical-align该元素所在基线 第一种是和父元素的基线的对比 第二种是和同级行内元素的基线对比对齐
例如
.a{height:100px;line-height:100px;}
<p class=”a”>
<img/>
</p>
这样p标签的基线在内部框的中间 <img/>对于他在的父元素p标签的基线实现垂直居中对齐 加一个vertical-align:middle 就可以实现了
这是行内元素的垂直居中对齐方法
基线分为
所以 vertical-align想要有效果 所以必须有参考基线 当父元素有了 line-height定义后 子元素可以使用 vertical-align 所以
.e{width:600px;height:200px;background:red;line-height:200px;}
img{vertical-align:middle;}
<div class="e">
<img src="../images/bg1.png" />aaaaaaaaaaaaaaaaaaa
</div>
- <table height="100px">
- <tr>
- <td>
- aaaaaaaaaaaaaaaaaaa
- </td>
- </tr>
- </table>
- .a{width:500px;height:300px;background:red;display:table;}
- .b{display:table-cell;vertical-align:middle;}
- <div class="a">
- <div class="b">
- <img src="../images/bg1.png"/>
- </div>
- aaaaaaaaaaaaaaaaaaaa
- </div>
这种方法的使用要求
关于作用环境——
- 所谓inline-block水平的元素,即可以与inline水平元素混排,又能设置高宽属性的元素,例如图片,按钮,单复选框,单行/多行文本框等HTML控件,只有这些元素默认情况下会对vertical-align属性起作用。
- 对inline元素设置vertical-align是有作用的,只是要重新设置line-height的值,否则继承了父元素的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 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;}
这个作用要求是抄的 http://blog.csdn.net/diudiu5201/article/details/54666809
可以看下借鉴的文章
第二中就是行内元素之间的基线对齐
这个时候的参照物就由父元素的基线变为 同级元素的基线
二、当父元素没有设置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>
第一种 参照物是<span></span>标签
.c{width:600px;height:200px;background:red;}
.d{height:100%;vertical-align:middle;display:inline-block;margin-right:-5px;}
.c img{vertical-align:middle;}
<div class="c">
<img src="../images/bg1.png" />
<span class="d"></span>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>
可以看到效果是这一排全部垂直对齐 但是用span标签是可以看到后面的行内元素与图片之间有间隙的
可以考虑用-margin解决
第二种参照物是背景图片
.f{width:600px;height:200px;background:red;}
.g{height:100%;vertical-align:middle;width:0;}
.h{vertical-align:middle;margin-left:-5px;}
<div class="f" >
<img class="g" src="../images/bg1.png" />
<img class="h" src="../images/bg1.png" />
</div>
这个图片与左边有间隙 也可以用 margin:-5px;解决
vertical-align的垂直居中方法 大致分为两类
现在运用定位的办法解决
代码如下
.a1{width:600px;height:200px;background:red;position:relative;}
.a1 img{position:absolute;top:0;bottom:0;margin:auto;}
<div class="a1">
<img src="../images/bg1.png" />
</div>
这种方法的弊端是 父元素使用相对定位 还在文档流当中 但是子元素使用绝位定位 已经脱离文档流 父元素内如果要添加文本就会覆盖或者被绝对定位元素隐藏
这要注意图层顺序 但是他可以使用块级元素或者行内元素
行内元素是没有宽高的 但是像img这样的行内块级元素有其素有的宽高属性 可以写宽高 这是置换元素区别于其他行内元素的地方
用margin的负值 但是我试了图片
发现没用
.b1{width:600px;height:200px;background:red;}
.c1{height:50%;width:600px;}
.d1{margin-top:-75px;width:200px;height:150px;background:blue;}
<div class="b1">
<div class="c1"></div>
<div class="d1"></div>
</div>
- 2017.9.15 垂直居中的方法
- 垂直居中的方法
- 垂直居中的方法
- 垂直居中的方法
- 垂直居中的方法
- 文本垂直居中的方法
- div垂直居中的方法
- css垂直居中的方法
- css垂直居中的方法
- 垂直居中的一个方法
- 标签垂直居中的方法
- 图片垂直居中的方法
- div垂直居中的方法!!
- 页面垂直居中的两种方法
- 页面垂直居中的两种方法
- SWT标签Label垂直居中的方法
- Div图片垂直居中的方法
- div 垂直 居中的几种 方法
- Prim算法模板
- win10下安装tensorflow-gpu(python3.5.4)
- Linux命令
- matlab_private函数笔记
- jquery、layer 实现弹出层的打开、关闭
- 2017.9.15 垂直居中的方法
- Number_of_Longest_Increasing_Subsequence
- 构建自己的centos+jdk7+tomcat8的docker镜像
- js中Function类型
- 第一次用
- eclipse导入spring源码
- 阿里云的CentOS系统配置java web环境
- 本地服务器Tomcat安装及简单使用教程
- sql 临时表和表变量