登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

pcwanli的博客

nx

 
 
 

日志

 
 

CSS实现页面元素垂直居中的两种方法  

2011-01-14 17:48:06|  分类: CSS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
两种方法实现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 &amp;<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;
}

本文网址:http://www.cmstong.com/edu/show/178.shtml

  评论这张
 
阅读(785)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018