zoukankan      html  css  js  c++  java
  • js修改css时如何考虑兼容性问题es5+es6

    es5的写法

    var elementStyle = document.createElement('div').style
    
    var  vendor = (function(){
      let transformNames = {
        webkit: 'webkitTransform',
        Moz: 'MozTransform',
        O: 'OTransform',
        ms: 'msTransform',
        standard: 'transform'
      }
    
      for (let key in transformNames) {
        if (elementStyle[transformNames[key]] !== undefined) {
          return key
        }
      }
    
      return false
    })()
    
    function prefixStyle(style) {
      if (vendor === false) {
        return false
      }
    
      if (vendor === 'standard') {
        return style
      }
    
      return vendor + style.charAt(0).toUpperCase() + style.substr(1)
    }

    使用方法

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>测试es5</title>
     6     <style>
     7         *{
     8             margin:0;
     9             padding:0;
    10             box-sizing: border-box;
    11         }
    12         #el{
    13             width: 100px;
    14             height: 100px;
    15             background-color: red;
    16         }
    17     </style>
    18 </head>
    19 <body>
    20     <div id="el"></div>
    21     <script>
    22         var elementStyle = document.createElement('div').style
    23 
    24 var  vendor = (function(){
    25   let transformNames = {
    26     webkit: 'webkitTransform',
    27     Moz: 'MozTransform',
    28     O: 'OTransform',
    29     ms: 'msTransform',
    30     standard: 'transform'
    31   }
    32 
    33   for (let key in transformNames) {
    34     if (elementStyle[transformNames[key]] !== undefined) {
    35       return key
    36     }
    37   }
    38 
    39   return false
    40 })()
    41 
    42 function prefixStyle(style) {
    43   if (vendor === false) {
    44     return false
    45   }
    46 
    47   if (vendor === 'standard') {
    48     return style
    49   }
    50 
    51   return vendor + style.charAt(0).toUpperCase() + style.substr(1)
    52 }
    53 document.getElementById('el').onmouseenter=function(){
    54     document.getElementById('el').style[prefixStyle('transform')] ='scale(1.5)'
    55 }
    56 document.getElementById('el').onmouseleave=function(){
    57     document.getElementById('el').style[prefixStyle('transform')] ='scale(1)'
    58 }
    59 
    60     </script>
    61 </body>
    62 </html>

    es6的写法

     1 let elementStyle = document.createElement('div').style
     2 
     3 let vendor = (() => {
     4   let transformNames = {
     5     webkit: 'webkitTransform',
     6     Moz: 'MozTransform',
     7     O: 'OTransform',
     8     ms: 'msTransform',
     9     standard: 'transform'
    10   }
    11 
    12   for (let key in transformNames) {
    13     if (elementStyle[transformNames[key]] !== undefined) {
    14       return key
    15     }
    16   }
    17 
    18   return false
    19 })()
    20 
    21 export function prefixStyle(style) {
    22   if (vendor === false) {
    23     return false
    24   }
    25 
    26   if (vendor === 'standard') {
    27     return style
    28   }
    29 
    30   return vendor + style.charAt(0).toUpperCase() + style.substr(1)
    31 }
  • 相关阅读:
    vue父组件促发子组件中的方法
    油猴脚本:油猴脚本自动点击 | 自动检测元素并点击、休眠、顺序执行、单页面也适用
    油猴脚本:使用layer.js mobx lodash jquery
    vue项目统计src目录下代码行数
    常用mobx响应新值变化函数autorun和observe
    uni app使用mobx | uni app状态管理mobx
    File and Code Templates | webstorm代码文件模板 vue typescript
    javascript立即执行函数简单介绍
    VSCode 安装GitLens插件不生效问题
    常用的浅拷贝实现方法
  • 原文地址:https://www.cnblogs.com/shuaihan/p/7352244.html
Copyright © 2011-2022 走看看