div水平居中与垂直居中的方法【摘自美浩工作室官方博客 】

大家往往在写页面中会遇到不固定宽和高的div如果水平和垂直都居中呢?在写css的时候经常遇到的一个问题,当div没有固定的宽度或者高度的时候,如何才能让div水平或者垂直居中显示。
如果div有固定宽度的话,用padding,margin都很容易实现。方法有很多种。不过经常遇到这种div没有固定的宽度高度的情况,我们就不能用margin,padding设置固定的距离了。这个问题让很多人头疼。而怎么样才能让这个div居中显示呢?其实这种情况解决的办法也是有很多种,js,css都可以实现。

1.先来看看宽度不固定的div如何设置水平居中:

<style type=“text/css”>
.container{width:500px;height:80px;background:#C2300B;margin-left:50px;padding-top:10px;text-align:center;}
.center{display:inline-block;border:2px solid #fff;}
.center{_display:inline;} /*针对ie6 hack*/
.center a{float:left;border:1px solid #fff;padding:5px 10px;margin:10px;color:#fff;text-decoration:none;}
</style>
<div class=“container”>
<div class=“center”><a href=“#”>1</a><a href=“#”>2</a><a href=“#”>3</a>
<div style=“clear:both”></div></div>  

无固定宽度的div水平居中代码要点:

这种div宽度不固定的情况,常见于分页处,由于分页不确定有多少页,所以用于分页的元素所在的容器宽度通常不是固定的。
父容器container加css属性 text-align:center;子容器center加css属性display:inline-block;
.center{_display:inline;} 为针对ie6的hack,针对ie6前面的display:inline-block;的作用是在ie下触发元素的layout,使其haslayout。

2.再看看高度不固定的div如何设置垂直居中:

<div id=“vc”><div id=“vci”><div id=“content”>
我们垂直居中了,我们水平居中了
</div></div></div>
<style type=“text/css”>
#vc { display:table; background-color:#C2300B; width:500px; height:200px; overflow:hidden; margin-left:50px; _position:relative; }
#vci { vertical-align:middle; display:table-cell;  _position:absolute; _top:50%; }
#content { color:#fff; border:1px solid #fff;  _position:relative; _top:-50%;  }
</style>  

无固定高度的div垂直居中代码要点:
父容器vc的css属性 display:table;overflow:hidden;
子容器vci的css属性 vertical-align:middle;display:table-cell;
针对ie6的hack,vci容器的 _position:absolute;_top:50%; 和content容器的 _position:relative; _top:-50%;


我们看看宽度高度不固定的div垂直居中和水平居中的实例:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
<title>无标题文档</title>
<style type=“text/css”>
#vc { display:table; background-color:#000; width:1200px; height:1000px; overflow:hidden; margin-left:50px; _position:relative; }
#vci { vertical-align:middle; display:table-cell; text-align:center; _position:absolute; _top:50%; _left:50%; }
#content { color:#fff; border:1px solid #fff; display:inline-block; _position:relative; _top:-50%; _left:-50%; }
</style>
<body>
<div id=“vc”><div id=“vci”><div id=“content”>
我们垂直居中了,我们水平居中了,真的是可以居中的吗,<br />
你信不信我反正是新了<br />
<br />
美浩工作室是一个90后团队,网站建设设计为一体的一个<br />
年轻化互联网团队!
</div></div></div>
</body>
</html> 

 

代码要点:
父容器vc的css属性 display:table;overflow:hidden;
子容器vci的css属性 vertical-align:middle;display:table-cell;
针对ie6的hack,vci容器的 _position:absolute;_top:50%; 和content容器的 _position:relative; _top:-50%;
如果不需要水平居中的话,需要注释掉vci容器的text-align:center;_left:50%;以及content的display:inline-block;_left:-50%;

那如果宽和高都固定了怎么水平垂直居中呢?且看下面代码:

宽度高度固定的div垂直居中和水平居中实例:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
<title>无标题文档</title>
<style type=“text/css”>
.guding{width:500px;height:400px;background:#000;margin-left:50px;position:relative;}
.gd{width:150px;height:100px;background:#fff;position:absolute;top:50%;left:50%;margin-top:-50px;margin-left:-75px;}
</style>
<body>
<div class=“guding”><div class=“gd”>美浩工作室测试固定高宽div<br />
居中了</div></div>
</body>
</html>  

代码要点
父容器要用相对定位position:relative;否则的话子元素会相对于浏览器窗口进行绝对定位。
子容器绝对定位,top:50%;left:50%;margin-top,margin-left的值取该容器高度,宽度的一半的负值。

时间: 2024-11-02 23:48:00

div水平居中与垂直居中的方法【摘自美浩工作室官方博客 】的相关文章

CSS中元素水平居中和垂直居中的方法

#CSS中水平居中和垂直居中的方法 一. 水平居中 1.行内元素(文本,图片等) 如果被设置元素为文本.图片等行内元素时,可以通过给父元素设置` text-align:center;` 来实现 2.定宽块级元素 可以通过设置“左右margin”值为“auto”来实现居中 常用的有 `margin:0 auto; ` 也可以写成`margin-left:auto;margin-right:auto;` 3.不定宽块级元素 有三种实现方法: * 加入 table 标签   为需要设置的居中的元素外面

未知高度定宽div水平居中及垂直居中(兼容ie6及其他牛逼浏览器)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>css</title> <style type="text/css"> * { margin:0; padding:0; list-style:none; } #vertical_box { width:100%; display:table; border:1

css样式水平居中和垂直居中的方法

水平居中(包含块中居中) 1. 定宽,左右margin为auto.(常规流块盒.弹性项目[不用定宽]) 例子:在box1盒子上设置宽,再设置margin:auto: <style> .box1 { width: 200px; height: 200px; background-color: black; margin: auto; } </style> <body> <div class="box-all"> <div class=

div水平居中和垂直居中

水平居中和垂直居中 水平居中包含两种情况:        块级元素的水平居中:margin:0px auto;        文字内容的水平居中:text-align: center;        垂直居中:        常见的单行文字的垂直居中可设置文字所在行的height与        行高样式属性一致,比如:        div{            width: 400px;            height: 400px;            line-height: 4

div盒子水平垂直居中的方法推荐

父盒子是position:relative 方法一:(宽高确定) div绝对定位水平垂直居中[margin 负间距], 方法二: (宽高确定) div绝对定位水平垂直居中[margin:auto实现绝对定位元素的居中], 兼容性:,IE7及之前版本不支持 方法三:(宽高不定) div绝对定位水平垂直居中[Transforms 变形] 兼容性:IE8不支持: 方法四:(宽高不定) flex布局(对父元素display:flex) 方法五: 父盒子display: table-cell和子盒子dis

div盒子水平垂直居中的方法

这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不近能实现绝对居中同样的效果,也支持联合可变高度方式使用.内容块定义transform: translate(-50%,-50%)  必须加上 top: 50%; left: 50%; 优点: 1.      内容可变高度 2.      代码量少 缺点: 1.      IE8不支持 2.      属性需要写浏览器厂商前缀 3.      可能干扰其他transf

div自适应水平垂直居中的方法

1.Flexbox布局: display:flex; justify-content:center; align-items:center; width:100%; 2.Bootstrap栅格布局 一共12格,分成3块,每块占4列.居中的内容写在中间的那一块. 3.圣杯/双飞翼(水平自适应居中的基础上) 第一步:居中的div写在最前面,width:100%撑满一整行.三个div都向左浮动float:left; <div class="main">Main</div&g

DIV文字水平垂直居中的方法

水平居中 text-align:center 垂直居中(vertical-align) vertical-align:middle; vertical-align时而没效果 然而真实使用的时候,我们会发现这个属性"时灵时不灵",有些情况下我们加了这个属性之后仍然不见img或者text有任何的变化.那是因为vertical-align只作用在inline-block或者inline,还有table-cell等元素内.同时这两种还有有所不同.vertical-align并不是在高度内居中,

CSS中实现水平居中和垂直居中的方法

水平居中 1.使用text-align实现居中 将该属性值设置为center,这是文本居中,但它却能兼容大多数浏览器,所以在某些情况下也自然必不可少. 2.负外边距 首先,创建一个包含居中元素的容器,然后将其绝对定位于相对页面左边边缘50%的位置.这样,该容器的左外边距将从页面50%宽度的位置开始算起.然后,将容器的左外边距值设置为负的容器宽度的一半.这样即可将该容器固定在页面水平方向的中点. 3.组合使用自动外边据和文本对齐 因为文本对齐居中方式有着良好的向下兼容性,且自动外边距方式也被大多数