元素居中显示
2018-06-20 本文已影响0人
指尖轻敲
一、宽高未知
1. flex
body就代表父元素,使用弹性盒模型就可以。
body{
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
2.绝对定位和位移属性
div是要居中的元素,如果父元素不是body,要相对于父元素居中,要给父亲元素设置position: relative;这里的translate位移属性是相对于自己而言。
div{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
3. flex配合margin和translate
body{
display: flex;
}
div{
margin: 50vh auto 0;
transform: translateY(-50%);
}
二、宽高已知
1. 绝对定位和margin:auto
子元素要有宽高。
h3{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
width: 200px;
height: 200px;
}
2. display:table-cell
只有给父亲元素和子元素都设置了宽高才可以。
body{
height: 500px;
width: 500px;
display: table-cell;
vertical-align: middle;
}
h3{
margin: 0 auto;
width: 200px;
height: 200px;
}
3. 利用margin的负值
这个方法还必须知道元素的宽高。
h3{
width: 100px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -50px;
margin-top: -50px;
}
4. 利用计算属性calc
div{
width: 200px;
height: 200px;
background: red;
position: absolute;
top: calc(50% - 100px);
left: calc(50% - 100px);
}
三、浮动元素居中
父元素和子元素同时左浮动,然后父元素相对左移动50%,再然后子元素相对左移动-50%/或相对右50%。
.box{
float:left;
position:relative;
left:50%;
}
p{
float:left;
position:relative;
right:50%;
}
<div class="box">
<p>我是浮动的</p>
<p>我也是居中的</p>
</div>