css实现固定高度及未知高度文字垂直居中的完美解决方案
在工作当中我们经常碰到类似于"固定高度文字垂直居中及未知高度垂直居中问题",或者 "图片垂直居中问题",而我们最容易会想到使用表格来垂直居中,或者如果是单行文字的话使用height(高度)和line-height(行高)来解决,但是假如页面有多行文字的话 固定高度该怎么解决? 或者未知高度我们该用css怎么解决? 且兼容各个游览器!
一:单行文字垂直居中:
如果一个容器中只有一行文字的话,让他垂直居中比较简单 直接定义height(高度)和 line-height(行高)相等即可。
如:<div style="height:25px;line-height:25px;overflow:hidden">aa</div>
二:多行文本固定高度垂直居中:
1. 除IE7及IE7以下游览器 多行文本固定高度垂直居中的解决方案。
我们都知道 我们可以用表格的方式 实现文本垂直居中,同理 我们可以用css来模拟表格的方式垂直居中 vertical-align 属性只会对拥有valign特性的(X)HTML标签起作用,比如td等,但是对类似于span等这样的标签并不起作用,如果我们不考虑IE7及以下的话 我们可以用display:table 和 display:table-cell来模拟表格垂直居中。前者必须设置在父级元素上,后者必须设置在子元素上。比如 如下HTML代码:
<div class="wrapper">
<div class="content">content age</div>
</div>
相对应的css代码如下:
.wrapper{
height:400px;
display:table;
}
.content{
vertical-align:middle;
display:table-cell;
border:1pxsolid#FF0099;
background-color:#FFCCFF;
width:760px;
}
就可以实现除IE7及IE7以下的游览器支持文本垂直居中的问题!
2. 兼容IE6+ 火狐 google游览器的多行文本垂直居中的解决方案!
其实在标准游览器中 解决的方案如上,现在的问题我们该怎么解决IE7及以下的版本的问题了,我们可以考虑用定位的方式来解决,在IE6中对父元素进行定位后,如果再对子元素进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的高度,而从父元素继承来的定位高度)。
比如HTML代码如下:
<div class="wrap">
<div class="subwrap">
<div class="content">aaaaa</div>
</div>
</div>
我们可以对父级元素绝对定位 top:50%;然后在对子元素定位top:-50%,这样可以正好重叠了。css代码如下:
.wrap{
border:1pxsolid#FF0099;
background-color:#FFCCFF;
width:760px;
height:400px;
position:relative;
}
.subwrap{
position:absolute;
border:1px solid #000;
top:50%;
}
.content{
border:1pxsolid#000;
position:relative;
top:-50%;
}
所以针对上面的解决方案,我们可以稍微优化下 在标准游览器下 我们使用类似于 表格的方式来解决 但是对于像IE7及以下的版本 我们可以使用绝对定位的方式来解决。所以优化下 css代码如下:
.wrap{
display:table;
border:1pxsolid#FF0099;
background-color:#FFCCFF;
width:760px;
height:400px;
*position:relative;
overflow:hidden;
}
.subwrap{
vertical-align:middle;
display:table-cell;
*position:absolute;
*top:50%;
}
.content{
*position:relative;
*top:-50%;
}
三:多行文本 未知高度垂直居中的解决方案:
其实思路还是上面的一样 标准游览器版本下 采用类似于表格的方式来 垂直居中 解决,对于IE7 6下采用定位的方式来解决。如下代码
HTML:
<div class="wrapper">
<div class="subwrap">
<div class="content">
关于 CSS 的未知高度水平垂直居中问题<br />
</div>
</div>
</div>
css:
body {padding:;margin:;}
.content{border:1px solid red;width:500px;margin:0 auto;font-size:12px;line-height:1.8;}
/*标准游览器版本*/
html,body{height:100%;}
.wrapper{text-align:center;width:100%;height:100%;display:table;}
.subwrap{display:table-cell;vertical-align:middle;}
/*IE6*/
*html .wrapper{position:absolute;top:50%;width:100%;text-align:center;display:block;height:auto}
*html .subwrap{position:relative;top:-50%;text-align:center;}
/*IE7 可以合并 但是为了更好说明 没有合并*/
*+html .wrapper{position:absolute;top:50%;width:100%;text-align:center;display:block;height:auto}
*+html .subwrap{position:relative;top:-50%;text-align:center;}
css实现固定高度及未知高度文字垂直居中的完美解决方案的更多相关文章
- css实现未知高度水平垂直居中
页面设计中,经常需要实现元素的水平垂直居中,css实现的方法有很多(列如: margin: auto.position定位.css表达式calc().使用css预处理.table等都可以实现水平居中) ...
- 多行文字垂直居中(完美兼容chrome firefox IE6 7 8 9)
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- 用CSS如何实现单行图片与文字垂直居中
图片样式为 以下为引用的内容:.style img{vertical-align:middle;.....} 如果STYLE中有其它如INPUT或其它内联元素可写成 以下为引用的内容:.style i ...
- CSS之未知高度img垂直居中
测试代码如下:(能够水平居中,通过text-align:center实现) <style>.box{ width:800px;height:600px;border:2px solid # ...
- CSS中如何实现未知尺寸图片垂直居中
在曾经的 淘宝UED 招聘 中有这样一道题目: “使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中.” 当然出题并不是随意,而是有其现实的原因,垂直居中 ...
- div垂直居中的N种方法 单行/多行文字(未知高度/固定高度)
说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的 CSSHack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的 ...
- CSS解决未知高度垂直居中
尽管有CSS的vertical-align特性,但是并不能有效解决未知高度的垂直居中问题(在一个DIV标签里有未知高度的文本或图片的情况下). 标准浏览器如Mozilla, Opera, Safari ...
- [HTML]DIV+CSS 文字垂直居中
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- div+css文字垂直居中 解决左侧头像右侧姓名,姓名多换行后相对于头像仍居中显示
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
随机推荐
- jQuery上传插件Uploadify使用帮助
Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.它的功能特色总结如下: 支持单文件或多文件上传,可控制并发上传的文件数 在服务器端支持各种语言与之配合使用,诸如PHP, ...
- python实现简易数据库之三——join多表连接和group by分组
上一篇里面我们实现了单表查询和top N查询,这一篇我们来讲述如何实现多表连接和group by分组. 一.多表连接 多表连接的时间是数据库一个非常耗时的操作,因为连接的时间复杂度是M*N(M,N是要 ...
- c#字符串转换为日期,支持任意字符串
文章关键字: c#字符串转换为日期 c#日期转换字符串 字符串转换日期 字符串转换为date 整数转换为字符串 浮点数转换为字符串 字符串转换为时间 将字符串转换为时间 字符转 ...
- Kindeditor(JSP)& 上传目录不存在
一.基本配置 Kindeditor是一款富文本编辑器,作用跟博客园写文章用的这个编辑器一样,都是为了让文本加入各种各样的修饰元素. 使用方法如下,解压缩,把期中的ASP\NET\PHP文件夹都删除,然 ...
- 云计算之路-阿里云上:2014年6月12日16:14遭遇SLB故障
这是今天遇到的第3次故障,故障是首先被园友发现的,访问园子出现来自SLB的错误提示:400 Bad Request - Powered by Tengine. 查看Windows性能监视器发现,在故障 ...
- ECMAScript —— 学习笔记(思维导图版)
导图
- php_curl模拟登录有验证码实例
<?php/** * @author 追逐__something * @version $id */define('SCRIPT_ROOT',dirname(__FILE__).'/');$ac ...
- jQuery Mobile学习日记
本次主讲人是王思伦啦啦啦~ 框架特性 jQuery Mobile 以“Write Less, Do More”作为目标,为所有的主流移动操作系统平台提供了高度统一的 UI 框架:jQuery 的移动框 ...
- Java基础-内部类-为什么成员内部类可以无条件访问外部类
在此之前,我们已经讨论过了成员内部类可以无条件访问外部类的成员,那具体究竟是如何实现的呢?下面通过反编译字节码文件看看究竟.事实上,编译器在进行编译的时候,会将成员内部类单独编译成一个字节码文件,下面 ...
- 你也可以当面霸-Servlet与JSP的原理及特点
既然是面试系列,就是面试官和应聘者之间的对话.本文是采用一问一答的形式呈现给读者的,这样能有一个明确的考察点,不像理论知识那么枯燥. 01.什么是Servlet技术 Servlet是和平台无关的服务器 ...