在样式布局中,我们经常碰到需要将元素居中。通过css实现元素的水平居中较为简单:对文本,只需要对其父级元素设置text-align: center;,而对div等块级元素,只需要设置其left和right的margin值为auto。要实现元素的垂直居中,有人会想到css中的vertical-align属性,但是它只对拥有valign特性的元素才生效,例如表格元素中的

、、等,而像

、这样的元素是没有valign特性的,因此使用vertical-align对它们不起作用。因此我们需要通过别的方法去实现元素的垂直居中,下面我总结了几种了常用垂直居中方法。

单行文本垂直居中

对于单行文本,我们只需要将文本行高(line-height)和所在区域高度(height)设为一致即可:

XML/HTML Code复制内容到剪贴板

这是单行文本垂直居中

/*css代码*/

#div1{

width: 300px;

height: 100px;

margin: 50px auto;

border: 1px solid red;

line-height: 100px; /*设置line-height与父级元素的height相等*/

text-align: center; /*设置文本水平居中*/

overflow: hidden; /*防止内容超出容器或者产生自动换行*/

}

多行文本垂直居中

多行文本垂直居中分为两种情况,一个是父级元素高度不固定,随着内容变化;另一个是父级元素高度固定。

父级元素高度不固定

父级高度不固定的时,高度只能通过内部文本来撑开。这样,我们可以通过设置内填充(padding)的值来使文本看起来垂直居中,只需设置padding-top和padding-bottom的值相等:

XML/HTML Code复制内容到剪贴板

这是多行文本垂直居中,

这是多行文本垂直居中,

这是多行文本垂直居中,

这是多行文本垂直居中。

/*css代码*/

#div1{

width: 300px;

margin: 50px auto;

border: 1px solid red;

text-align: center; /*设置文本水平居中*/

padding: 50px 20px;

}

父级元素高度固定

本文一开始就提到css中的vertical-align属性,但是它只对拥有valign特性的元素才生效,结合display: table;,可以使得div模拟table属性。因此我们可以设置父级div的display属性:display: table;;然后再添加一个div包含文本内容,设置其display:table-cell;和vertical-align:middle;。具体代码如下:

XML/HTML Code复制内容到剪贴板

这是固定高度多行文本垂直居中,

这是固定高度多行文本垂直居中,

这是固定高度多行文本垂直居中,

这是固定高度多行文本垂直居中。

/*css代码*/

#outer{

width: 400px;

height: 200px;

margin: 50px auto;

border: 1px solid red;

display: table;

}

#middle{

display:table-cell;

vertical-align:middle;

text-align: center; /*设置文本水平居中*/

width:100%;

}

但是,在IE7中显示效果如下:

这是因为IE7及以下的版本并不能很好的支持display:table和display:table-cell属性,当然,如果你不考虑IE7以下的版本的浏览器,上述方法是可以实现垂直居中。如果把IE7及以下版本考虑进去,我们可以通过用到CSS hack的知识来设置针对不同浏览器的属性。

XML/HTML Code复制内容到剪贴板

这是固定高度多行文本垂直居中(兼容IE7),

这是固定高度多行文本垂直居中(兼容IE7),

这是固定高度多行文本垂直居中(兼容IE7),

这是固定高度多行文本垂直居中(兼容IE7)。

/*css代码*/

#outer{

width: 400px;

height: 200px;

margin: 50px auto;

border: 1px solid red;

display: table;

*position:relative;  //兼容IE7及以下版本

}

#middle{

display:table-cell;

vertical-align:middle;

text-align: center; /*设置文本水平居中*/

width:100%;

*position:absolute;   //兼容IE7及以下版本

*top:50%;

}

#content {

*position:relative;  //兼容IE7及以下版本

*top:-50%;

}

子div垂直居中

1、根据子div具体大小设置偏移

如果子div固定大小,设定水平和垂直偏移父元素的50%,再根据实际长度将子元素向上和向左挪回一半大小

XML/HTML Code复制内容到剪贴板

子div(固定大小)垂直居中

/*css代码*/

#outer{

background-color: #13CDF4;

width: 300px;

height: 200px;

position: relative;

}

#middle{

background-color: #E41627;

width: 100px;

height: 100px;

margin: auto;

position: absolute;

left: 50%;

top: 50%;

margin-left: -50px;

margin-top: -50px;

}

该方法兼容IE7、IE6,但是只针对子div大小的固定的情况下才有效。大部分时候,子div的大小是不固定的,下面介绍子div大小不固定时的方法。由于显示效果与这个效果基本一样,效果图就不一一贴出来,读者可以自行复制代码验证。

2、利用translate

针对第一种方法中水平和垂直偏移父元素的50%后,不设置margin值,而是利用除css3中的transform属性设置translate的值,css代码部分改成如下:

CSS Code复制内容到剪贴板

#middle{

background-color:#E41627;

width:100px;

height:100px;

margin:auto;

position:absolute;

left: 50%;

top: 50%;

transform: translateX(-50%) translateY(-50%);

-webkit-transform: translateX(-50%) translateY(-50%);

}

这种方法需要注意transform是css3中的属性,使用时注意浏览器的兼容性,IE9之前的版本不支持。

3、利用绝对布局absolute

XML/HTML Code复制内容到剪贴板

利用绝对定位实现子div大小不固定垂直居中

/*css代码*/

#outer{

background-color: #13CDF4;

width: 300px;

height: 200px;

position: relative;

}

#middle{

background-color: #E41627;

width: 100px;   //子div大小可随意设置

height: 100px;

margin: auto;

position: absolute;

top: 0;left: 0;right: 0;bottom: 0;

}

该方法不兼容IE7、IE6

4、利用vertical-align

XML/HTML Code复制内容到剪贴板

利用vertical-align属性实现子div大小不固定垂直居中

/*css代码*/

#outer{

background-color: #13CDF4;

width: 300px;

height: 200px;

display: table-cell;

vertical-align: middle;

}

#middle{

background-color: #E41627;

width: 100px;

height: 100px;

margin: 0 auto;

}

这种方法是将div转变成table-cell显示,然后通过vertical-align: middle;再设置其子元素垂直居中,这种方法和上面设置父级元素高度固定时多行文本居中的方法一样,所以这种方法也不能兼容IE7、IE6。如果需要兼容IE7、IE6,可以参照上面的代码,上面设置父级元素高度固定时多行文本居中的方法其实就是将最里面的div垂直居中。这里我就不重述了。

5、利用display: flex

XML/HTML Code复制内容到剪贴板

利用display: flex实现子div大小不固定垂直居中

/*css代码*/

#outer{

background-color: #13CDF4;

width: 300px;

height: 200px;

display: flex;

justify-content: center;/*实现水平居中*/

align-items:center; /*实现垂直居中*/

}

#middle{

background-color: #E41627;

width: 100px;

height: 100px;

}

这种方法只需要在父级div中加上这三句话就行,但是在IE中兼容性不好,IE9及以下IE浏览器版本都不支持。

以上是我总结的一些常用到的垂直居中的设计方法,大家可以根据自己的需要选择合适的设计方式。

原文链接:http://blog.csdn.net/u014607184/article/details/51820508

html中div文字垂直居中显示,CSS文本和div垂直居中方法总结相关推荐

  1. html div文字竖向显示,css怎么让文字竖着?

    在网页编写时会遇到需要设置文字竖着排列的情况,我们可以通过css设置文字竖着排列,那么使用css该如何设置文字竖着排列呢?小明我们就来看一下css设置文字竖着排列的方法吧. css设置文字竖着排列的方 ...

  2. html中label如何居中,怎么让label标签中的文字居中显示

    label标签如何使用 html页码中的 label标签使用方法: 其实很多人都一样,喜欢的不是学校,不是班级,而是坐在教室的那群人 请点击文本标记之一,就可以触发相关控件: HTML代码中的labe ...

  3. CSS 文本字体颜色设置方法。

    这篇文章主要介绍了CSS 文本字体颜色设置方法(CSS color),需要的朋友可以参考下 一.认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些:网页颜色规定规范. 1.常 ...

  4. CSS 文本字体颜色设置方法(CSS color)

    转自:微点阅读  https://www.weidianyuedu.com 这篇文章主要介绍了CSS 文本字体颜色设置方法(CSS color),需要的朋友可以参考下 一.认识CSS 颜色(CSS c ...

  5. 串口显示数字文本的巧妙使用方法3进阶版

    如何去除(串口显示数字文本的巧妙使用方法2进阶版)数字前面的0 如下图 去除方法还没写哈哈哈

  6. html div阴影四周均匀css写法 html div 圆角幅度 写法

    html div阴影四周均匀css写法 html div 圆角幅度 写法 border-radius: 10px

  7. css如何设置文本垂直居中显示,css中怎么设置文本居中?css文本垂直居中的设置方法...

    在网页设计的过程中,有时候可能为了布局美观可能需要让文本居中,那么,怎么设置文本居中呢?本篇文章将给大家介绍关于css设置文本垂直居中的方法. 首先我们要知道通过css实现元素的水平居中较为简单:对文 ...

  8. 如何让div中的文字只显示一行,多余的文字隐藏并加上省略号(超链接形式)...

    写页面的时候遇到了一个小小的问题,如何让div中一行超链接文字只显示一行,多余的文字隐藏并加上省略号,悬浮时隐藏的文字显示出来?解决问题时发现了css3的一个新标签  text-overflow  , ...

  9. html5怎么让图片垂直居中显示,css中如何实现图片垂直居中显示?

    css中如何实现图片垂直居中显示?下面本篇文章就来给大家介绍一下使用CSS实现图片垂直居中的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 一.使用flex实现图片垂直居中 利 ...

最新文章

  1. 李开复看2019投资趋势:最坏的时代将酝酿最伟大的公司
  2. 计算机信息管理和计算机及应用,计算机信息管理及应用浅析
  3. 如何快速构建服务发现的高可用能力
  4. 给所有开发人员的 11 条忠告(第 4 条亮了)
  5. matlab dpsk,2DPSK调制与解调matlab(最新整理)
  6. xp可以装java6不_XP系统XMind 6中缺失安装java环境
  7. python输出excel能够识别的utf-8格式csv文件
  8. Mysql插入中文时错误:ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column
  9. php日期时间戳转换
  10. systrace抓取方式
  11. 把那个读书的家伙拉出来游坛示众
  12. 图像处理-Opencv入门(3)-图像的基本运算(1)-代数运算
  13. rewrite 功能
  14. Qt httpserver 理解与使用
  15. 使用VS进行debug时的工作目录位置
  16. FCPX插件-6组优雅简约广告促销图文展示介绍动画 Unique Promo
  17. 爬取新浪微博数据+新浪微博模拟登录+mysql+python
  18. 20、弱电综合布线清单如何计算
  19. (已更新)运势运程小程序v1.2.0 功能模块+微信小程序+前端+后端+新增每日星座卡片
  20. 微波炉不同功率的加热时间转换

热门文章

  1. 手机发热怎么办?7招降温方法
  2. 到底什么是分布式锁,进程锁,线程锁
  3. v64.06 鸿蒙内核源码分析(索引节点) | 谁是文件系统最重要的概念 | 百篇博客分析OpenHarmony源码
  4. Spring-Data-Redis--解决java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx
  5. 大数据开发工程师的面试题
  6. There is no Action mapped for namespace [/] and action name [Demo12Action] associated with context p
  7. docker版本包 乌班图_Ubuntu20.04安装docker
  8. Nginx启动只有master进程而没有worker进程
  9. 第五人格pcmac_第五人格求生者人格天赋 人类人格天赋系统解析
  10. 幼儿园科学教案计算机,大班科学教案:认识电子计算器.doc