zoukankan      html  css  js  c++  java
  • 检测浏览器是否支持某个css属性

    以浏览器是否支持translate3d 为例说明,当然现代浏览器已经支持该属性。如果浏览器实现了带有前缀的某个属性,比如说支持-webkit-transform,但是不支持直接写transform,可以通过检测浏览器engine,给属性加上特殊的前缀

    let docStyle = document.documentElement.style
    let translate3d = false
    
    let engine
    if (window.opera && Object.prototype.toString.call(opera) === '[object Opera]') {
      engine = 'presto'
    } else if ('MozAppearance' in docStyle) {
      engine = 'gecko'
    } else if ('WebkitAppearance' in docStyle) {
      engine = 'webkit'
    } else if (typeof navigator.cpuClass === 'string') {
      engine = 'trident'
    }
    
    let cssPrefix = {trident: '-ms-', gecko: '-moz-', webkit: '-webkit-', presto: '-o-'}[engine]
    
    let vendorPrefix = {trident: 'ms', gecko: 'Moz', webkit: 'Webkit', presto: 'O'}[engine]
    
    let helperElem = document.createElement('div')
    let perspectiveProperty = vendorPrefix + 'Perspective'
    
    let transformProperty = vendorPrefix + 'Transform'
    let transformStyleName = cssPrefix + 'transform'
    let transitionProperty = vendorPrefix + 'Transition'
    let transitionStyleName = cssPrefix + 'transition'
    let transitionEndProperty = vendorPrefix.toLowerCase() + 'TransitionEnd'
    // 可能带prefix前缀也可能不带
    if (helperElem.style[perspectiveProperty] !== undefined) {
      translate3d = true
    }
    
  • 相关阅读:
    DS博客作业02--栈和队列
    DS博客作业02--线性表
    c博客06-结构
    c博客作业05--指针
    C博客作业04--数组
    博客作业03-函数
    循环结构
    c博客作业01--分支、顺序结构
    我的第一篇博客
    Macos安装JDK1.8
  • 原文地址:https://www.cnblogs.com/yesyes/p/7672476.html
Copyright © 2011-2022 走看看