如下代码均为本人亲手实践过,但愿读者朋友们可以动手实践一下。css
能够经过text-align:center,实现块级元素包裹的行内元素居中.html
.parent {
text-align: center;
}
复制代码
若是块级元素包裹着块级元素,能够经过display:inline-block,使块级元素转换成行内块元素,再使其居中。git
<div class="parent">
<div class="child">
demo
</div>
</div>
.parent {
text-align: center;
}
.child {
display: inline-block;
}
复制代码
(1)github
.parent {
/* 定宽 */
width: 100px;
margin: 0 auto;
}
复制代码
(2)table+marginsegmentfault
先将子元素设置为块级表格来显示,再将其设置为水平居中浏览器
<div class="parent">
<div class="child">
demo
</div>
</div>
<style>
.child {
display: table;
margin: 0 auto;
}
</style>
复制代码
(3)absolute+marginbash
先将父元素设置为相对定位,再将子元素设置为绝对定位,向右移动子元素,移动的距离为父元素的一半,最后经过向左移动子元素的一半宽度,使其水平居中。布局
.parent {
position: relative;
}
.child {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
复制代码
(4)flex+justify-contentflex
.parent {
display: flex;
/* 主轴元素对齐方式 */
justify-content: center;
}
复制代码
(5) flex+marginflexbox
.parent {
display: flex;
}
.child {
margin: 0 auto;
}
复制代码
父级元素采用flex布局,主轴上采用center,水平居中的方式排列
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<style>
.container {
display: flex;
justify-content: center;
}
</style>
复制代码
子级元素采用display:inline-block,父级元素使用text-align:center居中,实现水平居中
<style>
.container {
text-align: center;
}
.child {
display: inline-block;
}
</style>
复制代码
4.浮动元素水平居中
<style>
.parent {
display: flex;
justify-content: center;
}
.chlid {
float: left;
width: 200px;
}
</style>
<div class="parent">
<span class="chlid">我是要居中的浮动元素</span>
</div>
复制代码
<div class="parent">
<span class="child">单行内联元素垂直居中</span>
</div>
<style>
.child {
height: 120px;
line-height: 120px;
border:1px solid #ccc;
}
</style>
复制代码
flex布局
<div class="parent">
<span class="child">春天的江潮水势浩荡,与大海连成一片,一轮明月从海上升起,好像与潮水一块儿涌出来。
月光照耀着春江,随着波浪闪耀千万里,全部地方的春江都有明亮的月光。
江水曲曲折折地绕着花草丛生的原野流淌,月光照射着开遍鲜花的树林好像细密的雪珠在闪烁。</span>
</div>
<style>
.parent {
height: 200px;
display: flex;
flex-direction: column;
justify-content: center;
border: 1px solid #ccc;
}
</style>
复制代码
利用表布局
<style>
.parent {
display: table;
height: 140px;
border: 1px solid #ccc;
}
.child {
display: table-cell;
vertical-align: middle;
}
</style>
复制代码
(1)flex+align-items
<style>
.parent {
height: 200px;
display: flex;
align-items: center;
border: 1px solid #ccc;
}
</style>
<div class="parent">
<div class="child">未知高度的块级元素垂直居中。</div>
</div>
复制代码
(2) 使用absolute+transform
<style>
.parent {
position: relative;
height: 200px;
border: 1px solid #333;
}
.chlid {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
</style>
<div class="parent">
<div class="child">未知高度的块级元素垂直居中。</div>
</div>
复制代码
(3)display:table-cell vertical-align:center
MDN:CSS属性 vertical-align 用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。
<style>
.parent {
height: 100px;
border: 1px solid #333;
display: table-cell;
vertical-align: middle;
}
</style>
<div class="parent">
<div class="chlid">未知高度的垂直居中块级元素</div>
</div>
复制代码
<style>
.parent {
height: 800px;
position: relative;
border: 1px solid #ccc;
}
.child {
position: absolute;
width: 400px;
height: 400px;
left: 50%;
top:50%;
margin-left: -200px;
margin-top: -200px;
background-color: #ccc;
}
</style>
<div class="parent">
<div class="child">已知高度宽度的块级元素水平垂直居中。 </div>
</div>
复制代码
这种方法不须要知道块级元素的高宽,但在IE浏览器会有兼容问题
<div id="parent">
<div id="child" style="width: 100px;height: 100px;background-color: #666">
未知高宽的块级元素水平垂直居中
</div>
</div>
#parent {
position: relative;
height: 400px;
border: 1px solid #ccc;
}
#child {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
复制代码
<style>
#parent {
position: relative;
height: 400px;
border: 1px solid #ccc;
}
#child {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
</style>
<div id="parent">
<div id="child" style="width: 100px;height: 100px;background-color: #666">
未知高宽的块级元素水平垂直居中
</div>
</div>
复制代码
<style>
.parent {
height: 200px;
width: 400px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid #ccc;
}
</style>
<div class="parent">
<div class="child">未知高度的块级元素水平垂直居中。</div>
</div>
复制代码
<style>
.parent {
height: 400px;
display: grid;
border: 1px solid #ccc;
}
.child {
margin: auto;
}
</style>
<div class="parent">
<div class="child">未知高度宽度的块级元素水平垂直居中。 </div>
</div>
复制代码
参考文章