|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- # Autoprefixer for Style Objects
-
- **inline-style-prefixer** adds required **vendor prefixes** to your style object. It only adds prefixes if they're actually required by evaluating the browser's `userAgent` against data from [caniuse.com](http://caniuse.com/).
- <br>
-
- Alternatively it ships a static version that adds all available vendor prefixes.
-
- [](https://travis-ci.org/rofrischmann/inline-style-prefixer)
- [](https://codeclimate.com/github/rofrischmann/inline-style-prefixer/coverage)
- [](https://img.shields.io/npm/dm/inline-style-prefixer.svg)
- 
-
- ## Installation
- ```sh
- yarn add inline-style-prefixer
- ```
- If you're still using npm, you may run `npm i --save inline-style-prefixer`.
- We also provide [UMD](https://github.com/umdjs/umd) builds for each package in the `dist` folder. You can easily use them via [unpkg](https://unpkg.com/).
- ```HTML
- <!-- Unminified versions -->
- <script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefixer.js"></script>
- <script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefix-all.js"></script>
- <!-- Minified versions -->
- <script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefixer.min.js"></script>
- <script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefix-all.min.js"></script>
- ```
-
- ## Browser Support
- It supports all major browsers with the following versions. For other, unsupported browses, we automatically use a fallback.
- * Chrome: 46+
- * Android (Chrome): 46+
- * Android (Stock Browser): 4+
- * Android (UC): 9+
- * Firefox: 40+
- * Safari: 8+
- * iOS (Safari): 8+
- * Opera: 16+
- * Opera (Mini): 12+
- * IE: 11+
- * IE (Mobile): 11+
- * Edge: 12+
-
- It will **only** add prefixes if a property still needs them in one of the above mentioned versions.<br> Therefore, e.g. `border-radius` will not be prefixed at all.
-
- > **Need to support legacy browser versions?**<br>
- Don't worry - we got you covered. Check [this guide](https://github.com/rofrischmann/inline-style-prefixer/blob/master/docs/guides/CustomPrefixer.md).
-
-
- ## Dynamic vs. Static
- Before using the prefixer, you have to decide which one you want to use. We ship two different versions - a dynamic and a static version.
-
- The **dynamic prefixer** evaluates the `userAgent` to identify the browser environment. Using this technique, we are able to only add the bare minimum of prefixes. Browser detection is quite accurate (~90% correctness), but yet also expensive which is why the package is almost 3 times as big as the static version.
-
- > It uses the static prefixer as a fallback.
-
- 
-
- ```javascript
- import Prefixer from 'inline-style-prefixer'
-
- const style = {
- transition: '200ms all linear',
- userSelect: 'none',
- boxSizing: 'border-box',
- display: 'flex',
- color: 'blue'
- }
-
- const prefixer = new Prefixer()
- const prefixedStyle = prefixer.prefix(style)
-
- // prefixedStyle === output
- const output = {
- transition: '200ms all linear',
- WebkitUserSelect: 'none',
- boxSizing: 'border-box',
- display: '-webkit-flex',
- color: 'blue'
- }
- ```
-
- The **static prefixer**, on the other hand, adds all required prefixes according the above mentioned browser versions. Removing the browser detection makes it both smaller and fast, but also drastically increases the output.
-
- 
-
- ```javascript
- import prefixAll from 'inline-style-prefixer/static'
-
- const style = {
- transition: '200ms all linear',
- boxSizing: 'border-box',
- display: 'flex',
- color: 'blue'
- }
-
- const prefixedStyle = prefixAll(style)
-
- // prefixedStyle === output
- const output = {
- WebkitTransition: '200ms all linear',
- transition: '200ms all linear',
- MozBoxSizing: 'border-box',
- boxSizing: 'border-box',
- display: [ '-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex' ]
- color: 'blue'
- }
- ```
-
- ## Usage with TypeScript
- You can use TypeScript definition from [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/inline-style-prefixer) using [@types/inline-style-prefixer](https://www.npmjs.com/package/@types/inline-style-prefixer)
-
- ```sh
- npm install --save @types/inline-style-prefixer
- ```
-
- Then import in your code:
-
- ```typescript
- import prefixAll = require('inline-style-prefixer/static');
-
- const prefixedStyle = prefixAll({
- transition: '200ms all linear',
- boxSizing: 'border-box',
- display: 'flex',
- color: 'blue'
- });
- ```
-
- ## Documentation
- If you got any issue using this prefixer, please first check the FAQ's. Most cases are already covered and provide a solid solution.
-
- * [Usage Guides](https://inline-style-prefixer.js.org/docs/UsageGuides.html)
- * [Data Reference](https://inline-style-prefixer.js.org/docs/DataReference.html)
- * [API Reference](https://inline-style-prefixer.js.org/docs/API.html)
- * [FAQ](https://inline-style-prefixer.js.org/docs/FAQ.html)
-
- ## Community
- Here are some popular users of this library:
-
- * [Aphrodite](https://github.com/Khan/aphrodite)
- * [Fela](https://github.com/rofrischmann/fela)
- * [Glamor](https://github.com/threepointone/glamor)
- * [Material UI](https://github.com/callemall/material-ui)
- * [Radium](https://github.com/FormidableLabs/radium)
- * [react-native-web](https://github.com/necolas/react-native-web)
- * [styled-components](https://github.com/styled-components/styled-components)
- * [Styletron](https://github.com/rtsao/styletron)
-
- > PS: Feel free to add your solution!
-
- ## Support
- Join us on [Gitter](https://gitter.im/rofrischmann/fela). We highly appreciate any contribution.<br>
- We also love to get feedback.
-
- ## License
- **inline-style-prefixer** is licensed under the [MIT License](http://opensource.org/licenses/MIT).<br>
- Documentation is licensed under [Creative Common License](http://creativecommons.org/licenses/by/4.0/).<br>
- Created with ♥ by [@rofrischmann](http://rofrischmann.de) and all contributors.
|