2019-12-02
描述
如果浏览器中的 CSS 属性需要前缀支持的话请返回包含其前缀的完整属性。
提示
- 将各浏览器的前缀放入
prefixes
数组中 - 使用
String.prototype.charAt()
和String.prototype.toUpperCase()
将属性的第一个字母转换为大写,然后在前面添加上前缀 - 使用
Array.prototype.findIndex()
对prefixes
数组进行检测,如果document.body
中没有包含定义在CSSStyleDeclaration
中的属性,请返回null
代码
const prefix = prop => {
const capitalizedProp = prop.charAt(0).toUpperCase() + prop.slice(1);
const prefixes = ['', 'webkit', 'moz', 'ms', 'o'];
const i = prefixes.findIndex(
prefix => typeof document.body.style[prefix ? prefix + capitalizedProp : prop] !== 'undefined'
);
return i !== -1 ? (i === 0 ? prop : prefixes[i] + capitalizedProp) : null;
};
示例
获取 appearance 在各浏览器中所需的前缀:
prefix('appearance'); // 如果浏览器支持的话则返回 'appearance',否则的话将根据各厂商的浏览器分别返回 'webkitAppearance','mozAppearance','msAppearance' 或 'oAppearance'