CSS:水平和垂直中心文本?

Sti*_*sen 18 css html5

我正在创建一个新网站,我需要知道一些事情(将以示例显示).

让我说我这样做:

HTML;

<div id="center-in-bar">
   <ul>
       <li>content..</li>
       <li>content..</li>
       <li>content..</li>
       <li>content..</li>
</div>
Run Code Online (Sandbox Code Playgroud)

和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*/
}
Run Code Online (Sandbox Code Playgroud)

如何使所有li元素在水平和垂直方向都居中?在中心杆元素?

任何帮助将是appriciated :))

小智 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 */
    ...
}
Run Code Online (Sandbox Code Playgroud)


Jam*_*son 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> 
Run Code Online (Sandbox Code Playgroud)

这是另一种利用相对和绝对定位来模拟中心 - 中间位置的技术.这种技术并不准确,但它应该与任何浏览器兼容(即使是早期的浏览器):

<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> 
Run Code Online (Sandbox Code Playgroud)

重要的提示:

当这个问题被问到时,有人似乎总是建议line-height作为解决方案,但我会恳请你避开这个建议.当你展示像"Hello World"这样简单的东西时,它看起来很不错,但是line-height当文字包装时会突然断裂.