racte margin 居中 失效_前端css常见面试题:未知大小的父元素中怎么让子元素水平垂直居中...

简单的场景:是知道父元素和子元素大小,直接margin:xx auto;text-align:center;

面试场景:父元素大小未知,子元素大小已知

来源地址:

方法一:table-cell文本/图片水平垂直居中

主要实现代码:

display: table使块状元素成为一个块级表格;

display: table-cell;子元素设置成表格单元格;

vertical-align: middle;使表格内容居中显示,即可实现垂直居中的效果;

ba34ec166f982e5f5339f425ab1527e4.png

谷歌:

ede2673527bb9a9731838fdfca1dd941.png

IE8:

58ebeecd027b9250d708450e76fd139c.png

缺点:1)只能是IE8及以上版本支持此方法

2)margin会失效,举例如下图

689993ed6349d3947c21ae8b48aff7d1.png

方法二:display:flex 弹性布局实现水平垂直居中

将父元素设置为 display:flex;

justify-content: center;//水平方向

align-items: center;//垂直方向

2005d0817d38225afec24322875408a7.png

谷歌

60bd91fa248f72af23bab89545432e3b.png

IE10(flex布局只支持IE10及以上)

11708653d52650ce8cd5d9b16d95c7a7.png

缺点:flex布局只支持IE10及以上

方法三:使用 position 定位实现水平垂直居中

· 将父元素设置为 positon: relative;

· 子元素也设置为 positon: absolute,然后top:50%;left:50%;margin-left:-子元素高度/2,margin-top: -子元素高度/2实现水平垂直居中。

e195a230f2b82dd2a4ae6f7c8ff9ffb0.png

· 谷歌:

dbd6058ddcf36fc4a25b788c8a827c59.png

IE:IE5以上都可以

9b0352e490d18dbe6c2ac1691fafb4db.png

缺点:absolute的元素已经完全脱离文档流

方法四:使用 position 定位实现水平垂直居中

· 将父元素设置为 positon: relative;

· 子元素也设置为 positon: absolute,然后top:50%;left:50%;margin-left:-子元素高度/2,margin-top: -子元素高度/2实现水平垂直居中。

旋转rotate

变形:transform 扭曲skew

缩放scale

移动translate:参考自己的位置来平移

155ef3fccb572d8ad3f6593d8384f6e4.png

· 谷歌:

f087440a3163b192cbb63c008e34687d.png

IE:IE8不兼容

313d69016dc3701261ef5df2a59e5766.png

特点:IE9及以上可以兼容,完全脱离文档流

ca1f3286f3a04b6f0b2376a7b4f58a30.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值