文档章节

两种方法实现CSS垂直居中

lotozhou
 lotozhou
发布于 2015/11/27 09:50
字数 732
阅读 60
收藏 1

方法一:利用行高(line-height)定位

line-height通常是用于调节一段文字的行与行之间的距离,或者说两行文字之间的距离,如果行高是500px,那么每一行中的文字距离本行的顶部就是250px,如果将文字的行高设为500px,并且外面的容器的高度也为500px,同样可以实现垂直居中,但是用它来实现垂直居中,也是有缺点的,就是如果内容过多,文字就会跑到下一行,那么内容就不可能垂直居中了。

HTML代码:

<h1>Hi, I'm<span>Vertically Aligned</span> Within the H1</h1>

CSS代码:

body {

  1.          margin: 0;

  2.          padding: 0;

  3.          background: #1d1d1d;

  4.          font-size: 10px;

  5.          font-family: Verdana, Arial, Helvetica, sans-serif;

  6. }

  7. h1 {

  8.          font: 3em Georgia, "Times New Roman", Times, serif;

  9.          color: #fff;

  10.          height: 500px;

  11.          line-height: 500px;

  12.          text-align:center;

  13.          border: 10px solid #999;

  14. }

  15. h1 span {

  16.          font-weight: bold;

  17.          font-size:1.5em;

  18.          color: #fff000;

  19. }

  20. p {

  21.          font-size: 1.3em;

  22.          color: #999;

  23. }

  24. strong {

  25.          color: #fff;

  26. }


方法二:利用绝对定位

这个方法有个缺点我必须指出,就是外面的块状元素,必须指定高度,所以如果你在里面放动态的内容的话,后果会很糟糕滴~

HTML代码:

<div class="vert">

  1.         <h1>Hi, I'm<span>Vertically Aligned</span></h1>

  2.         <p>Abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. Acsi et fere similis <strong>Using</strong> augue <strong>absolute</strong> validus. Regula <strong>positioning</strong> eu jus vel, indoles fere iaceo ea similis. Velit praemitto nulla vel luctus secundum. </p>

  3. </div>

CSS代码:

这种用绝对定位来实现的垂直居中,取决与元素的宽度和高度,你可以用下面这两个公式来计算元素的左边距和上边距

元素的宽度/2 = 负左边距
元素的高度/2 = 负上边距

在这个例子中,我们就是这么计算的

.vert {

  1.         width: 580px;

  2.         height: 190px;

  3.         position: absolute;

  4.         top: 50%;

  5.         left: 50%;

  6.         margin: -95px 0 0 -290px;

  7. }

完整CSS代码:

body {

  1.         margin: 0;

  2.         padding: 0;

  3.         background: #1d1d1d;

  4.         font-size: 10px;

  5.         font-family: Verdana, Arial, Helvetica, sans-serif;

  6. }

  7. h1 {

  8.         font: 4em Georgia, "Times New Roman", Times, serif;

  9.         color: #fff;

  10.         border-bottom: 5px dotted #999;

  11.         margin: 0;

  12.         padding: 0 0 10px;

  13. }

  14. h1 span {

  15.         font-weight: bold;

  16.         display:block;

  17.         font-size:1.5em;

  18.         color: #fff000;

  19. }

  20. p {

  21.         font-size: 1.3em;

  22.         color: #999;

  23. }

  24. strong {

  25.         color: #fff;

  26. }

  27. .vert {

  28.         width: 580px;

  29.         height: 190px;

  30.         position: absolute;

  31.         top: 50%;

  32.         left: 50%;

  33.         margin: -95px 0 0 -290px;

  34. }


问题延伸

如果元素的外面还有一个父级元素,如果才能让元素垂直居中于父级元素内部?比如下面的代码,多了一个父级元素

<div class="container">

  1.          <div class="vert">

  2.           <h1>Hi, I'm Nested &<span>Vertically Aligned</span></h1>

  3.           <p>Abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. Acsi et fere similis <strong>Using</strong> augue <strong>absolute</strong> validus. Regula <strong>positioning</strong> eu jus vel, indoles fere iaceo ea similis. Velit praemitto nulla vel luctus secundum. </p>

  4.          </div>

  5. </div>

这时候,就必须在定义父级元素的CSS代码中加入position: relative;才能够使内部元素垂直居中于父级内部,代码如下:

.container {

  1.         position: relative;

  2.         height: 500px;

  3.         width: 800px;

  4.         border: 10px solid #999;

  5.         background: #000;

  6.         margin: 20px;

  7. }




© 著作权归作者所有

共有 人打赏支持
lotozhou
粉丝 8
博文 51
码字总数 51524
作品 0
苏州
程序员
如何让DIV水平和垂直居中

我们在设计页面的时候,经常要把DIV居中显示,而且是相对页面窗口水平和垂直方向居中显示,如让登录窗口居中显示。我们传统解决的办法是用纯CSS来让DIV居中。在本文中,我将给大家讲述如何用...

ForingY
2016/06/26
11
0
16种方法实现水平居中垂直居中

熟悉水平居中和垂直居中的方法, 不为别的, 就为用的时候能够信手拈来. 下面直接步入正题. 水平居中 若是行内元素, 给其父元素设置 text-align:center,即可实现行内元素水平居中. 若是块级元素...

tomzhangto
2017/12/19
0
0
CSS实现垂直居中的常用方法

在前端开发过程中,盒子居中是常常用到的。 其中,居中又可以分为水平居中和垂直居中。 水平居中是比较容易的,直接设置元素的margin: 0 auto就可以实现。 但是垂直居中相对来说是比较复杂一...

大猛猛
2016/03/07
61
1
CSS实现垂直居中的常用方法

作者:渔歌 网址:http://www.cnblogs.com/yugege/p/5246652.html 在前端开发过程中,盒子居中是常常用到的。其中 ,居中又可以分为水平居中和垂直居中。水平居中是比较容易的,直接设置元素...

数通畅联
2016/04/15
72
0
元素居中的N种方式

水平居中 <1>行内元素的居中 被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。 <2>块状元素的居中 当被设置元素为 块状元素 时用 text-align...

_YM雨蒙
2017/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安全管理标准

安全生产严重等级分类: 故障频次: 风险等级矩阵:

乔老哥
26分钟前
2
0
数据结构“树”的相关微视频

今天在腾讯视频上闲逛,然後发现一个叫“岚人”的用户上传了几段小视频,基本上都在5分钟以内,讲解了关于树的一些结构和算法。零代码,非常适合初学者入门。不过,对于老鸟来说,这也是非常...

Iridium
39分钟前
1
0
10-利用思维导图梳理JavaSE-Java 集合

10-利用思维导图梳理JavaSE-Java 集合 主要内容 1.Collection接口 2.Set接口 2.1.Set接口概述 2.2.HashSet类 2.3.TreeSet类 2.4.SortedSet接口 3.List接口 3.1.List接口概述 3.2.ArrayList类...

飞鱼说编程
50分钟前
4
0
活动推荐|互联网3.0与区块链新时代论坛(北京)

1 时间地点 **时间:**9月22日 14:00 - 18:00 地点:(北京海淀)西大街70号 3w咖啡 二层 2 活动详情 Harmony创始人Stephen及团队将介绍他们的区块链分片扩容技术。Stephen曾任Apple地图服务...

HiBlock
今天
1
0
如何优雅的删除Redis的大key

关于Redis大键(Key),我们从[空间复杂性]和访问它的[时间复杂度]两个方面来定义大键。前者主要表示Redis键的占用内存大小;后者表示Redis集合数据类型(set/hash/list/sorted set)键,所含有的...

IT--小哥
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部