js实现不同浏览器内核的style属性前缀添加

正如我之前的那篇博文CSS3之transform属性最开始所述,针对不同的浏览内核的transform有不同的书写规则,如果需要兼容各浏览器的话,所有写法都需要调用。不管是使用CSS设置DOM元素的transform属性,还是使用js实现,都不可避免的增加了代码的数量。

针对一个项目中需要多次添加不同元素不同状态下的变换属性,我们可以实现一个针对不同的浏览器内核添加前缀的方法,此后只需要在不同的项目组件中调用方法即可:

<script type="text/javascript">
let elementStyle = document.createElement('div').style

let prefix = (() => {
  let transformName = {
     webkit: 'webkitTransform',
     Moz: 'MozTransform',
     O: 'OTransform',
     ms: 'msTransform',
     standard: 'transform'
  }

  for (let key in transformNames) {
     if (elementStyle[transformName[key]] !== undefined) {
       console.log(key)
       return key
    }
  }

   return false
})()

function prefixStyle(style) {
  if (prefix === false) {
     return false
  }
  if (prefix === 'standard') {
     return style
  }
   return prefix + style.charAt(0).toUpperCase() + style.substr(1)
}
console.log(prefixStyle('transform'))
</script>

上述代码在chrome浏览器中的结果如下图所示:

 在一个完整的项目中,我们也可以使用export导出prefixStyle方法,在需要使用的其他模块中引入这个方法,直接使用。

//src/common/js/dom.js
...
export function prefixStyle(style){...}
...
//src/base/...
import {prefixStyle} from 'src/common/js/dom'

const transform = prefixStyle('transform')
...
this.$refs.progButton.style[transform] = `translate3d(${offsetWidth}px,0,0)`
...

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值