利用CSS让元素垂直居中是个很头疼的问题,这里就介绍两种简单实用的方法

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

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

HTML代码:
<h1>Hi, I'm<span>Vertically Aligned</span> Within the H1</h1>
CSS代码:
body {
margin: 0;
padding: 0;
background: #1d1d1d;
font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
h1 {
font: 3em Georgia, "Times New Roman", Times, serif;
color: #fff;
height: 500px;
line-height: 500px;
text-align:center;
border: 10px solid #999;
}
h1 span {
font-weight: bold;
font-size:1.5em;
color: #fff000;
}
p {
font-size: 1.3em;
color: #999;
}
strong {
color: #fff;
}

方法二:利用绝对定位

这个方法有个缺点我必须指出,就是外面的块状元素,必须指定高度,所以如果你在里面放动态的内容的话,后果会很糟糕滴~
HTML代码:
<div class="vert">
<h1>Hi, I'm<span>Vertically Aligned</span></h1>
<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>
</div>
CSS代码:
这种用绝对定位来实现的垂直居中,取决与元素的宽度和高度,你可以用下面这两个公式来计算元素的左边距和上边距
元素的宽度/2 = 负左边距
元素的高度/2 = 负上边距
在这个例子中,我们就是这么计算的
.vert {
width: 580px;
height: 190px;
position: absolute;
top: 50%;
left: 50%;
margin: -95px 0 0 -290px;
}
完整CSS代码
body {
margin: 0;
padding: 0;
background: #1d1d1d;
font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
h1 {
font: 4em Georgia, "Times New Roman", Times, serif;
color: #fff;
border-bottom: 5px dotted #999;
margin: 0;
padding: 0 0 10px;
}
h1 span {
font-weight: bold;
display:block;
font-size:1.5em;
color: #fff000;
}
p {
font-size: 1.3em;
color: #999;
}
strong {
color: #fff;
}
.vert {
width: 580px;
height: 190px;
position: absolute;
top: 50%;
left: 50%;
margin: -95px 0 0 -290px;
}

问题延伸

如果元素的外面还有一个父级元素,如果才能让元素垂直居中于父级元素内部?比如下面的代码,多了一个父级元素
<div class="container">
<div class="vert">
<h1>Hi, I'm Nested &<span>Vertically Aligned</span></h1>
<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>
</div>
</div>
这时候,就必须在定义父级元素的CSS代码中加入position: relative;才能够使内部元素垂直居中于父级内部,代码如下:
.container {
position: relative;
height: 500px;
width: 800px;
border: 10px solid #999;
background: #000;
margin: 20px;
}

利用CSS让元素垂直居中的两种实现方法相关推荐

  1. 利用innerHTML实现隐显效果-两种实现方法

    最近对JavaScript非常感兴趣,可能因为是它和JAVA差不多吧.原来看到一些网页上的隐显效果,心理面真是佩服,心想自己能够做就爽了.现在对innerHTML有一点的了解,做这个东西就相对简单了, ...

  2. 利用CSS伪元素写三角形

    在做一些网页布局的时候,经常会遇到各种方向的三角形,常常令人头疼,今天给大家介绍一些利用CSS伪元素写各个方向三角形的方法 目录 一.CSS伪元素写三角形 1.向右的三角形 2.向上的三角形 3.向下 ...

  3. html怎么把元素垂直居中显示,分享html css元素垂直居中的几种方法

    元素垂直居中的几种方法: 方法一:设置height和line-height 在CSS中,line-height 属性设置两段段文本之间的距离,也就是行高,如果我们把一段文本的line-height设置 ...

  4. 用 CSS 实现元素垂直居中,有哪些好的方案?

    DIV居中的经典方法 1. 实现DIV水平居中 设置DIV的宽高,使用margin设置边距0 auto,CSS自动算出左右边距,使得DIV居中. 1 div{ 2 width: 100px; 3 he ...

  5. js操作元素:改变元素内容有两种方式: interText 和 innerHTML的区别, 常用的元素的属性操作, 仿电脑系统时间问好 ,表单元素的属性操作 ,案例:仿京东显示隐藏密码 ,样式属性操作

    文章目录 操作元素 改变元素内容有两种方式: interText 和 innerHTML的区别 常用的元素的属性操作 案例:仿电脑系统时间问好 表单元素的属性操作 案例:仿京东显示隐藏密码 样式属性操 ...

  6. 元素垂直居中的五种方式

    元素内容垂直居中 本文介绍: 元素标签内的内容垂直居中有两种思路, 第一种思路是将元素内容利用行高或者内边距padding属性设置 第二种思路是子盒子在父盒子中垂直居中,利用flex布局或者posit ...

  7. css实现水平垂直居中的七种方式

    css实现水平垂直居中的七种方式 一.使用grid布局 二.使用flex布局 三.使用定位+外边距 四.使用定位+平移 五.使用外边距 + 平移 六.使用文本对齐 + 行高 七.使用表格单元 一.使用 ...

  8. html如何将图片做成六边形,css画正六边形的两种方法

    说下两种css 制作正六边形的方法. 先看一下结果: 在之前要先了解一下正六边形内角和边的关系,正六边形的每个内角是60deg,如图(√3其实是根号3): 方法一:原理把正六边形分成三部分,左中右分别 ...

  9. html中怎么写正六边形,如何用css画正六边形?用css画正六边形的两种方法(代码实例)...

    本章给大家介绍如何用css画正六边形?用css画正六边形的两种方法(代码实例).有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在之前要先了解一下正六边形内角和边的关系,正六边形的每个 ...

最新文章

  1. Python:cv2.imread读入图片后返回NoneType的解决方案
  2. 浅谈单片机中变量访问的互斥
  3. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
  4. Redis 面试题补充与汇总
  5. 残疾人软件开发_组织如何使残疾人更具包容性
  6. 文本处理工具--正则表达式
  7. O-矩阵相乘-Warshall算法详解
  8. lintcode:1-10题
  9. 动漫头像1000张萌妹子图片,可以做高清头像壁纸
  10. 关于游戏运营策划管理相关必备知识
  11. okhttp3+retrofit2+rxjava2使用
  12. 为什么计算机不显示桌面工具栏,笔记本电脑开机后不显示桌面图标或任务栏怎么解决...
  13. Android8.0 页面崩溃问题
  14. Turbo-rack技术背景及简介
  15. Fluent 操作入门实例-从建模到计算结果可视化
  16. 筱筱看博客(微信小程序、Lin-ui组件、vant Weapp)
  17. 长沙银河计算机中等职业学校图片,长沙银河中等职业学校
  18. 【附源码】计算机毕业设计SSM人力资源管理系统
  19. Linux中Uboot详解
  20. 每个月6800张考勤表,用python几秒钟解决!

热门文章

  1. VTK:提取可见细胞用法实战
  2. OpenCASCADE:Modeling Data之边界框
  3. wxWidgets:wxDialog概述
  4. boost::lambda模块实现boost::function 进行测试
  5. boost::graph模块实现dijkstra算法的测试程序
  6. GDCM:gdcm::ImageFragmentSplitter的测试程序
  7. GDCM:gdcm::FileExplicitFilter的测试程序
  8. Boost::context模块callcc的回声测试程序
  9. Boost:std ::bind与Boost的_1绑定的测试程序
  10. DCMTK:DcmAttributeMatching的单元测试