CSS让一个元素水平垂直居中

第一种方法:用margin+绝对定位的方式

兼容性:IE6,IE7下完全失效

HTML代码:

<div id="container">
		<div class="center"></div>
  </div>

CSS代码:

#container{
	  /*基本样式*/
	  width:500px;
	  height:500px;
	  background:#fee;
	  /*定位方式*/
	  position:relative;
	}
	 .center{
	  /*基本样式*/
	  width:200px;
	  height:200px;
	  background:#aa0;
	  /*水平居中*/
	  margin:auto;
	  /*垂直居中*/
	  position:absolute;
	  top:0;
	  bottom:0;
	  left:0;
	  right:0;
	}

效果:

第二种方法:用inline-block和table-cell

兼容性:IE6,IE7下垂直居中失效

CSS代码:

#container{
	  /*基本样式*/
	  width:500px;
	  height:500px;
	  background:#fee;
	  /*display*/
	  display:table-cell; 
	  text-align:center;
	  vertical-align:middle;
	}
	 .center{
	  /*基本样式*/
	  width:200px;
	  height:200px;
	  background:#aa0;
	  /*display:通过转为行内块配合父级元素使用text-align实现水平居中*/
	 display:inline-block;
	}

第三种方法:用纯position

兼容性:所有浏览器都支持,包括老IE。缺陷:必须明确宽高的固定值

CSS代码:

#container{
	  /*基本样式*/
	  width:500px;
	  height:500px;
	  background:#fee;
	  /*定位方式*/
	  position:relative;
	}
	 .center{
	  /*基本样式*/
	  width:200px;
	  height:200px;
	  background:#aa0;
	  /*定位方式*/
	  position:absolute;
	  top:150px; /*(父元素的宽高-子元素的宽高)/2*/
	  left:150px;
	}

第四种方法:用position和transform

兼容性:一看到CSS3属性就知道了IE8及以下浏览器都不支持,个人认为这种方法有些鸡肋

CSS代码:

#container{
	  /*基本样式*/
	  width:500px;
	  height:500px;
	  background:#fee;
	  /*定位方式*/
	  position:relative;
	}
	 .center{
	  /*基本样式*/
	  width:200px;
	  height:200px;
	  background:#aa0;
	  /*定位方式*/
	  position:absolute;
	  top:50%;
	  left:50%;
	  transform:translate(-50%, -50%);
	  -webkit-transform:translate(-50%, -50%);
	}

第五种方法:用display:flex和margin

兼容性:IE9及以下版本垂直居中都失效,由于代码简单,推荐移动端使用

CSS代码:

#container{
	  /*基本样式*/
	  width:500px;
	  height:500px;
	  background:#fee;
	  /*display*/
	  display:flex;
	}
	 .center{
	  /*基本样式*/
	  width:200px;
	  height:200px;
	  background:#aa0;
	  /*居中*/
	  margin:auto;
	}

第六种方法:用display:flex;和align-items:center;和justify-content:center;

兼容性:IE9及以下版本水平垂直居中完全失效,推荐移动端使用

CSS代码:

#container{
	  /*基本样式*/
	  width:500px;
	  height:500px;
	  background:#fee;
	  /*display*/
	  display:flex;
	  align-items:center;
	  justify-content:center;
	}
	 .center{
	  /*基本样式*/
	  width:200px;
	  height:200px;
	  background:#aa0;
	}

可下载掘金App,搜索更多更全的方法

时间: 2024-07-29 19:32:07

CSS让一个元素水平垂直居中的相关文章

公司的一个面试题:如何用css让一个容器水平垂直居中?

原文:公司的一个面试题:如何用css让一个容器水平垂直居中? <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <style type="text/css"> .div1{ width: 100px; height: 100px; bo

逆战班第三周 定位实现一个元素水平垂直居中的方法

我们在写页面的时候,经常会遇到一种需求,就是想让一个元素水平垂直居中,这种需求分两种情况,一种是相对于父元素,一种是相对于浏览器窗口,这两种情况都有很多种解决方法,但是我们今天就只说怎样用定位去解决元素水平垂直居中的问题 首先说第一种,子元素相对于父元素水平垂直居中 假设我们知道这个子元素和父元素的宽高,比如父元素宽高都是400px,子元素都是200px,为了让他们看起来都比较直观,我们给他一个背景色,在给父元素一个margin100px: 看到的效果就是这样 因为是相对与父元素垂直水平居中,那

如何用css让一个容器水平垂直居中

直接上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <style type="text/css"> .div1{ width: 100px; height: 100px; border: 1px solid #000000;

让一个元素水平垂直居中的几种方法

1.方法一——margin负 div.box{ weight:200px; height:400px; position:absolute; <!--设置元素的定位位置,距离上.左都为50%--> left:50%; top:50%; <!--设置元素的左外边距.上外边距为宽高的负1/2--> margin-left:-100px; margin-top:-200px; } 优点:兼容性好; 缺点:必须已知元素的宽高: 2.方法二——translate负50% div.box{ w

用css让一个容器水平垂直居中

阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: center;justify-content: center 方法五:display:flex;margin:auto 方法六:纯position 方法七:兼容低版本浏览器,不固定宽高 总结 这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总结一下. 这种方法比较多,本文只

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

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

CSS元素水平垂直居中方法总结(方法主要来自大漠以及张鑫旭博客)

以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法:<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"&g

CSS实现元素水平垂直居中—喜欢对称美,究竟是谁的错

在CSS中对元素进行水平居中是非常简单的:如果它是一个行内元素,就对它的父元素应用text-align:center;如果它是一个块级元素,就对它自身应用margin:auto.然而要对一个元素进行垂直居中,就有点束手无策了,本文介绍了几种常用的垂直居中方法以供参考! 一.表格布局法二.基于行内块的解决方案(来自于第二篇参考文献)三.基于绝对定位的解决方案1.绝对定位+负的外边距2.绝对定位+margin:auto3.绝对定位+transform反向偏移四.基于视口单位的解决方案(仅适用于基于视

css 实现元素水平垂直居中总结5中方法

个人总结,如有错误请指出,有好的建议请留言.o(^▽^)o 一.margin:0 auto:text-align:center:line-height方法 1 <div id="divAuto">margin,text-align;水平居中</div> 1 /* 2 margin:0 auto; 设置块元素(或与之类似的元素)的水平居中 3 text-align:center;设置文本或img标签等一些内联对象(或与之类似的元素)的水平居中 4 line-hei