博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
css实现固定高度及未知高度文字垂直居中的完美解决方案
阅读量:5223 次
发布时间:2019-06-14

本文共 2918 字,大约阅读时间需要 9 分钟。

    在工作当中我们经常碰到类似于"固定高度文字垂直居中及未知高度垂直居中问题",或者 "图片垂直居中问题",而我们最容易会想到使用表格来垂直居中,或者如果是单行文字的话使用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代码:

1 
2
content age
3

相对应的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代码如下:

1 
2
3
aaaaa
4
5

我们可以对父级元素绝对定位 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:

关于 CSS 的未知高度水平垂直居中问题

css:

body {
padding:0;margin:0;}.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;}

 

转载于:https://www.cnblogs.com/tugenhua0707/p/3454942.html

你可能感兴趣的文章
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
Hibernate中inverse="true"的理解
查看>>