用css让元素垂直居中的方法
发布时间:2016-10-25 | 发布者: | 浏览次数: 次
[size=3]利用css让元素垂直居中是个很头疼的问题,这里就介绍两种简单实用的方法
[/size]
[size=4]方法一:利用行高(line-height)定位[/size]
line-height通常是用于调节一段文字的行与行之间的距离,或者说两行文字之间的距离,如果行高是500px,那么每一行中的文字距离本行的顶部就是250px,如果将文字的行高设为500px,并且外面的容器的高度也为500px,同样可以实现垂直居中,但是用它来实现垂直居中,也是有缺点的,就是如果内容过多,文字就会跑到下一行,那么内容就不可能垂直居中了。
html代码:
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;
}
[size=4]方法二:利用绝对定位
[/size]
先来看看效果,查看演示
这个方法有个缺点我必须指出,就是外面的块状元素,必须指定高度,所以如果你在里面放动态的内容的话,后果会很糟糕滴~
html代码:
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;
}
[size=4]问题延伸
[/size]
如果元素的外面还有一个父级元素,如果才能让元素垂直居中于父级元素内部?比如下面的代码,多了一个父级元素
这时候,就必须在定义父级元素的css代码中加入position: relative;才能够使内部元素垂直居中于父级内部,代码如下:
.container {
position: relative;
height: 500px;
width: 800px;
border: 10px solid #999;
background: #000;
margin: 20px;
}
[/size]
[size=4]方法一:利用行高(line-height)定位[/size]
line-height通常是用于调节一段文字的行与行之间的距离,或者说两行文字之间的距离,如果行高是500px,那么每一行中的文字距离本行的顶部就是250px,如果将文字的行高设为500px,并且外面的容器的高度也为500px,同样可以实现垂直居中,但是用它来实现垂直居中,也是有缺点的,就是如果内容过多,文字就会跑到下一行,那么内容就不可能垂直居中了。
html代码:
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;
}
[size=4]方法二:利用绝对定位
[/size]
先来看看效果,查看演示
这个方法有个缺点我必须指出,就是外面的块状元素,必须指定高度,所以如果你在里面放动态的内容的话,后果会很糟糕滴~
html代码:
abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. acsi et fere similis using augue absolute validus. regula positioning eu jus vel, indoles fere iaceo ea similis. velit praemitto nulla vel luctus secundum.
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;
}
[size=4]问题延伸
[/size]
如果元素的外面还有一个父级元素,如果才能让元素垂直居中于父级元素内部?比如下面的代码,多了一个父级元素
abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. acsi et fere similis using augue absolute validus. regula positioning eu jus vel, indoles fere iaceo ea similis. velit praemitto nulla vel luctus secundum.
这时候,就必须在定义父级元素的css代码中加入position: relative;才能够使内部元素垂直居中于父级内部,代码如下:
.container {
position: relative;
height: 500px;
width: 800px;
border: 10px solid #999;
background: #000;
margin: 20px;
}
转载请标注:——
推荐文章
相关文章