两种方法实现CSS垂直居中

利用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;
  
  }
时间: 2024-10-13 10:46:42

两种方法实现CSS垂直居中的相关文章

实现icon和文字垂直居中的两种方法-(vertical-align and line-height)

方法一:vertical-align 在w3school定义:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐 百思不得骑姐 然后Google,反正在w3schools上面并没有找到定义 仅仅能写代码測试 而后个人理解,才作出如此解释> 该属性作用的对象:行内元素(inline,inline-block也有行内属性) 其它table-cell 经常使用属性值:top middle bottom 个人理解 个人觉得,普通情况下,这些字母自发"坐落"的这条线就是基线.然后两

网页设计制作CSS实现隔行换色两种方法

网页设计制作CSS实现隔行换色两种方法 2007-12-21 20:59:44  来源:网页教学网 网页设计制作,CSS实现隔行换色两种方法: 第一种方法: 以下为引用的内容:<style type="text/css">UL.myul1 LI{}</style><ul class="myul1"><li id="li1">111</li><li id="li2"

用CSS实现水平虚线的两种方法

用CSS样式实现水平虚线的两种方法方法一:<br><br><hr size="1" noshade="noshade" style="border:1px #cccccc dotted;"/><br>方法二:<br><br><div style="border-top:1px dashed #cccccc;height: 1px;overflow:hidden

CSS实现背景图尺寸不随浏览器大小而变化的两种方法

一些网站的首页背景图尺寸不随浏览器缩放而变化,本例使用CSS 实现背景图尺寸不随浏览器缩放而变化,方法一. 把图片作为background,方法二使用img标签.喜欢的朋友可以看看 一些网站的首页背景图尺寸不随浏览器缩放而变化,例如百度个人版的首页,缩放后背景图的尺寸并不改变:  再比如花瓣网( huaban.com ): 现在用CSS来实现这一效果. 首 先需要一张足够大尺寸的图片,上图百度背景图的尺寸为1600*1000px( 图片地址:http://4.su.bdimg.com/skin/

CSS实现自适应不同大小屏幕的背景大图的两种方法(转自简书)

CSS实现自适应不同大小屏幕的背景大图的两种方法 一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形的背景大图,而且背景图片不会随着滚动条滚动而滚动. 用CSS实现真的很简单很简单,下面我们来看一下第一种方法具体的代码: HTML代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <m

css:图标与文字对齐的两种方法

(好久没写博客了,这几个月的积累比较零碎,记在本子上,现在开始整理归类) 在平时写页面的过程中,常遇到要把小图标与文字对齐的情况.比如: 总结了两种方法,代码量都比较少. 第一种 对img设置竖直方向对齐为middle, <div> <img src="" class="heart"> <span>1169</span> <img src="" class="comment"

自制按钮图标的两种方法: image sprite和svg字体文件

用image sprite和svg字体文件这两种方法,都能够极大地减少小图形文件的数量, 从而减少服务器请求和带宽需求.提高网页的响应速度. 一.建立SVG字体文件 iconmoon 是一个在线工具,可以上传自己的SVG格式的图标文件,也可以从其中选择已有的图标, 定制出自己的字体文件.下载的结果包括了字体文件和一个简单的demo.html, (https://icomoon.io/app/#/select), (类似工具: https://glyphter.com) 二.用 image spr

div等块级元素居中的两种方法

以下两种方法是针对宽度确定的块级元素而言的 1.设置块级元素CSS属性为: margin: 0 auto: 即左右margin设置为auto. 2.设置块级元素的display为inline(此时要求块级元素包含内容,否则由于内联元素的高度设置不起作用,相当于高度为零,块级元素就无法被看到)或者inline-block. 该块状元素的父级元素CSS设置: text-align:center; 此时会将该块状元素看作text进行居中处理.

登录用到了两种方法GET和POST方法 用reqeusts实现

这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等.也就是说,客户端也做着一些本该由服务器来做的一些事情 这个错误第一反应是是不是新的这个gateway节点有问题啊?但是想想这是不可能的,因为并不是所有请求都不可以,而且找了gateway部门的同事问了下,也不存在对请求单独处理的逻辑. 认证的同时要抓取页面表单的其他input标签的name和value.joomla的较为简单,网站一般不会明文传输用户名和密码,遇到这种情况需要分析引入的js文件,模拟加密算法.