水平居中
行內元素,水平居中的時候通過給父元素設置text-align:center來實現
<body>
<div class="txtCenter">父容器內水平居中顯示</div>
</body>
<style>
.txtCenter{
text-align:center;
}
</style>
塊元素 分定寬塊狀 和 不定寬塊狀元素
定寬塊狀元素 通過語句margin:0 auto;實現(直接margin:auto;也可以)
div{
width:200px;
margin:0 auto;
/* margin-left 與 margin-right 設置為 auto */
}
不定寬 的可以3種方式
- 加入table標簽
利用table標簽的長度自適應性---即不定義其長度也不默認父元素body的長度(table其長度根據其內文本長度決定),因此可以看做一個定寬度塊元素,然后再利用定寬度塊狀居中的margin的方法,使其水平居中。
操作方法:
第一步:為需要設置的居中的元素外面加入一個 table 標簽 ( 包括 <tbody>、<tr>、<td> )
<div>
<table>
<tbody>
<tr><td>
<ul>
<li>文本1</li>
<li>文本2</li>
</ul>
</td></tr>
</tbody>
</table>
</div>
第二步:為這個 table 設置“左右 margin 居中”(和定寬塊狀元素的方法一樣)
<style>
table{ border:1px solid; margin:0 auto;}
</style>
2.display:inline變為行內元素,使用text-align:center實現
3.浮動父容器position:relative,相對定位,設置left為50%實現
原理:
- 把父元素浮動到左邊,同時向右偏移50%,相當于把父元素的左邊緣對齊到整行的中間
- 把子元素向右偏移50%,這個50%是父元素的50%,父容器的寬度剛好就等 于子元素的寬度,也是子元素本身的50%,這樣剛好就居中了
(可以在父元素中添加一行clear:both(作用是清除兩側浮動,獨占一行))
<style>
.container{ float:left; position:relative; left:50%}
</style>
垂直居中
這個介紹的很全面
https://www.qianduan.net/css-to-achieve-the-vertical-center-of-the-five-kinds-of-methods/
在這里把作者推薦的方法貼出來了
在 content 元素外插入一個 div。設置此 div height:50%; margin-bottom:-contentheight;。
content 清除浮動,并顯示在中間。
<div id="floater">
<div id="content">Content here</div>
</div>
#floater {
float: left;
height: 50%;
margin-bottom: -120px;
}
#content {
clear: both;
height: 240px;
position: relative;
}
優點:
適用于所有瀏覽器
沒有足夠空間時(例如:窗口縮小) content 不會被截斷,滾動條出現