1. 程式人生 > >多種方法實現水平居中和垂直居中總結

多種方法實現水平居中和垂直居中總結

水平居中和垂直居中在編寫HTML5靜態頁面過程中經常遇到,現在就來總結一下對於不同的元素如何實現居中。

一、水平居中:
1、對於行內元素,在父級塊級元素css屬性中使用 text-align:center即可。
2、對於width固定的塊級元素,使用margin:20px auto; /* margin-left 與 margin-right 設定為 auto */
3、對於width不固定的塊級元素,有三種常用方法:
(1) 使用table標籤,為什麼選擇方法一加入table標籤? 是利用table標籤的長度自適應性—即不定義其長度也不預設父元素body的長度(table其長度根據其內文字長度決定),因此可以看做一個定寬度塊元素,然後再利用定寬度塊狀居中的margin的方法,使其水平居中。
下面看實現步驟:
第一步:為需要設定的居中的元素外面加入一個 table 標籤 ( 包括 、、 )。
第二步:為這個 table 設定“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)。
第三步:把需要水平居中的元素放到table標籤中的td標籤中。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定寬塊狀元素水平居中</title>
<style>
table{
    margin:20px auto;
}

/*下面是任務區程式碼*/
.wrap{
    background:#ccc;
}
</style>
</head>
<body>
<table><tbody>
    <tr><td>
    <p
>
設定我所在的div容器水平居中 </p> </td></tr> </tbody> </table> </body> </html>

(2) 改變塊級元素的 display 為 inline 型別(設定為 行內元素 顯示),然後使用 text-align:center 來實現居中效果

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定寬塊狀元素水平居中</title
>
<style> .container{text-align:center;} .container div{margin:0;padding:0;display:inline;} </style> </head> <body> <div class="container"> <div> <span><a href="#">1</a></span> <span><a href="#">2</a></span> <span><a href="#">3</a></span> </div> </div> </body> </html>

(3) 通過給父元素設定 float,然後給父元素設定 position:relative 和 left:50%,子元素設定 position:relative 和 left: -50% 來實現水平居中。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定寬塊狀元素水平居中</title>
<style>
.container{
    float:left;
    position:relative;
    left:50%;
}
.container ul{
/*  margin:0;
    padding:0;*/
    position:relative;
    left:-50%;
}
.container li{display:inline;}
</style>
</head>
<body>
<div class="container">
    <ul>
        <li><a href="#">11111111111</a></li>
        <li><a href="#">22222222222</a></li>
        <li><a href="#">33333333333</a></li>
    </ul>
</div>
</body>
</html>

二、垂直居中:
1、父元素高度確定的單行文字 的豎直居中的方法是通過設定父元素的 height 和 line-height 高度一致來實現的。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
<style>
.wrap{
    display:inline;
    text-align:center;
}
.wrap h2{
    height:100px;
    line-height:100px;
    background:#ccc;
}
</style>
</head>
<body>
<!--下面是程式碼任務部分-->
<div class="wrap">
    <h2>hi,imooc!</h2>
</div>
</body>
</html>

2、父元素高度確定的多行文字:
使用插入 table (包括tbody、tr、td)標籤,可以把要垂直居中的div放到table的td中。

<!DOCTYPE HTML>
<html>
<head>
<meta  charset="utf-8">
<title>父元素高度確定的多行文字</title>
<style>
  table{margin:20px auto;}
</style>
</head>
<body>
<table><tbody>
<tr><td>
    <div>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
</div>
</td></tr>
</tbody></table>
</body>
</html>