IE眼中的rem

前段时间做了一个项目,其中一个元素应该是绝对定位的,在其他浏览器都正常,唯独在IE里不行,不管是什么样版本的IE都不行,这非常不科学,感到非常困惑。

经过仔细的比对,发现是rem这个单位在其中起了作用。

首先,说下关于定位的写法。

通常要把一个元素定位到中间,写法大致有两种。

1:.absolute-auto{

position:absolute;

top:0;right:0;bottom:0;left:0;margin:auto;

}

2:.absolute-auto{

position:absolute;

top:50%;

margin:  - 高度值的一半  auto;

}

.selector{

width:30rem;

height:30rem;

}

html如下。

<div class="selector absolute-auto"><div>

在这里,我首先采用第一种写法。

假如:html的font-size是20px;

selector的宽度就是600px;经过测试,所有的浏览器都支持rem,并且宽度值都为600px;表现一致,非常棒。

好,既然有了宽度,那么,他是不是可以定位到中间了。经过测试,大部分浏览器都可以实现,唯独在ie里不行。IE能识别到600px的宽度值,但是就是不能在水平方向居中,貌似margin:auto失效。奇怪的是,垂直方向又可以居中,如果,此时改成width:600px;就可以了。

很显然,这不是我们想要的解决方案,因为我们需要的是用rem来解决,所以,我们只能使用第二种绝对定位方式 。即

.absoute-auto{

position:absolute;

left:50%;

margin:auto;

margin-left:-15rem;


}

总结,经过上述验证,我是不是可以理解成 ie浏览器的margin:auto并不能识别rem。如果假设成立,是不是不会产生 margin-left与margin-right,事实上,是产生了margin-left与margin-right的。

那么,导致这个问题的原因是什么样呢。虽然问题解决了,但是,为什么会这样,问题的原因是什么。比较的让人困惑,希望有大牛能够提供解答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值