请把它居中!

水平和垂直居中还是分开来讲。水平居中方法很多:1.text-align 2.margin3.绝对定位4.flex。前两种兼容性最好的,基本上能解决所有的水平居中问题了,flex用起来很爽,但是有兼容性的问题,所以使用那种方法视情况而定吧。

水平居中垂直居中方法:
1. flex方法
2. 绝对定位
3. table方法
4. 用伪元素辅助垂直居中其中。
同样flex有兼容性问题,后三种方法兼容性较好。第四种处理的方法思想很好,可以为其他疑难杂症那个提供一个解决问题的思路。

水平居中

1.text-align
p{
    text-align:center;
}

这种方式是处理行内元素的居中,只能应用于display为inline,inline-block的元素居中。样式是写在居中元素的父元素上。

2.margin
div{
    margin: 0 auto;
}

这种方法是应用与块级元素,也就是display为block的元素上。样式写在要居中的元素上。

3.absolute
div{
    position:absolute;
    left:50%;
    transform:translateX(-50%);
}

这种方法在水平居中不常用,通常是要垂直水平全部居中,应用于块级元素。代码如下:

div{
position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
}

其思路是这样的:首先设置为绝对定位,元素的左上角应父级定位元素的中心位置,绝对定位的宽高百分比是以其父级已经定位的元素的宽高为基数。然后再往回XY分别偏移50%,translate的参照是元素的本身,所以元素会垂直水平都居中(要居中的元素其父元素要设置定位)。这里的translate会有部分兼容问题,可以使用margin-top:-50%;margin-left:50%;作为替代方案。

4.flex

flex布局很强大,不过兼容性的问题也是很坑爹的。通常用于水平垂直都是居中的布局。
用法如下:首先设置要居中的元素的父元素为

div.box{
    display:flex;
    align-items: center;
    justify-content: center;
}

就是这么强大。兼容性不好。

垂直居中

垂直居中的方法1和方法2我们在上面的水平居中已经用了
所以就直接进入兼容性比较好的方法三、四。

table

核心代码

div.parent{
    display:table;
}
div.child{
    display:table-cell;
    vertiacl-align:middle;
}

其中,设置要居中的元素的外层为table设置里面元素为table-cell。。此方法兼容性很好

伪元素做辅助

核心代码:

.parent:before{
    content:'';
    display: inline-block;
    width:0px;
    overflow:hidden;
    height: 100%;
    vertical-align: middle;
}
.child{
    display: inline-block;
}

这种方法实际上是使用一个元素做辅助,把行高撑开到100%,在设置行内垂直居中对齐。
如果考虑兼容,则可以在html文档中添加一个元素来做辅助,而不是用伪元素。
关于处理布局细节问题,通过一个元素来辅助的思想确实能让人豁然开朗。后面我还会写一篇关于,如何设置一个div为自适应的正方形,同样使用了这个思想。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值