实现类似autoprefixer工具函数

现在项目中处理css兼容前缀基本上都在webpack中集成了autoprefixer自动添加前缀,但在JS中操作样式只能手动添加webkit前缀,这样造成了代码的冗余,看起来也让人不舒服。

this.$refs.node.style['transform'] = `scale(1.5)`;
this.$refs.node.style['webkitTransform'] = `scale(1.5)`;

可以实现一个类似autoprefixer的工具函数自动检测浏览器兼容性添加前缀,代码如下

/* dom.js */
    let elementStyle = document.createElement('div').style

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

        for (let key in transformNames) {
            if (elementStyle[transformNames[key]] !== undefined) {
                return key
            }
        }
        return false
    })();

    export function prefixStyle(style) {

        if (vendor === false) {
            return false
        }

        if (vendor === 'standard') {
            return style
        }

        return vendor + style.charAt(0).toUpperCase() + style.substr(1)
    }

使用

import { prefixStyle }  from 'dom'
const  transform = prefixStyle('transform ');

this.$refs.node.style[transform] = `scale(1.5)`;

这样看起来就清爽了好多,也会根据不同浏览器自动添加不同的兼容前缀。

你可能感兴趣的:(实现类似autoprefixer工具函数)