原文
大綱
1侥涵、margin和width實現(xiàn)水平居中
2眉抬、inline-block實現(xiàn)水平居中方法
3唐责、浮動實現(xiàn)水平居中的方法
4暖途、絕對定位實現(xiàn)水平居中
5卑惜、CSS3的flex實現(xiàn)水平居中方法
6、CSS3的fit-content實現(xiàn)水平居中方法
通過實例實現(xiàn)水平居中——以分頁標(biāo)簽為實例
最初效果
<!DOCTYPE
html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination li {
line-height: 25px;
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
</style>
</head>
<body>
<div class="pagination">
<ul>
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
1驻售、margin和width實現(xiàn)水平居中
第一種方法是最古老的實現(xiàn)方案露久,也是大家最常見的方案,在分頁容器上定義一個寬度欺栗,然后配合margin的左右值為“auto”實現(xiàn)效果毫痕。
優(yōu)點:實現(xiàn)方法簡單易懂,瀏覽器兼容性強迟几;
缺點:擴展性差消请,無法自適應(yīng)未知項情況。
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination {
width: 400px;
margin-left: auto;
margin-right: auto;
/*可以使用簡寫形式:margin:0 auto;*/
}
.pagination li {
line-height: 25px;
display: inline;
float: left;
margin: 0 5px;
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
/*清除ul的浮動类腮,形成一個BFC
.clearfix:after{
content: '';
height: 0;
line-height:0;
display: block;
visibility: hidden;
clear: both;
}
.clearfix{
zoom:1;
}
*/
</style>
</head>
<body style="background:gray;">
<div class="pagination">
<ul class="clearfix">
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
2梯啤、inline-block實現(xiàn)水平居中方法
這個方法相對來說也是簡單易懂,但使用了inline-block解決了水平居中的問題存哲,卻又產(chǎn)生了一個新的問題,就是分頁項與分頁項由回車符帶來的空白間距七婴,那么不知情的同學(xué)就會不知道如何解決祟偷?(而且這個間距并不是所有瀏覽器都有),所以需要解決下inline-block帶來的間距打厘。
優(yōu)點:
1. 高度可變
2. 內(nèi)容溢出會將父元素?fù)伍_修肠。
3. 支持跨瀏覽器,也適應(yīng)于IE7户盯。
4. 簡單易懂嵌施,擴展性強廊镜;
缺點:
1. 需要一個容器
2. 水平居中依賴于margin-left: -0.25em;該尺寸對于不同的字體/字號需要調(diào)整簸喂。
3. 內(nèi)容塊寬度不能超過容器的100% - 0.25em。
4. 需要額外處理inline-block的瀏覽器兼容性的畴。
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination {
text-align: center;
font-size: 0;
letter-spacing: -4px;
word-spacing: -4px;
}
.pagination ul{
display:inline-block;
}
.pagination li {
line-height: 25px;
display: inline;
float: left;
margin: 0 5px;
zoom:1;
letter-spacing:normal;
word-spacing:normal;
font-size:12px;
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
.clearfix:after{
content: '';
height: 0;
line-height:0;
display: block;
visibility: hidden;
clear: both;
}
.clearfix{
zoom:1;
}
</style>
</head>
<body style="background:gray;">
<div class="pagination">
<ul class="clearfix">
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
3硫眨、浮動實現(xiàn)水平居中的方法
這種方法實現(xiàn)和前面的與眾不同足淆,使用了浮動配合position定位實現(xiàn)。
優(yōu)點:兼容性強,擴展性強巧号;
缺點:實現(xiàn)原理較復(fù)雜族奢。
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination {
float:left;
width:100%;
overflow:hidden;
position:relative;
}
.pagination ul{
clear:left;
float:left;
position:relative;
left:50%;/*整個分頁向右移動寬度的50%*/
text-align:center;
}
.pagination li {
line-height: 25px;
margin: 0 5px;
display: block;
float: left;
position:relative;
right:50%;/*將每個分頁項向左移動寬度的50%*/
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
.clearfix:after{
content: '';
height: 0;
line-height:0;
display: block;
visibility: hidden;
clear: both;
}
.clearfix{
zoom:1;
}
</style>
</head>
<body style="background:gray;">
<div class="pagination">
<ul class="clearfix">
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
4、絕對定位實現(xiàn)水平居中
這種實現(xiàn)我們有一個難題丹鸿,我并不知道元素的寬度是多少越走,這樣也就存在如方法一所說的難題,但我們可以借助方法三的原理靠欢,即相對定位來做一點變通廊敌。
優(yōu)點:擴展性強,兼容性強;
缺點:理解性難掺涛。
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination {
position:relative;
}
.pagination ul{
position:absolute;
left:50%;
}
.pagination li {
line-height: 25px;
margin: 0 5px;
float: left;
position:relative;/*注意這里不能是absolute*/
right:50%;
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
.clearfix:after{
content: '';
height: 0;
line-height:0;
display: block;
visibility: hidden;
clear: both;
}
.clearfix{
zoom:1;
}
</style>
</head>
<body style="background:gray;">
<div class="pagination">
<ul class="clearfix">
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
5庭敦、CSS3的flex實現(xiàn)水平居中方法
CSS3的flex是一個很強大的功能,她能讓我們的布局變得更加靈活與方便薪缆,唯一的就是目前瀏覽器的兼容性較差秧廉。
display:box是2009年以前的關(guān)于flex的用法,是需要加上前綴的
display:flex是之后的用法拣帽,也是以后的標(biāo)準(zhǔn)用法
優(yōu)點:實現(xiàn)便捷疼电,擴展性強
缺點:兼容性差。
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination {
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-pack: center;
display: -o-box;
-o-box-orient: horizontal;
-o-box-pack: center;
display: -ms-box;
-ms-box-orient: horizontal;
-ms-box-pack: center;
display: box;
box-orient: horizontal;
box-pack: center;
}
.pagination li {
line-height: 25px;
margin: 0 5px;
float: left;
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
.clearfix:after{
content: '';
height: 0;
line-height:0;
display: block;
visibility: hidden;
clear: both;
}
.clearfix{
zoom:1;
}
</style>
</head>
<body style="background:gray;">
<div class="pagination">
<ul class="clearfix">
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
6减拭、CSS3的fit-content實現(xiàn)水平居中方法
“fit-content”是CSS中給“width”屬性新加的一個屬性值蔽豺,他配合margin可以讓我輕松的實現(xiàn)水平居中的效果:
優(yōu)點:簡單易懂,擴展性強;
缺點:瀏覽器兼容性差
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>DIV+CSS布局教程</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
a{
text-decoration: none;
}
li{
list-style:none;
}
.pagination ul{
width: -moz-fit-content;
width:-webkit-fit-content;
width: fit-content;
margin-left: auto;
margin-right: auto;
}
.pagination li {
line-height: 25px;
margin: 0 5px;
float: left;/*需要加上這個樣式拧粪,不然同樣達(dá)不到效果*/
}
.pagination a {
display: block;
color: #f2f2f2;
text-shadow: 1px 0 0 #101011;
padding: 0 10px;
border-radius: 2px;
box-shadow: 0 1px 0 #5a5b5c inset,0 1px 0 #080808;
background: linear-gradient(top,#434345,#2f3032);
background:-webkit-gradient(linear,left top,left bottom,from(#434345),to(#2f3032));
}
.pagination a:hover {
box-shadow: 0 1px 0 #f9bd71 inset,0 1px 0 #0a0a0a;
background: linear-gradient(top,#f48b03,#c87100);
background:-webkit-gradient(linear,left top,left bottom,from(#f48b03),to(#c87100));
}
.clearfix:after{
content: '';
height: 0;
line-height:0;
display: block;
visibility: hidden;
clear: both;
}
.clearfix{
zoom:1;
}
</style>
</head>
<body style="background:gray;">
<div class="pagination">
<ul class="clearfix">
<li><a href="#">Prev</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
</body>
</html>
參考網(wǎng)站
https://www.w3cplus.com/css/elements-horizontally-center-with-css.html
http://blog.csdn.net/freshlover/article/details/11579669