元素绝对居中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
css实现垂直水平居中
水平居中:
<div class="box">
    <div class="content">
        哇!居中了
    </div>
</div>

<style type="text/css">
    .box {
        background-color: #FF8C00;
        width: 300px;
        height: 300px;
    }
    .content {
        background-color: #F00;
        width: 100px;
        height: 100px;
        line-height: 100px;//文字在块内垂直居中
    text-align: center;//文字居中
    margin: 0 auto;
    }
</style>

水平垂直居中:
方法一:
position 元素已知宽度
父元素设置为:position: relative;
子元素设置为:position: absolute;
距上50%,据左50%,然后减去元素自身宽度的一半距离就可以实现.
以下这种方法也可以让content在浏览器居中,只要给body设置:
body{
margin:0;
padding:0;
width:100%;
height:100%;
}
就可以实现content在浏览器变换大小的情况下也可以实现绝对居中的效果.(不设置body也可以,只要content的样式是现在这样的就行.)
margin和padding中四个值的先后顺序及区别
margin:0 0 0 0;
顺序为:上右下左;
'margin-top'、'margin-right'、'margin-bottom'、'margin-left',按照顺时针方向罗列的.
示例:
<div class="box">
    <div class="content">
    </div>
</div>

.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
position: relative;
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin: -50px 0 0 -50px;
}


方法二:
position transform 元素未知宽度
如果元素未知宽度,只需将上面例子中的margin: -50px 0 0 -50px;替换为:transform: translate(-50%,-50%);
效果如上!
示例:
<div class="box">
    <div class="content">
    </div>
</div>

.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
position: relative;
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}


方法三:
flex布局
示例:

<div class="box">
    <div class="content">
    </div>
</div>

.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
display: flex;//flex布局
justify-content: center;//使子项目水平居中
align-items: center;//使子项目垂直居中
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
}


方法四:table-cell布局
因为table-cell相当于表格的td,td为行内元素,无法设置宽和高,所以嵌套一层,嵌套一层必须设置display: inline-block;td的背景覆盖了橘黄色,不推荐使用(content相当于td)
示例:
<div class="box">
    <div class="content">
        <div class="inner">
        </div>
    </div>
</div>

.box {
background-color: #FF8C00;//橘黄色
width: 300px;
height: 300px;
display: table;
}
.content {
background-color: #F00;//红色
display: table-cell;
vertical-align: middle;//使子元素垂直居中
text-align: center;//使子元素水平居中
}
.inner {
background-color: #000;//黑色
display: inline-block;
width: 20%;
height: 20%;
}
(注意: width: 20%;和 height: 20%;只是负责控制黑色方块的大小,如果都是100%,则会将红色方块填满.给content设置了宽高也没用,content的背景色还是会完全覆盖它的父元素box.)


方法五:
<style>
    .parent{
        width: 300px;
        height: 300px;
        background-color: #f00;
        position: relative;
    }
    .child{
        width: 100px;
        height: 100px;
        background-color: #00f;
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        margin:auto;
    }
</style>
<div class="parent">
    <div class="child">
        我是child
    </div>
</div>

方法六:
<style>
    .parent{
        width: 300px;
        height: 300px;
        background-color: #f00;
        display: table-cell;
        vertical-align: middle;
    }
    .child{
        width: 100px;
        height: 100px;
        background-color: #0f0;
        margin: 0 auto;
    }
</style>
<div class="parent">
    <div class="child">
    </div>
</div>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值