元素垂直居中方法总结

以下总结了一些常见的元素垂直居中方法:

首先,基本的html和CSS为

#wrap{
  width: 320px;
  height: 160px;
  background: red;
}
#wrap>div{
  width: 50px;
  height: 50px;
  background: black;
  color: #fff;
}

<div id="wrap">
  <div class="v-center">我是前端狗</div>
</div>
  

方法:

/*方案一:绝对定位负margin50%方法*/
/*#wrap{position: relative;}*/
/*.v-center{
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -25px;
  margin-top: -25px;
}*/

/*方案一 优化版:利用calc支持单位运算,致命缺点UC这2货嗝屁了,国内移动端别想了*/
/*.v-center{
  position: absolute;
  top: calc(50% - 25px);
  left: calc(50% - 25px);
}*/

/*方案一 再优化版:利用translate
 * 注意transform需要加上webkit  UC QQ 自带浏览器在本手机上完美支持
 * 优点是不需要知道居中元素的高宽!!!
 * 这里translate的50%就是自己高宽的50%,而margin是以父亲的宽度为基准
 * */
/*.v-center{
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%,-50%);
}*/

 /*方案二: 脱离绝对定位,利用视口单位
 * 因为vh是视口单位,视口就是屏幕可视区域,也就是说,这种办法永远在屏幕居中
 * 居中弹层才考虑这种办法,并且UC还是不支持
 * 好吧,这种方法当我没说
 * */
/*.v-center{
  margin: 50vh auto 0;
  -webkit-transform: translateY(-50%);
}*/

/*方案三: table-cell
 * 请不要歧视table,table-cell在这个demo中支持度完美
 * 但是wrap此时不能使用margin了,就像每一种药都多少有点副作用一样。。
 */
/*#wrap{
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}
.v-center{
 display: inline-block;

}*/

/*方案四: 利用浮动元素
 * 支持度完美
 * 缺点是还是需要知道元素高度,以及hack味道很浓
 */
/*#wrap::before{
  content: ‘‘;
  float: left;
  height:50%;
  margin-bottom:-25px;
}
.v-center{
  clear:both;
  margin: auto;
}*/

/*方案五: flex
 *UC不支持
 * */
#wrap{
  display: -webkit-box;
  display: -webkit-flex;
  display: flex;
}
.v-center{
  margin: auto;
}

  最后有个好消息,QQ浏览器的X5即将退出历史舞台被chrome37替换,UC你看着办。

时间: 2024-10-29 10:45:37

元素垂直居中方法总结的相关文章

实现元素垂直居中的方法(补充)

之前发过一次<实现元素垂直居中的方法>的文章,今天又碰到了更简便的方法,就是利用transform属性,特别是当要居中的元素宽度,高度未知时非常好使,废话不多说,直接上demo: <!DOCTYPE html><html><head lang="zh-cn">    <meta charset="UTF-8">    <title>居中的方法</title>    <style

《转》CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

转自大地Dudy的CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳) 本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说的IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法: <!doctype html> <html lang="en&

css设置元素垂直居中的几个方法

最近有人问我怎么设置元素垂直居中?我....(这么基础的东西都不会?我有点说不出话来),  不过还是耐心的教了他几个方法,好吧教完他们,顺便把这些方法整理一下 第一种:通过设置成为表格元素的方式来实现垂直居中 (适应于父级有固定高度的元素) 第一步,写html代码,如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>元素垂直居中</title&

&lt;转载&gt;使CSS文字图片div元素居中方法之水平居中的几个方法

文字居中,文字垂直居中水平居中,图片居中,图片水平居中垂直居中,块元素垂直居中?当我们在做前端开发是时候关于css居中的问题是很常见的.情 况有很多种,不同的情况又有不同的解决方式.水平居中的方式解决的时候相对来说通过css比较容易设置,垂直居中相对比较棘手. 先来说一下水平居中的不同情况与不同解决方法吧. 1文本,图片等行内元素的水平居中方法呢比较简单.直接给父元素设置一个text-align:centent属性就可以实现元素的水平居中了. 2 确定宽度的块级元素水平居中怎么设置呢?设置方法也

最常用的css垂直居中方法

css垂直居中一直以来都是一个被大家说烂了的话题,翻来覆去的炒.不过说实话,正是因为css没有提供标准的垂直居中方法(不过在css3中已经有了相关规范),所以大家才会对它进行专门的研究.这研究来研究去,垂直居中的方法比水平居中都要多了.但又说回来,各种方法人云亦云,不同的方法对于不同层次的人理解起来又有不同,用处也不同.本文结合技术实现的复杂度.理解性的难易度.以及大多数人的接触顺序对常用的垂直居中方法进行分等级的系统讲解,希望能对读者的工作和学习有所帮助. OK,闲话扯了一堆,下面开始正文,先

css-实现元素垂直居中对齐

原文:css-实现元素垂直居中对齐 css-实现元素/元素内容,垂直居中对齐 一.单行内容的垂直居中(line-height:行高方法) 只考虑单行是最简单的,无论是否给容器固定高度,只要给容器设置 line-height 和 height,并使两值相等,就可以了. 缺点:1:这种方法局限性太大,只有单行文本的元素才适用,所以在多行元素中是不能使用这种方法的了.         2 :IE中不支持<img>等的居中. 优点:适合在所有浏览器,没有足够空间时,内容不会被切掉,同时支持块级和内联元

CSS图片垂直居中方法

让div里面的多行文本垂直居中的方法: div{height:100px;width:100px;border:solid 1px red;text-align:center; display:table-cell;vertical-align:middle} 下面是网上好不容易找的多种办法: 看到问此问题的很多,所以花点时间整理下,欢迎大家提意见,做补充修改,谢谢!/*lesliezmz整理的方法 2010-01-19*/当writing-mode为tb-rl 时,文档流是从上到下,从右到左书

CSS 使元素垂直居中

重点内容:负外边距,绝对垂直居中,box 拓展点:设置inline-block,使元素居中 1.实现文字居中对齐 水平居中:text-align:center 垂直居中:设置line-height和height一样 2.实现元素居中对齐 使用元素定位,并移动元素  方法1:负外边距法(兼容IE) 原理:使用绝对定位,定位元素left和top值都为50%:然后使用margin移动负的元素半宽高 条件:需要知道当前元素的宽高. 代码: #content1{ position: relative; w

关于使用绝对定位使元素垂直居中的问题

今天学习中遇到了使元素垂直居中的问题,网上一搜至少有8种不同的方法,我只试了使用绝对定位的方法.这一试不要紧,一试就懵逼了.下面我把我遇到的问题说一下. 我刚开始是这么试的: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>one</title> </head> <style rel="stylesheet&qu