2011-11-18 178 views
17

林创建一个新的网站,我需要知道的东西(将显示与例子)。CSS:水平和垂直居中文本?

可以说我做到了这一点:

html;

<div id="center-in-bar"> 
    <ul> 
     <li>content..</li> 
     <li>content..</li> 
     <li>content..</li> 
     <li>content..</li> 
</div> 

和css:

#center-in-bar { 
    list-style:none; 
    display:inline-block; 
    /*what to do to make all the li elements centered both horizontal and vertical? in the center-in-bar element*/ 
} 

我该怎么做,使所有中心的水平和垂直的li元素?在中央的酒吧元素?

任何帮助将appriciated :))

+0

垂直居中不是一件很容易的事,并acheiving它依赖于一定的标准的方法(有几种不同的方法,但每个人都有条件)。 –

回答

11

试试这个CSS代码片段:

#center-in-bar ul { 
    ... 
    text-align:center; /* center horizontally */ 
    vertical-align:middle; /* center vertically */ 
    ... 
} 
#center-in-bar li { 
    ... 
    display:inline; /* you might want to use this instead of "inline-block" */ 
    ... 
    text-align:center; /* center horizontally */ 
    vertical-align:middle; /* center vertically */ 
    ... 
} 
8

不知怎的,还是有这样做没有标准,但以我的经验大概就是下面的整体最可靠的解决方案:

<style type="text/css"> 
    #container {  
     display:table;  
     border-collapse:collapse; 
     height:200px; 
     width:100%; 
     border:1px solid #000; 
    }   
    #layout {  
     display:table-row;  
    }    
    #content {  
     display:table-cell; 
     text-align:center; 
     vertical-align:middle;  
    }    
</style>  
<div id="container">  
    <div id="layout">  
     <div id="content"> 
      Hello world! 
     </div>  
    </div>  
</div> 

这里的另一种技术利用相对和绝对定位来模拟居中位置。这种技术并不确切,但它应该是用任何浏览器(甚至是早期的)兼容:

<style type="text/css"> 
    #vertical{ 
     position:absolute; 
     top:50%; /* adjust this as needed */  
     left:0; 
     width:100%; 
     text-align:center; 
    } 
    #container { 
     position:relative; 
     height:200px; 
     border:1px solid #000; 
    } 
</style>   
<div id="container"> 
    <div id="vertical"> 
     Hello world! 
    </div>    
</div> 

重要提示:

当这个问题被问的人似乎都在暗示line-height作为解决方案,但我会恳求你避开这个建议。当你展示像“Hello World”这样简单的东西时,它看起来不错,但是line-height在文字换行时突然崩溃。

+0

应该注意'table-cell'方法在某些版本的IE中不起作用。 – Sparky

+0

谢谢,帮助很多:) –

+0

没问题。如果你满意,不要忘了标记答案。 –

0

如何水平居中模块项目(如DIV)或内联项目(如文本)

比方说,你想一个浏览器页面的中央文件,所以,不管你有多大调整你的浏览器中的元素始终围绕:

body { 
    margin:50px 0px; padding:0px; 
    text-align:center; 
    } 

    #Content { 
    width:500px; 
    margin:0px auto; 
    text-align:left; 
    padding:15px; 
    border:1px dashed #333; 
    background-color:#eee; 
    } 

写这个HTML在你的身体标记之间水平居中的东西:

<body> 
<div id="Content">I am a centered DIV</div> 
</body> 

这将水平居中块级元素。要居中文本,跨度,或其它内联元素所有你需要补充的是:

#Content { 
    width:500px; 
    margin:0px auto; 
    text-align:center; /* THIS IS THE ONLY CHANGE FROM ABOVE */ 
    padding:15px; 
    border:1px dashed #333; 
    background-color:#eee; 

    } 

如何垂直居中模块项目(如DIV)或内联项目(如文本)

注意:不要使用行高来垂直居中元素,因为它仅适用于一行文本,而只能用于其他行。

对于垂直居中的物品,有3-5种方法可以使用,具体取决于什么它正在尝试居中。

该网站介绍了每种方法很容易地为您提供: http://blog.themeforest.net/tutorials/vertical-centering-with-css/

祝您好运!