ie 兼容问题集合

一、样式类兼容问题

1. calc()方法造成的未知错误

当calc()使用在内联样式中时,运算中任何值必须带上单位(百分比除外)

// 会用100% - 0 的原因是100%减去的是一个变量,只是默认值为0,但是此时省略单位在ie/edge上就会报错
<div :style="{height: calc(100% - 0)}"></div>

// 正确写法是无论什么值都带上单位
let top = '0px'
<div :style="{height: calc(100% - top)}"></div>

 减去0时未带单位在ie/edge上回报如下错误

2. 定位div被object标签覆盖

出现这种现象的原因:

        object标签不在dom文档流里面,浏览器在解析的时候先把object放置在最上层,然后依次解析dom文档,放在下层,并且在这里使用z-index是无效的。

处理方式如下图:

 未处理之前自定义定位div的层级是比object的层级高的,但是在ie中通过z-index是无法使自定义定位div在object标签之上的,但是添加一个绝对定位的透明的iframe便签在定位div内即可处理此问题

// 定位div
<div style="position:absolute;top:0;left:0;width:100%;height:100%;">
     <iframe id="newiframe" src="" style="position: absolute; left: 0; top: 0; z-index:-1; width: 100%; height: 100%; filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';" frameborder="0"></iframe>
</div>

3.ie9中获取元素的css3样式属性

以transform样式为例

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>
    <div id="test-box" style="-ms-transform: translate(10px,10px);transform: translate(10px, 10px)"></div>
    <script>
      var ele = document.getElementById("test-box")

      // 获取transform样式,为兼容ie9 必须用msTransform获取样式,样式中也必须添加前缀

      var transform = ele.style.transform || ele.style.msTransform

      // ele.style 只能获取内联样式,无法得到css中的样式,以下是获取标签css中样式的方法

      function getElementCss (ele, attr) {
         return window.getComputedStyle ? window.getComputedStyle(ele, false)[attr] :     ele.currentStyle[attr]
      }
   </script>
  </body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值