1,行内元素的居中方法:text-align:center:
2,对于块元素,margin:0 auto; 前提是这个块元素必须定义宽度;
3,有table表格来实现居中
4,块装换为行内元素来实现块级元素水平居中
5,父盒子,子盒子都采用相对定位,父元素left:50%;子元素left:-50%,相对自己的长度减回了50%,这样实现向右偏移后拉回多的部分
6,css3的flexbox,display:felx;居中
Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,子元素的float
、clear
和vertical-align
属性将失效。
它即可以应用于容器中,也可以应用于行内元素。
7,父元素display:relative;直接采用position:absolute;left:0;right:0;margin:auto来实现水平居中
<!DOCTYPE html>
<html>
<head>
<title>水平居中</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<style type="text/css">
#page{
width: 100%;
color: white;
}
.he{
width: 100%;
height: 100px;
background: #625050;
text-align: center;
line-height: 100px;
}
.bo{
width: 100%;
background: #6aa087;
}
.fo{
height: 100px;
background: #2f5d34;
}
.content{
height: 100px;
border: 2px solid #fff;
}
.content1{
background: #66a05c;
text-align: center;
}
.content2{
background: #8a5841;
text-align: center;
}
.content2Bo{
height:50px;
width: 60%;
border: 2px solid red;
line-height: 50px;
margin: 0 auto;
}
.content3{
background: #2f5d34;
}
table{
margin: 0 auto;
}
.content4{
background: #8a5841;
text-align: center;
}
.contentBo4{
display: inline;
}
ul li{
list-style-type: none;
}
.content5{
float: left;
position: relative;
left: 50%;
}
.contentBo5{
position: relative;
left: -50%;
background: #231b40;
}
.content6{
width: 100%;
text-align: center;
background: #9ca05c;
display: flex;
align-items: center;
justify-content: center;
}
.content7{
position: relative;
}
.contentBo7{
position: absolute;
left: 0;
right: 0;
width: 80%;
border: 2px solid red;
margin: 0 auto;
text-align: center;
}
</style>
</head>
<body>
<div id="page">
<div class="he">
<h1>下面是对元素水平居中对齐的几个例子以及说明</h1>
</div>
<div class="bo">
<div class="content content1">
这是内容区一:实现对行内元素的水平居中显示 采用text-align:center;的方式。
</div>
<div class="content content2">
<div class="content2Bo">
这是内容区二:红色区域部分采用margin:0 auto;来实现水平居中显示,当然要写好元素的宽度。
</div>
</div>
<div class="content content3">
<table><tbody><tr><td>
这是内容区三:用table实现。
</td></tr></tbody></table>
</div>
<div class="content content4">
<ul class="contentBo4">
<li>这是第一行</li>
<li>这是第二行</li>
<li>这是内容区四:本来是contentBo4的块级的元素但是通过转换成行内元素来实现块级元素的水平居中显示。</li>
</ul>
</div>
<div class="content5">
<div class="content contentBo5">
这是内容区五:父子元素都采用相对定位,父元素left:50%;子元素left:-50%;相对自己的长度减回50%,这样实现向右偏移后拉回多的部分。
</div>
</div>
<div class="content content6">
这是内容区六:采用css3的flexbox,display:flex;
</div>
<div class="content content7">
<div class="contentBo7">
这是内容区七:用父元素的 display:relative;直接采用position:absolute;left:0;right:0;margin:auto来实现水平以居中。
</div>
</div>
</div>
<div class="fo">
<hongbo> 总结下:其实实现水平居中只有一下几种思路:
1:对于最简单的行内元素的居中采用text-align:center;设置即可。
2:对于最普通的水平居中采用绝对定位后设置left:50%;后再采用各种方式去实现自身水平差的补回。
3:对于普通的元素对齐还可以采用绝对定位后left:0;right:0;加上元素的宽度,在此基础之上就可以采用margin:auto;实现水平对齐了。
4:用css3的Flexbox属性
5:在元素外嵌套table实现,但是这样会有很多层嵌套
6:marin:0 auto;方便的实现已知宽度的水平居中
</hongbo>
</div>
</div>
</body>
</html>