22 lines
935 B
Markdown
22 lines
935 B
Markdown
### prefix
|
|
|
|
Returns the prefixed version (if necessary) of a CSS property that the browser supports.
|
|
|
|
Use `Array.findIndex()` on an array of vendor prefix strings to test if `document.body` has one of them defined in its `CSSStyleDeclaration` object, otherwise return `null`.
|
|
Use `String.charAt()` and `String.toUpperCase()` to capitalize the property, which will be appended to the vendor prefix string.
|
|
|
|
```js
|
|
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;
|
|
};
|
|
```
|
|
|
|
```js
|
|
prefix('appearance'); // 'appearance' on a supported browser, otherwise 'webkitAppearance', 'mozAppearance', 'msAppearance' or 'oAppearance'
|
|
```
|