├── CHANGELOG.md ├── README-zh.md ├── .travis.yml ├── test ├── fixtures │ ├── double │ │ ├── output.css │ │ └── input.css │ ├── linear-gradient │ │ ├── input.css │ │ └── output.css │ ├── one │ │ ├── input.css │ │ └── output.css │ └── flex │ │ ├── input.css │ │ └── output.css └── index.js ├── .npmignore ├── .gitignore ├── .editorconfig ├── package.json ├── README.md ├── LICENSE ├── index.js ├── array.js ├── properties.js └── demo.js /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README-zh.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | -------------------------------------------------------------------------------- /test/fixtures/double/output.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | -webkit-transition: all 1s; 3 | transition: all 1s; 4 | } 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | .travis.yml 3 | 4 | node_modules/ 5 | test/ 6 | 7 | gulpfile.js 8 | Gruntfile.js 9 | -------------------------------------------------------------------------------- /test/fixtures/double/input.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | -webkit-transition: all 1s; 3 | -webkit-transition: all 1s; 4 | transition: all 1s; 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | *.swp 4 | *.swo 5 | .idea/ 6 | *.iml 7 | npm-debug.log 8 | *.sublime-workspace 9 | test/fixtures/*/actual.css 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [test/fixtures/**.css] 13 | trim_trailing_whitespace = false 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /test/fixtures/linear-gradient/input.css: -------------------------------------------------------------------------------- 1 | .webkit1 { 2 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#000)); 3 | } 4 | 5 | .webkit2 { 6 | background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#000)); 7 | } 8 | 9 | .webkit3 { 10 | background: -webkit-linear-gradient(top, #fff 0%, #000 100%); 11 | } 12 | 13 | .other { 14 | background: -webkit-linear-gradient(top, #fff 0%, #000 100%); 15 | background: -moz-linear-gradient(top, #fff 0%, #000 100%); 16 | background: -o-linear-gradient(top, #fff 0%, #000 100%); 17 | } 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "postcss-unprefix", 3 | "version": "0.0.1", 4 | "description": "PostCSS plugin unprefix", 5 | "keywords": ["postcss", "css", "postcss-plugin", "autoprefixer", "prefix", "unprefix"], 6 | "author": "一丝 ", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/yisibl/postcss-unprefix.git" 11 | }, 12 | "dependencies": { 13 | "postcss": "^5.0.14", 14 | "postcss-flexboxfixer": "^0.0.4", 15 | "postcss-gradientfixer": "^0.0.5" 16 | }, 17 | "devDependencies": { 18 | "tape": "^4.4.0" 19 | }, 20 | "scripts": { 21 | "test": "tape test" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PostCSS Unprefix 2 | 3 | TODO 4 | 5 | http://blogs.msdn.com/b/ie/archive/2014/07/31/the-mobile-web-should-just-work-for-everyone.aspx 6 | http://www.ghacks.net/2015/05/09/mozilla-adds-webkit-prefix-emulation-to-select-sites-in-firefox/ 7 | 8 | ![Gif Deom](http://ww3.sinaimg.cn/bmiddle/534b48acgw1et7jyprmj3g20b40ciaes.gif) 9 | 10 | ## Input 11 | 12 | ```css 13 | .foo { 14 | -webkit-transition: padding .5s; 15 | -moz-transition: padding .5s; 16 | } 17 | ``` 18 | 19 | ## Output 20 | 21 | ```css 22 | .foo { 23 | -webkit-transition: padding .5s; 24 | -moz-transition: padding .5s; 25 | transition: padding .5s; 26 | } 27 | ``` 28 | 29 | 30 | ## Test 31 | 32 | ```console 33 | npm install 34 | npm test 35 | ``` 36 | -------------------------------------------------------------------------------- /test/fixtures/one/input.css: -------------------------------------------------------------------------------- 1 | .do-not-prefix { 2 | -webkit-touch-callout: none; 3 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 4 | -moz-osx-font-smoothing: grayscale; 5 | -webkit-font-smoothing: antialiased; 6 | } 7 | 8 | .foo { 9 | -webkit-text-size-adjust: 100%; 10 | -ms-text-size-adjust: 100%; 11 | } 12 | 13 | .border-radius { 14 | -webkit-border-radius: 30px; 15 | -moz-border-radius: 30px; 16 | } 17 | 18 | .transform { 19 | -moz-transform: translate(10px, 20%); 20 | } 21 | 22 | .transition { 23 | -webkit-transition: -webkit-transform .3s; 24 | } 25 | 26 | .other { 27 | -moz-padding: 20px; 28 | -o-padding: 20px; 29 | text-align: -webkit-center; 30 | text-align: -moz-center; 31 | text-align: -ms-center; 32 | text-align: -o-center; 33 | bar: -webkit-test; 34 | -ms-foo: 30px; 35 | } 36 | -------------------------------------------------------------------------------- /test/fixtures/linear-gradient/output.css: -------------------------------------------------------------------------------- 1 | .webkit1 { 2 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#000)); 3 | background: linear-gradient(to bottom, #fff 0%, #000 100%); 4 | } 5 | 6 | .webkit2 { 7 | background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#000)); 8 | background: linear-gradient(to bottom, #fff 0%, #000 100%); 9 | } 10 | 11 | .webkit3 { 12 | background: -webkit-linear-gradient(top, #fff 0%, #000 100%); 13 | background: linear-gradient(to bottom, #fff 0%, #000 100%); 14 | } 15 | 16 | .other { 17 | background: -webkit-linear-gradient(top, #fff 0%, #000 100%); 18 | background: -moz-linear-gradient(top, #fff 0%, #000 100%); 19 | background: -o-linear-gradient(top, #fff 0%, #000 100%); 20 | background: linear-gradient(to bottom, #fff 0%, #000 100%); 21 | } 22 | -------------------------------------------------------------------------------- /test/fixtures/one/output.css: -------------------------------------------------------------------------------- 1 | .do-not-prefix { 2 | -webkit-touch-callout: none; 3 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 4 | -moz-osx-font-smoothing: grayscale; 5 | -webkit-font-smoothing: antialiased; 6 | } 7 | 8 | .foo { 9 | -webkit-text-size-adjust: 100%; 10 | -ms-text-size-adjust: 100%; 11 | text-size-adjust: 100%; 12 | } 13 | 14 | .border-radius { 15 | -webkit-border-radius: 30px; 16 | -moz-border-radius: 30px; 17 | border-radius: 30px; 18 | } 19 | 20 | .transform { 21 | -moz-transform: translate(10px, 20%); 22 | transform: translate(10px, 20%); 23 | } 24 | 25 | .transition { 26 | -webkit-transition: -webkit-transform .3s; 27 | transition: transform .3s; 28 | } 29 | 30 | .other { 31 | -moz-padding: 20px; 32 | -o-padding: 20px; 33 | padding: 20px; 34 | text-align: -webkit-center; 35 | text-align: -moz-center; 36 | text-align: -ms-center; 37 | text-align: -o-center; 38 | bar: -webkit-test; 39 | -ms-foo: 30px; 40 | } 41 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs") 2 | var test = require("tape") 3 | var postcss = require("postcss") 4 | var plugin = require("..") 5 | 6 | 7 | function filename(name) { return "test/" + name + ".css" } 8 | function read(name) { return fs.readFileSync(name, "utf8") } 9 | 10 | function compareFixtures(t, name, msg, opts, postcssOpts) { 11 | postcssOpts = postcssOpts || {} 12 | //input 13 | postcssOpts.from = filename("fixtures/" + name + "/input") 14 | opts = opts || {} 15 | var actual = postcss() 16 | .use(plugin(opts)) 17 | .process(read(postcssOpts.from), postcssOpts) 18 | .css 19 | //output 20 | var output = read(filename("fixtures/" + name + "/output")) 21 | //actual 22 | fs.writeFile(filename("fixtures/" + name + "/actual"), actual) 23 | t.equal(actual.trim(), output.trim(), msg) 24 | } 25 | 26 | test("unprefix", function(t) { 27 | compareFixtures(t, "one", "必须生成新的不带前缀的标准属性") 28 | compareFixtures(t, "flex", "必须生成新的不带前缀的标准属性") 29 | compareFixtures(t, "double", "必须生成新的不带前缀的标准属性") 30 | // compareFixtures(t, "linear-gradient", "必须生成新的不带前缀的标准属性") 31 | t.end() 32 | }) 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 PostCSS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var postcss = require('postcss') 2 | var properties = require('./properties') 3 | var flexboxfixer = require('postcss-flexboxfixer') 4 | var gradientfixer = require('postcss-gradientfixer') 5 | 6 | var rePrefix = /^-webkit-|^-moz-(osx-)?|^-ms-|^-o-/i 7 | 8 | module.exports = postcss.plugin('postcss-unprefix', function() { 9 | //删除重复生成的声明 10 | function removeRepeatDecl(rule, i) { 11 | rule.walkDecls(function(decl, i) { 12 | var n = 0 13 | decl.parent.walkDecls(function(decla) { 14 | if (decl.prop === decla.prop && decl.value === decla.value) { 15 | n++ 16 | } 17 | }) 18 | if (n > 1) { 19 | decl.remove() 20 | } 21 | }) 22 | } 23 | 24 | return function(css) { 25 | css.walkDecls(rePrefix, function(decl) { 26 | //替换成不带前缀的属性或属性值 27 | var unPrefixProp = decl.prop.replace(rePrefix, '') 28 | var unPrefixValue = decl.value.replace(rePrefix, '') 29 | 30 | // console.log(unPrefixProp, 'unPrefixProp') 31 | 32 | //TODO? values.indexOf(unPrefixValue) 33 | // Like display: -webkit-box don't create display: box 34 | if (properties.indexOf(unPrefixProp) === -1) { 35 | return 36 | } 37 | 38 | if (decl.prop.match(rePrefix) || decl.value.match(rePrefix)) { 39 | decl.cloneAfter({ 40 | prop: unPrefixProp, 41 | value: unPrefixValue 42 | }) 43 | } 44 | }) 45 | 46 | // Use flexboxfixer add prefix 47 | postcss() 48 | .use(flexboxfixer) 49 | .use(gradientfixer) 50 | .process(css).css 51 | 52 | css.walkRules(removeRepeatDecl) 53 | } 54 | }) 55 | -------------------------------------------------------------------------------- /test/fixtures/flex/input.css: -------------------------------------------------------------------------------- 1 | .all { 2 | display: -webkit-box; 3 | display: -webkit-flex; 4 | display: -moz-box; 5 | display: -ms-flexbox; 6 | display: flex; 7 | -webkit-align-content: flex-end; 8 | -ms-flex-line-pack: end; 9 | align-content: flex-end; 10 | -webkit-box-pack: start; 11 | -webkit-justify-content: flex-start; 12 | -moz-box-pack: start; 13 | -ms-flex-pack: start; 14 | justify-content: flex-start; 15 | -webkit-box-align: baseline; 16 | -webkit-align-items: baseline; 17 | -moz-box-align: baseline; 18 | -ms-flex-align: baseline; 19 | align-items: baseline; 20 | -webkit-align-self: center; 21 | -ms-flex-item-align: center; 22 | align-self: center; 23 | -webkit-box-orient: horizontal; 24 | -webkit-box-direction: reverse; 25 | -webkit-flex-direction: row-reverse; 26 | -moz-box-orient: horizontal; 27 | -moz-box-direction: reverse; 28 | -ms-flex-direction: row-reverse; 29 | flex-direction: row-reverse; 30 | -webkit-flex-wrap: wrap; 31 | -ms-flex-wrap: wrap; 32 | flex-wrap: wrap; 33 | -webkit-flex-flow: column; 34 | -ms-flex-flow: column; 35 | flex-flow: column; 36 | -webkit-box-flex: 0; 37 | -webkit-flex: none; 38 | -moz-box-flex: 0; 39 | -ms-flex: none; 40 | flex: none; 41 | -webkit-box-flex: 9; 42 | -webkit-flex-grow: 9; 43 | -moz-box-flex: 9; 44 | -ms-flex-positive: 9; 45 | flex-grow: 9; 46 | -webkit-flex-shrink: 1; 47 | -ms-flex-negative: 1; 48 | flex-shrink: 1; 49 | -webkit-flex-basis: 300px; 50 | -ms-flex-preferred-size: 300px; 51 | flex-basis: 300px; 52 | -webkit-box-ordinal-group: 9; 53 | -webkit-order: 8; 54 | -moz-box-ordinal-group: 9; 55 | -ms-flex-order: 8; 56 | order: 8; 57 | } 58 | -------------------------------------------------------------------------------- /test/fixtures/flex/output.css: -------------------------------------------------------------------------------- 1 | .all { 2 | display: -webkit-box; 3 | display: -webkit-flex; 4 | display: -moz-box; 5 | display: -ms-flexbox; 6 | display: flex; 7 | -webkit-align-content: flex-end; 8 | -ms-flex-line-pack: end; 9 | align-content: flex-end; 10 | -webkit-box-pack: start; 11 | -webkit-justify-content: flex-start; 12 | -moz-box-pack: start; 13 | -ms-flex-pack: start; 14 | justify-content: flex-start; 15 | -webkit-box-align: baseline; 16 | -webkit-align-items: baseline; 17 | -moz-box-align: baseline; 18 | -ms-flex-align: baseline; 19 | align-items: baseline; 20 | -webkit-align-self: center; 21 | -ms-flex-item-align: center; 22 | align-self: center; 23 | -webkit-box-orient: horizontal; 24 | flex-direction: row; 25 | -webkit-box-direction: reverse; 26 | -webkit-flex-direction: row-reverse; 27 | -moz-box-orient: horizontal; 28 | -moz-box-direction: reverse; 29 | -ms-flex-direction: row-reverse; 30 | flex-direction: row-reverse; 31 | -webkit-flex-wrap: wrap; 32 | -ms-flex-wrap: wrap; 33 | flex-wrap: wrap; 34 | -webkit-flex-flow: column; 35 | -ms-flex-flow: column; 36 | flex-flow: column; 37 | -webkit-box-flex: 0; 38 | flex: 0 auto; 39 | -webkit-flex: none; 40 | flex: none auto; 41 | -moz-box-flex: 0; 42 | -ms-flex: none; 43 | flex: none; 44 | -webkit-box-flex: 9; 45 | flex: 9 auto; 46 | -webkit-flex-grow: 9; 47 | -moz-box-flex: 9; 48 | -ms-flex-positive: 9; 49 | flex-grow: 9; 50 | -webkit-flex-shrink: 1; 51 | -ms-flex-negative: 1; 52 | flex-shrink: 1; 53 | -webkit-flex-basis: 300px; 54 | -ms-flex-preferred-size: 300px; 55 | flex-basis: 300px; 56 | -webkit-box-ordinal-group: 9; 57 | -webkit-order: 8; 58 | -moz-box-ordinal-group: 9; 59 | -ms-flex-order: 8; 60 | order: 8; 61 | } 62 | -------------------------------------------------------------------------------- /array.js: -------------------------------------------------------------------------------- 1 | ["accelerator","align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","alt","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","animation-trigger","app-region","appearance","aspect-ratio","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-clip","background-color","background-composite","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","behavior","binding","bleed","block-progression","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-after","border-after-color","border-after-style","border-after-width","border-before","border-before-color","border-before-style","border-before-width","border-bottom","border-bottom-color","border-bottom-colors","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end","border-end-color","border-end-style","border-end-width","border-fit","border-horizontal-spacing","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-colors","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-colors","border-right-style","border-right-width","border-spacing","border-start","border-start-color","border-start-style","border-start-width","border-style","border-top","border-top-color","border-top-colors","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-vertical-spacing","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-reflect","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","chains","clear","clip","clip-path","clip-rule","color","color-correction","color-interpolation-filters","color-profile","column-axis","column-break-after","column-break-before","column-break-inside","column-count","column-fill","column-gap","column-progression","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-zoom-chaining","content-zoom-limit","content-zoom-limit-max","content-zoom-limit-min","content-zoom-snap","content-zoom-snap-points","content-zoom-snap-type","content-zooming","control-character-visibility","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","cursor-visibility","dashboard-region","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","filter","flex","flex-align","flex-basis","flex-direction","flex-flow","flex-grow","flex-item-align","flex-line-pack","flex-negative","flex-order","flex-pack","flex-positive","flex-preferred-size","flex-shrink","flex-wrap","float","float-edge","float-offset","flood-color","flood-opacity","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-size-delta","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","force-broken-image-icon","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-align","grid-column-end","grid-column-span","grid-column-start","grid-columns","grid-row","grid-row-align","grid-row-end","grid-row-span","grid-row-start","grid-rows","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","high-contrast-adjust","highlight","hyphenate-character","hyphenate-limit-after","hyphenate-limit-before","hyphenate-limit-chars","hyphenate-limit-lines","hyphenate-limit-zone","hyphens","icon","image-orientation","image-region","image-resolution","ime-align","ime-mode","initial-letter","inline-box-align","interpolation-mode","justify-content","justify-items","justify-self","layout-flow","layout-grid","layout-grid-char","layout-grid-line","layout-grid-mode","layout-grid-type","left","letter-spacing","lighting-color","line-align","line-box-contain","line-break","line-clamp","line-grid","line-height","line-snap","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","locale","logical-height","logical-width","margin","margin-after","margin-after-collapse","margin-before","margin-before-collapse","margin-bottom","margin-bottom-collapse","margin-collapse","margin-end","margin-left","margin-right","margin-start","margin-top","margin-top-collapse","marker-offset","marks","marquee","marquee-direction","marquee-increment","marquee-repetition","marquee-speed","marquee-style","mask","mask-box","mask-box-image","mask-box-image-outset","mask-box-image-repeat","mask-box-image-slice","mask-box-image-source","mask-box-image-width","mask-box-outset","mask-box-repeat","mask-box-slice","mask-box-source","mask-box-width","mask-clip","mask-composite","mask-image","mask-origin","mask-position","mask-position-x","mask-position-y","mask-repeat","mask-repeat-x","mask-repeat-y","mask-size","mask-source-type","mask-type","math-display","math-variant","max-height","max-lines","max-logical-height","max-logical-width","max-width","min-height","min-logical-height","min-logical-width","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","nbsp-mode","object-fit","object-position","opacity","order","orient","orphans","osx-font-smoothing","outline","outline-color","outline-offset","outline-radius","outline-radius-bottomleft","outline-radius-bottomright","outline-radius-topleft","outline-radius-topright","outline-style","outline-width","overflow","overflow-scrolling","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-after","padding-before","padding-bottom","padding-end","padding-left","padding-right","padding-start","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","perspective-origin-x","perspective-origin-y","pitch","pitch-range","play-during","position","presentation-level","print-color-adjust","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","rtl-ordering","ruby-align","ruby-overhang","ruby-position","ruby-span","script-level","script-min-size","script-size-multiplier","scroll-chaining","scroll-limit","scroll-limit-x-max","scroll-limit-x-min","scroll-limit-y-max","scroll-limit-y-min","scroll-rails","scroll-snap-coordinate","scroll-snap-destination","scroll-snap-points-x","scroll-snap-points-y","scroll-snap-type","scroll-snap-x","scroll-snap-y","scroll-translation","scrollbar-3dlight-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-darkshadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","shape-image-threshold","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stack-sizing","stress","string-set","svg-shadow","tab-size","table-layout","tap-highlight-color","target","target-name","target-new","target-position","text-align","text-align-last","text-autospace","text-combine","text-combine-horizontal","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-decorations-in-effect","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-fill-color","text-height","text-indent","text-justify","text-kashida-space","text-orientation","text-outline","text-overflow","text-security","text-shadow","text-size-adjust","text-space-collapse","text-stroke","text-stroke-color","text-stroke-width","text-transform","text-underline-position","text-wrap","top","touch-action","touch-callout","touch-select","transform","transform-origin","transform-origin-x","transform-origin-y","transform-origin-z","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","user-drag","user-focus","user-input","user-modify","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","window-dragging","window-shadow","word-break","word-spacing","word-wrap","wrap-flow","wrap-margin","wrap-through","writing-mode","z-index","zoom"] -------------------------------------------------------------------------------- /properties.js: -------------------------------------------------------------------------------- 1 | // TODO: -moz-osx-font-smoothing 2 | // https://maximilianhoffmann.com/posts/better-font-rendering-on-osx 3 | // From: http://peter.sh/experiments/vendor-prefixed-css-property-overview 4 | // min--moz-device-pixel-ratio/-moz-min-device-pixel-ratio 5 | module.exports = [ 6 | //以下属性不生成标准属性 7 | // "font-smoothing", 8 | // "tap-highlight-color", 9 | // "touch-callout", 10 | // flexbox 相关 11 | // "flex-align", 12 | // "flex-item-align", 13 | // "flex-line-pack", 14 | // "flex-negative", 15 | // "flex-order", 16 | // "flex-pack", 17 | // "flex-positive", 18 | // "flex-preferred-size", 19 | // "box-align", 20 | // "box-direction", 21 | // "box-flex", 22 | // "box-flex-group", 23 | // "box-lines", 24 | // "box-ordinal-group", 25 | // "box-orient", 26 | // "box-pack", 27 | "align-content", 28 | "align-items", 29 | "align-self", 30 | "alt", 31 | "animation", 32 | "animation-delay", 33 | "animation-direction", 34 | "animation-duration", 35 | "animation-fill-mode", 36 | "animation-iteration-count", 37 | "animation-name", 38 | "animation-play-state", 39 | "animation-timing-function", 40 | "animation-trigger", 41 | "appearance", 42 | "aspect-ratio", 43 | "backdrop-filter", 44 | "backface-visibility", 45 | "background-clip", 46 | "background-composite", 47 | "background-origin", 48 | "background-size", 49 | "border-after", 50 | "border-after-color", 51 | "border-after-style", 52 | "border-after-width", 53 | "border-before", 54 | "border-before-color", 55 | "border-before-style", 56 | "border-before-width", 57 | "border-bottom-left-radius", 58 | "border-bottom-right-radius", 59 | "border-end", 60 | "border-end-color", 61 | "border-end-style", 62 | "border-end-width", 63 | "border-fit", 64 | "border-horizontal-spacing", 65 | "border-image", 66 | "border-radius", 67 | "border-start", 68 | "border-start-color", 69 | "border-start-style", 70 | "border-start-width", 71 | "border-top-left-radius", 72 | "border-top-right-radius", 73 | "border-vertical-spacing", 74 | "box-decoration-break", 75 | "box-reflect", 76 | "box-shadow", 77 | "box-sizing", 78 | "clip-path", 79 | "color-correction", 80 | "column-axis", 81 | "column-break-after", 82 | "column-break-before", 83 | "column-break-inside", 84 | "column-count", 85 | "column-fill", 86 | "column-gap", 87 | "column-progression", 88 | "column-rule", 89 | "column-rule-color", 90 | "column-rule-style", 91 | "column-rule-width", 92 | "column-span", 93 | "column-width", 94 | "columns", 95 | "cursor-visibility", 96 | "dashboard-region", 97 | "filter", 98 | "flex", 99 | "flex-basis", 100 | "flex-direction", 101 | "flex-flow", 102 | "flex-grow", 103 | "flex-shrink", 104 | "flex-wrap", 105 | "flow-from", 106 | "flow-into", 107 | "font-feature-settings", 108 | "font-kerning", 109 | "font-size-delta", 110 | "font-variant-ligatures", 111 | "grid", 112 | "grid-area", 113 | "grid-auto-columns", 114 | "grid-auto-flow", 115 | "grid-auto-rows", 116 | "grid-column", 117 | "grid-column-end", 118 | "grid-column-start", 119 | "grid-row", 120 | "grid-row-end", 121 | "grid-row-start", 122 | "grid-template", 123 | "grid-template-areas", 124 | "grid-template-columns", 125 | "grid-template-rows", 126 | "hyphenate-character", 127 | "hyphenate-limit-after", 128 | "hyphenate-limit-before", 129 | "hyphenate-limit-lines", 130 | "hyphens", 131 | "initial-letter", 132 | "justify-content", 133 | "justify-items", 134 | "justify-self", 135 | "line-align", 136 | "line-box-contain", 137 | "line-break", 138 | "line-clamp", 139 | "line-grid", 140 | "line-snap", 141 | "locale", 142 | "logical-height", 143 | "logical-width", 144 | "margin-after", 145 | "margin-after-collapse", 146 | "margin-before", 147 | "margin-before-collapse", 148 | "margin-bottom-collapse", 149 | "margin-collapse", 150 | "margin-end", 151 | "margin-start", 152 | "margin-top-collapse", 153 | "marquee", 154 | "marquee-direction", 155 | "marquee-increment", 156 | "marquee-repetition", 157 | "marquee-speed", 158 | "marquee-style", 159 | "mask", 160 | "mask-box-image", 161 | "mask-box-image-outset", 162 | "mask-box-image-repeat", 163 | "mask-box-image-slice", 164 | "mask-box-image-source", 165 | "mask-box-image-width", 166 | "mask-clip", 167 | "mask-composite", 168 | "mask-image", 169 | "mask-origin", 170 | "mask-position", 171 | "mask-position-x", 172 | "mask-position-y", 173 | "mask-repeat", 174 | "mask-repeat-x", 175 | "mask-repeat-y", 176 | "mask-size", 177 | "mask-source-type", 178 | "max-logical-height", 179 | "max-logical-width", 180 | "min-logical-height", 181 | "min-logical-width", 182 | "nbsp-mode", 183 | "opacity", 184 | "order", 185 | "overflow-scrolling", 186 | "padding-after", 187 | "padding-before", 188 | "padding-end", 189 | "padding-start", 190 | "perspective", 191 | "perspective-origin", 192 | "perspective-origin-x", 193 | "perspective-origin-y", 194 | "print-color-adjust", 195 | "region-break-after", 196 | "region-break-before", 197 | "region-break-inside", 198 | "region-fragment", 199 | "rtl-ordering", 200 | "ruby-position", 201 | "scroll-snap-coordinate", 202 | "scroll-snap-destination", 203 | "scroll-snap-points-x", 204 | "scroll-snap-points-y", 205 | "scroll-snap-type", 206 | "shape-image-threshold", 207 | "shape-margin", 208 | "shape-outside", 209 | "svg-shadow", 210 | "text-align-last", 211 | "text-combine", 212 | "text-decoration", 213 | "text-decoration-color", 214 | "text-decoration-line", 215 | "text-decoration-skip", 216 | "text-decoration-style", 217 | "text-decorations-in-effect", 218 | "text-emphasis", 219 | "text-emphasis-color", 220 | "text-emphasis-position", 221 | "text-emphasis-style", 222 | "text-fill-color", 223 | "text-justify", 224 | "text-orientation", 225 | "text-security", 226 | "text-size-adjust", 227 | "text-stroke", 228 | "text-stroke-color", 229 | "text-stroke-width", 230 | "text-underline-position", 231 | "transform", 232 | "transform-origin", 233 | "transform-origin-x", 234 | "transform-origin-y", 235 | "transform-origin-z", 236 | "transform-style", 237 | "transition", 238 | "transition-delay", 239 | "transition-duration", 240 | "transition-property", 241 | "transition-timing-function", 242 | "user-drag", 243 | "user-modify", 244 | "user-select", 245 | "writing-mode", 246 | "app-region", 247 | "highlight", 248 | "binding", 249 | "border-bottom-colors", 250 | "border-left-colors", 251 | "border-right-colors", 252 | "border-top-colors", 253 | "control-character-visibility", 254 | "float-edge", 255 | "force-broken-image-icon", 256 | "image-region", 257 | "math-display", 258 | "math-variant", 259 | "orient", 260 | "outline-radius", 261 | "outline-radius-bottomleft", 262 | "outline-radius-bottomright", 263 | "outline-radius-topleft", 264 | "outline-radius-topright", 265 | "script-level", 266 | "script-min-size", 267 | "script-size-multiplier", 268 | "stack-sizing", 269 | "tab-size", 270 | "user-focus", 271 | "user-input", 272 | "window-dragging", 273 | "window-shadow", 274 | "accelerator", 275 | "background-position-x", 276 | "background-position-y", 277 | "behavior", 278 | "block-progression", 279 | "content-zoom-chaining", 280 | "content-zoom-limit", 281 | "content-zoom-limit-max", 282 | "content-zoom-limit-min", 283 | "content-zoom-snap", 284 | "content-zoom-snap-points", 285 | "content-zoom-snap-type", 286 | "content-zooming", 287 | "grid-column-align", 288 | "grid-column-span", 289 | "grid-columns", 290 | "grid-row-align", 291 | "grid-row-span", 292 | "grid-rows", 293 | "high-contrast-adjust", 294 | "hyphenate-limit-chars", 295 | "hyphenate-limit-zone", 296 | "ime-align", 297 | "ime-mode", 298 | "interpolation-mode", 299 | "layout-flow", 300 | "layout-grid", 301 | "layout-grid-char", 302 | "layout-grid-line", 303 | "layout-grid-mode", 304 | "layout-grid-type", 305 | "overflow-style", 306 | "overflow-x", 307 | "overflow-y", 308 | "scroll-chaining", 309 | "scroll-limit", 310 | "scroll-limit-x-max", 311 | "scroll-limit-x-min", 312 | "scroll-limit-y-max", 313 | "scroll-limit-y-min", 314 | "scroll-rails", 315 | "scroll-snap-x", 316 | "scroll-snap-y", 317 | "scroll-translation", 318 | "scrollbar-3dlight-color", 319 | "scrollbar-arrow-color", 320 | "scrollbar-base-color", 321 | "scrollbar-darkshadow-color", 322 | "scrollbar-face-color", 323 | "scrollbar-highlight-color", 324 | "scrollbar-shadow-color", 325 | "scrollbar-track-color", 326 | "text-autospace", 327 | "text-combine-horizontal", 328 | "text-kashida-space", 329 | "text-overflow", 330 | "touch-action", 331 | "touch-select", 332 | "word-break", 333 | "word-wrap", 334 | "wrap-flow", 335 | "wrap-margin", 336 | "wrap-through", 337 | "zoom", 338 | "alignment-adjust", 339 | "alignment-baseline", 340 | "all", 341 | "anchor-point", 342 | "azimuth", 343 | "background", 344 | "background-attachment", 345 | "background-color", 346 | "background-image", 347 | "background-position", 348 | "background-repeat", 349 | "baseline-shift", 350 | "bleed", 351 | "bookmark-label", 352 | "bookmark-level", 353 | "bookmark-state", 354 | "bookmark-target", 355 | "border", 356 | "border-bottom", 357 | "border-bottom-color", 358 | "border-bottom-style", 359 | "border-bottom-width", 360 | "border-collapse", 361 | "border-color", 362 | "border-image-outset", 363 | "border-image-repeat", 364 | "border-image-slice", 365 | "border-image-source", 366 | "border-image-width", 367 | "border-left", 368 | "border-left-color", 369 | "border-left-style", 370 | "border-left-width", 371 | "border-right", 372 | "border-right-color", 373 | "border-right-style", 374 | "border-right-width", 375 | "border-spacing", 376 | "border-style", 377 | "border-top", 378 | "border-top-color", 379 | "border-top-style", 380 | "border-top-width", 381 | "border-width", 382 | "bottom", 383 | "break-after", 384 | "break-before", 385 | "break-inside", 386 | "caption-side", 387 | "chains", 388 | "clear", 389 | "clip", 390 | "clip-rule", 391 | "color", 392 | "color-interpolation-filters", 393 | "color-profile", 394 | "contain", 395 | "content", 396 | "counter-increment", 397 | "counter-reset", 398 | "crop", 399 | "cue", 400 | "cue-after", 401 | "cue-before", 402 | "cursor", 403 | "direction", 404 | "display", 405 | "dominant-baseline", 406 | "drop-initial-after-adjust", 407 | "drop-initial-after-align", 408 | "drop-initial-before-adjust", 409 | "drop-initial-before-align", 410 | "drop-initial-size", 411 | "drop-initial-value", 412 | "elevation", 413 | "empty-cells", 414 | "float", 415 | "float-offset", 416 | "flood-color", 417 | "flood-opacity", 418 | "font", 419 | "font-family", 420 | "font-language-override", 421 | "font-size", 422 | "font-size-adjust", 423 | "font-stretch", 424 | "font-style", 425 | "font-synthesis", 426 | "font-variant", 427 | "font-variant-alternates", 428 | "font-variant-caps", 429 | "font-variant-east-asian", 430 | "font-variant-numeric", 431 | "font-variant-position", 432 | "font-weight", 433 | "grid-auto-position", 434 | "hanging-punctuation", 435 | "height", 436 | "icon", 437 | "image-orientation", 438 | "image-resolution", 439 | "inline-box-align", 440 | "left", 441 | "letter-spacing", 442 | "lighting-color", 443 | "line-height", 444 | "line-stacking", 445 | "line-stacking-ruby", 446 | "line-stacking-shift", 447 | "line-stacking-strategy", 448 | "list-style", 449 | "list-style-image", 450 | "list-style-position", 451 | "list-style-type", 452 | "margin", 453 | "margin-bottom", 454 | "margin-left", 455 | "margin-right", 456 | "margin-top", 457 | "marker-offset", 458 | "marks", 459 | "mask-box", 460 | "mask-box-outset", 461 | "mask-box-repeat", 462 | "mask-box-slice", 463 | "mask-box-source", 464 | "mask-box-width", 465 | "mask-type", 466 | "max-height", 467 | "max-lines", 468 | "max-width", 469 | "min-height", 470 | "min-width", 471 | "move-to", 472 | "nav-down", 473 | "nav-index", 474 | "nav-left", 475 | "nav-right", 476 | "nav-up", 477 | "object-fit", 478 | "object-position", 479 | "orphans", 480 | "outline", 481 | "outline-color", 482 | "outline-offset", 483 | "outline-style", 484 | "outline-width", 485 | "overflow", 486 | "overflow-wrap", 487 | "padding", 488 | "padding-bottom", 489 | "padding-left", 490 | "padding-right", 491 | "padding-top", 492 | "page", 493 | "page-break-after", 494 | "page-break-before", 495 | "page-break-inside", 496 | "page-policy", 497 | "pause", 498 | "pause-after", 499 | "pause-before", 500 | "pitch", 501 | "pitch-range", 502 | "play-during", 503 | "position", 504 | "presentation-level", 505 | "quotes", 506 | "rendering-intent", 507 | "resize", 508 | "rest", 509 | "rest-after", 510 | "rest-before", 511 | "richness", 512 | "right", 513 | "rotation", 514 | "rotation-point", 515 | "ruby-align", 516 | "ruby-overhang", 517 | "ruby-span", 518 | "size", 519 | "speak", 520 | "speak-as", 521 | "speak-header", 522 | "speak-numeral", 523 | "speak-punctuation", 524 | "speech-rate", 525 | "stress", 526 | "string-set", 527 | "table-layout", 528 | "target", 529 | "target-name", 530 | "target-new", 531 | "target-position", 532 | "text-align", 533 | "text-height", 534 | "text-indent", 535 | "text-outline", 536 | "text-shadow", 537 | "text-space-collapse", 538 | "text-transform", 539 | "text-wrap", 540 | "top", 541 | "unicode-bidi", 542 | "vertical-align", 543 | "visibility", 544 | "voice-balance", 545 | "voice-duration", 546 | "voice-family", 547 | "voice-pitch", 548 | "voice-range", 549 | "voice-rate", 550 | "voice-stress", 551 | "voice-volume", 552 | "volume", 553 | "white-space", 554 | "widows", 555 | "width", 556 | "word-spacing", 557 | "z-index" 558 | ] 559 | -------------------------------------------------------------------------------- /demo.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs') 2 | 3 | // All CSS properties 4 | var allProp = [ 5 | 'align-content', 6 | 'align-items', 7 | 'align-self', 8 | 'alt', 9 | 'animation', 10 | 'animation-delay', 11 | 'animation-direction', 12 | 'animation-duration', 13 | 'animation-fill-mode', 14 | 'animation-iteration-count', 15 | 'animation-name', 16 | 'animation-play-state', 17 | 'animation-timing-function', 18 | 'animation-trigger', 19 | 'appearance', 20 | 'aspect-ratio', 21 | 'backdrop-filter', 22 | 'backface-visibility', 23 | 'background-clip', 24 | 'background-composite', 25 | 'background-origin', 26 | 'background-size', 27 | 'border-after', 28 | 'border-after-color', 29 | 'border-after-style', 30 | 'border-after-width', 31 | 'border-before', 32 | 'border-before-color', 33 | 'border-before-style', 34 | 'border-before-width', 35 | 'border-bottom-left-radius', 36 | 'border-bottom-right-radius', 37 | 'border-end', 38 | 'border-end-color', 39 | 'border-end-style', 40 | 'border-end-width', 41 | 'border-fit', 42 | 'border-horizontal-spacing', 43 | 'border-image', 44 | 'border-radius', 45 | 'border-start', 46 | 'border-start-color', 47 | 'border-start-style', 48 | 'border-start-width', 49 | 'border-top-left-radius', 50 | 'border-top-right-radius', 51 | 'border-vertical-spacing', 52 | 'box-align', 53 | 'box-decoration-break', 54 | 'box-direction', 55 | 'box-flex', 56 | 'box-flex-group', 57 | 'box-lines', 58 | 'box-ordinal-group', 59 | 'box-orient', 60 | 'box-pack', 61 | 'box-reflect', 62 | 'box-shadow', 63 | 'box-sizing', 64 | 'clip-path', 65 | 'color-correction', 66 | 'column-axis', 67 | 'column-break-after', 68 | 'column-break-before', 69 | 'column-break-inside', 70 | 'column-count', 71 | 'column-fill', 72 | 'column-gap', 73 | 'column-progression', 74 | 'column-rule', 75 | 'column-rule-color', 76 | 'column-rule-style', 77 | 'column-rule-width', 78 | 'column-span', 79 | 'column-width', 80 | 'columns', 81 | 'cursor-visibility', 82 | 'dashboard-region', 83 | 'filter', 84 | 'flex', 85 | 'flex-basis', 86 | 'flex-direction', 87 | 'flex-flow', 88 | 'flex-grow', 89 | 'flex-shrink', 90 | 'flex-wrap', 91 | 'flow-from', 92 | 'flow-into', 93 | 'font-feature-settings', 94 | 'font-kerning', 95 | 'font-size-delta', 96 | 'font-smoothing', 97 | 'font-variant-ligatures', 98 | 'grid', 99 | 'grid-area', 100 | 'grid-auto-columns', 101 | 'grid-auto-flow', 102 | 'grid-auto-rows', 103 | 'grid-column', 104 | 'grid-column-end', 105 | 'grid-column-start', 106 | 'grid-row', 107 | 'grid-row-end', 108 | 'grid-row-start', 109 | 'grid-template', 110 | 'grid-template-areas', 111 | 'grid-template-columns', 112 | 'grid-template-rows', 113 | 'hyphenate-character', 114 | 'hyphenate-limit-after', 115 | 'hyphenate-limit-before', 116 | 'hyphenate-limit-lines', 117 | 'hyphens', 118 | 'initial-letter', 119 | 'justify-content', 120 | 'justify-items', 121 | 'justify-self', 122 | 'line-align', 123 | 'line-box-contain', 124 | 'line-break', 125 | 'line-clamp', 126 | 'line-grid', 127 | 'line-snap', 128 | 'locale', 129 | 'logical-height', 130 | 'logical-width', 131 | 'margin-after', 132 | 'margin-after-collapse', 133 | 'margin-before', 134 | 'margin-before-collapse', 135 | 'margin-bottom-collapse', 136 | 'margin-collapse', 137 | 'margin-end', 138 | 'margin-start', 139 | 'margin-top-collapse', 140 | 'marquee', 141 | 'marquee-direction', 142 | 'marquee-increment', 143 | 'marquee-repetition', 144 | 'marquee-speed', 145 | 'marquee-style', 146 | 'mask', 147 | 'mask-box-image', 148 | 'mask-box-image-outset', 149 | 'mask-box-image-repeat', 150 | 'mask-box-image-slice', 151 | 'mask-box-image-source', 152 | 'mask-box-image-width', 153 | 'mask-clip', 154 | 'mask-composite', 155 | 'mask-image', 156 | 'mask-origin', 157 | 'mask-position', 158 | 'mask-position-x', 159 | 'mask-position-y', 160 | 'mask-repeat', 161 | 'mask-repeat-x', 162 | 'mask-repeat-y', 163 | 'mask-size', 164 | 'mask-source-type', 165 | 'max-logical-height', 166 | 'max-logical-width', 167 | 'min-logical-height', 168 | 'min-logical-width', 169 | 'nbsp-mode', 170 | 'opacity', 171 | 'order', 172 | 'overflow-scrolling', 173 | 'padding-after', 174 | 'padding-before', 175 | 'padding-end', 176 | 'padding-start', 177 | 'perspective', 178 | 'perspective-origin', 179 | 'perspective-origin-x', 180 | 'perspective-origin-y', 181 | 'print-color-adjust', 182 | 'region-break-after', 183 | 'region-break-before', 184 | 'region-break-inside', 185 | 'region-fragment', 186 | 'rtl-ordering', 187 | 'ruby-position', 188 | 'scroll-snap-coordinate', 189 | 'scroll-snap-destination', 190 | 'scroll-snap-points-x', 191 | 'scroll-snap-points-y', 192 | 'scroll-snap-type', 193 | 'shape-image-threshold', 194 | 'shape-margin', 195 | 'shape-outside', 196 | 'svg-shadow', 197 | 'tap-highlight-color', 198 | 'text-align-last', 199 | 'text-combine', 200 | 'text-decoration', 201 | 'text-decoration-color', 202 | 'text-decoration-line', 203 | 'text-decoration-skip', 204 | 'text-decoration-style', 205 | 'text-decorations-in-effect', 206 | 'text-emphasis', 207 | 'text-emphasis-color', 208 | 'text-emphasis-position', 209 | 'text-emphasis-style', 210 | 'text-fill-color', 211 | 'text-justify', 212 | 'text-orientation', 213 | 'text-security', 214 | 'text-size-adjust', 215 | 'text-stroke', 216 | 'text-stroke-color', 217 | 'text-stroke-width', 218 | 'text-underline-position', 219 | 'touch-callout', 220 | 'transform', 221 | 'transform-origin', 222 | 'transform-origin-x', 223 | 'transform-origin-y', 224 | 'transform-origin-z', 225 | 'transform-style', 226 | 'transition', 227 | 'transition-delay', 228 | 'transition-duration', 229 | 'transition-property', 230 | 'transition-timing-function', 231 | 'user-drag', 232 | 'user-modify', 233 | 'user-select', 234 | 'writing-mode', 235 | 236 | 237 | 'align-content', 238 | 'align-items', 239 | 'align-self', 240 | 'animation', 241 | 'animation-delay', 242 | 'animation-direction', 243 | 'animation-duration', 244 | 'animation-fill-mode', 245 | 'animation-iteration-count', 246 | 'animation-name', 247 | 'animation-play-state', 248 | 'animation-timing-function', 249 | 'app-region', 250 | 'appearance', 251 | 'aspect-ratio', 252 | 'backface-visibility', 253 | 'background-clip', 254 | 'background-composite', 255 | 'background-origin', 256 | 'background-size', 257 | 'border-after', 258 | 'border-after-color', 259 | 'border-after-style', 260 | 'border-after-width', 261 | 'border-before', 262 | 'border-before-color', 263 | 'border-before-style', 264 | 'border-before-width', 265 | 'border-bottom-left-radius', 266 | 'border-bottom-right-radius', 267 | 'border-end', 268 | 'border-end-color', 269 | 'border-end-style', 270 | 'border-end-width', 271 | 'border-fit', 272 | 'border-horizontal-spacing', 273 | 'border-image', 274 | 'border-radius', 275 | 'border-start', 276 | 'border-start-color', 277 | 'border-start-style', 278 | 'border-start-width', 279 | 'border-top-left-radius', 280 | 'border-top-right-radius', 281 | 'border-vertical-spacing', 282 | 'box-align', 283 | 'box-decoration-break', 284 | 'box-direction', 285 | 'box-flex', 286 | 'box-flex-group', 287 | 'box-lines', 288 | 'box-ordinal-group', 289 | 'box-orient', 290 | 'box-pack', 291 | 'box-reflect', 292 | 'box-shadow', 293 | 'box-sizing', 294 | 'clip-path', 295 | 'column-break-after', 296 | 'column-break-before', 297 | 'column-break-inside', 298 | 'column-count', 299 | 'column-gap', 300 | 'column-rule', 301 | 'column-rule-color', 302 | 'column-rule-style', 303 | 'column-rule-width', 304 | 'column-span', 305 | 'column-width', 306 | 'columns', 307 | 'filter', 308 | 'flex', 309 | 'flex-basis', 310 | 'flex-direction', 311 | 'flex-flow', 312 | 'flex-grow', 313 | 'flex-shrink', 314 | 'flex-wrap', 315 | 'font-feature-settings', 316 | 'font-size-delta', 317 | 'font-smoothing', 318 | 'highlight', 319 | 'hyphenate-character', 320 | 'justify-content', 321 | 'line-box-contain', 322 | 'line-break', 323 | 'line-clamp', 324 | 'locale', 325 | 'logical-height', 326 | 'logical-width', 327 | 'margin-after', 328 | 'margin-after-collapse', 329 | 'margin-before', 330 | 'margin-before-collapse', 331 | 'margin-bottom-collapse', 332 | 'margin-collapse', 333 | 'margin-end', 334 | 'margin-start', 335 | 'margin-top-collapse', 336 | 'mask', 337 | 'mask-box-image', 338 | 'mask-box-image-outset', 339 | 'mask-box-image-repeat', 340 | 'mask-box-image-slice', 341 | 'mask-box-image-source', 342 | 'mask-box-image-width', 343 | 'mask-clip', 344 | 'mask-composite', 345 | 'mask-image', 346 | 'mask-origin', 347 | 'mask-position', 348 | 'mask-position-x', 349 | 'mask-position-y', 350 | 'mask-repeat', 351 | 'mask-repeat-x', 352 | 'mask-repeat-y', 353 | 'mask-size', 354 | 'max-logical-height', 355 | 'max-logical-width', 356 | 'min-logical-height', 357 | 'min-logical-width', 358 | 'opacity', 359 | 'order', 360 | 'padding-after', 361 | 'padding-before', 362 | 'padding-end', 363 | 'padding-start', 364 | 'perspective', 365 | 'perspective-origin', 366 | 'perspective-origin-x', 367 | 'perspective-origin-y', 368 | 'print-color-adjust', 369 | 'rtl-ordering', 370 | 'ruby-position', 371 | 'shape-image-threshold', 372 | 'shape-margin', 373 | 'shape-outside', 374 | 'tap-highlight-color', 375 | 'text-combine', 376 | 'text-decorations-in-effect', 377 | 'text-emphasis', 378 | 'text-emphasis-color', 379 | 'text-emphasis-position', 380 | 'text-emphasis-style', 381 | 'text-fill-color', 382 | 'text-orientation', 383 | 'text-security', 384 | 'text-stroke', 385 | 'text-stroke-color', 386 | 'text-stroke-width', 387 | 'transform', 388 | 'transform-origin', 389 | 'transform-origin-x', 390 | 'transform-origin-y', 391 | 'transform-origin-z', 392 | 'transform-style', 393 | 'transition', 394 | 'transition-delay', 395 | 'transition-duration', 396 | 'transition-property', 397 | 'transition-timing-function', 398 | 'user-drag', 399 | 'user-modify', 400 | 'user-select', 401 | 'writing-mode', 402 | 403 | 'appearance', 404 | 'binding', 405 | 'border-bottom-colors', 406 | 'border-end', 407 | 'border-end-color', 408 | 'border-end-style', 409 | 'border-end-width', 410 | 'border-left-colors', 411 | 'border-right-colors', 412 | 'border-start', 413 | 'border-start-color', 414 | 'border-start-style', 415 | 'border-start-width', 416 | 'border-top-colors', 417 | 'box-align', 418 | 'box-direction', 419 | 'box-flex', 420 | 'box-ordinal-group', 421 | 'box-orient', 422 | 'box-pack', 423 | 'column-count', 424 | 'column-fill', 425 | 'column-gap', 426 | 'column-rule', 427 | 'column-rule-color', 428 | 'column-rule-style', 429 | 'column-rule-width', 430 | 'column-width', 431 | 'columns', 432 | 'control-character-visibility', 433 | 'float-edge', 434 | 'force-broken-image-icon', 435 | 'hyphens', 436 | 'image-region', 437 | 'margin-end', 438 | 'margin-start', 439 | 'math-display', 440 | 'math-variant', 441 | 'orient', 442 | 'osx-font-smoothing', 443 | 'outline-radius', 444 | 'outline-radius-bottomleft', 445 | 'outline-radius-bottomright', 446 | 'outline-radius-topleft', 447 | 'outline-radius-topright', 448 | 'padding-end', 449 | 'padding-start', 450 | 'script-level', 451 | 'script-min-size', 452 | 'script-size-multiplier', 453 | 'stack-sizing', 454 | 'tab-size', 455 | 'text-align-last', 456 | 'text-decoration-color', 457 | 'text-decoration-line', 458 | 'text-decoration-style', 459 | 'text-size-adjust', 460 | 'transform', 461 | 'user-focus', 462 | 'user-input', 463 | 'user-modify', 464 | 'user-select', 465 | 'window-dragging', 466 | 'window-shadow', 467 | 468 | 'accelerator', 469 | 'animation', 470 | 'animation-delay', 471 | 'animation-direction', 472 | 'animation-duration', 473 | 'animation-fill-mode', 474 | 'animation-iteration-count', 475 | 'animation-name', 476 | 'animation-play-state', 477 | 'animation-timing-function', 478 | 'backface-visibility', 479 | 'background-position-x', 480 | 'background-position-y', 481 | 'behavior', 482 | 'block-progression', 483 | 'content-zoom-chaining', 484 | 'content-zoom-limit', 485 | 'content-zoom-limit-max', 486 | 'content-zoom-limit-min', 487 | 'content-zoom-snap', 488 | 'content-zoom-snap-points', 489 | 'content-zoom-snap-type', 490 | 'content-zooming', 491 | 'filter', 492 | 'flex', 493 | 'flex-align', 494 | 'flex-direction', 495 | 'flex-flow', 496 | 'flex-item-align', 497 | 'flex-line-pack', 498 | 'flex-negative', 499 | 'flex-order', 500 | 'flex-pack', 501 | 'flex-positive', 502 | 'flex-preferred-size', 503 | 'flex-wrap', 504 | 'flow-from', 505 | 'flow-into', 506 | 'font-feature-settings', 507 | 'grid-column', 508 | 'grid-column-align', 509 | 'grid-column-span', 510 | 'grid-columns', 511 | 'grid-row', 512 | 'grid-row-align', 513 | 'grid-row-span', 514 | 'grid-rows', 515 | 'high-contrast-adjust', 516 | 'hyphenate-limit-chars', 517 | 'hyphenate-limit-lines', 518 | 'hyphenate-limit-zone', 519 | 'hyphens', 520 | 'ime-align', 521 | 'ime-mode', 522 | 'interpolation-mode', 523 | 'layout-flow', 524 | 'layout-grid', 525 | 'layout-grid-char', 526 | 'layout-grid-line', 527 | 'layout-grid-mode', 528 | 'layout-grid-type', 529 | 'line-break', 530 | 'overflow-style', 531 | 'overflow-x', 532 | 'overflow-y', 533 | 'perspective', 534 | 'perspective-origin', 535 | 'perspective-origin-x', 536 | 'perspective-origin-y', 537 | 'scroll-chaining', 538 | 'scroll-limit', 539 | 'scroll-limit-x-max', 540 | 'scroll-limit-x-min', 541 | 'scroll-limit-y-max', 542 | 'scroll-limit-y-min', 543 | 'scroll-rails', 544 | 'scroll-snap-points-x', 545 | 'scroll-snap-points-y', 546 | 'scroll-snap-type', 547 | 'scroll-snap-x', 548 | 'scroll-snap-y', 549 | 'scroll-translation', 550 | 'scrollbar-3dlight-color', 551 | 'scrollbar-arrow-color', 552 | 'scrollbar-base-color', 553 | 'scrollbar-darkshadow-color', 554 | 'scrollbar-face-color', 555 | 'scrollbar-highlight-color', 556 | 'scrollbar-shadow-color', 557 | 'scrollbar-track-color', 558 | 'text-align-last', 559 | 'text-autospace', 560 | 'text-combine-horizontal', 561 | 'text-justify', 562 | 'text-kashida-space', 563 | 'text-overflow', 564 | 'text-size-adjust', 565 | 'text-underline-position', 566 | 'touch-action', 567 | 'touch-select', 568 | 'transform', 569 | 'transform-origin', 570 | 'transform-origin-x', 571 | 'transform-origin-y', 572 | 'transform-origin-z', 573 | 'transform-style', 574 | 'transition', 575 | 'transition-delay', 576 | 'transition-duration', 577 | 'transition-property', 578 | 'transition-timing-function', 579 | 'user-select', 580 | 'word-break', 581 | 'word-wrap', 582 | 'wrap-flow', 583 | 'wrap-margin', 584 | 'wrap-through', 585 | 'writing-mode', 586 | 'zoom', 587 | 588 | 589 | "align-content", 590 | "align-items", 591 | "align-self", 592 | "alignment-adjust", 593 | "alignment-baseline", 594 | "all", 595 | "anchor-point", 596 | "animation", 597 | "animation-delay", 598 | "animation-direction", 599 | "animation-duration", 600 | "animation-fill-mode", 601 | "animation-iteration-count", 602 | "animation-name", 603 | "animation-play-state", 604 | "animation-timing-function", 605 | "appearance", 606 | "azimuth", 607 | "backface-visibility", 608 | "background", 609 | "background-attachment", 610 | "background-clip", 611 | "background-color", 612 | "background-image", 613 | "background-origin", 614 | "background-position", 615 | "background-repeat", 616 | "background-size", 617 | "baseline-shift", 618 | "binding", 619 | "bleed", 620 | "bookmark-label", 621 | "bookmark-level", 622 | "bookmark-state", 623 | "bookmark-target", 624 | "border", 625 | "border-bottom", 626 | "border-bottom-color", 627 | "border-bottom-left-radius", 628 | "border-bottom-right-radius", 629 | "border-bottom-style", 630 | "border-bottom-width", 631 | "border-collapse", 632 | "border-color", 633 | "border-image", 634 | "border-image-outset", 635 | "border-image-repeat", 636 | "border-image-slice", 637 | "border-image-source", 638 | "border-image-width", 639 | "border-left", 640 | "border-left-color", 641 | "border-left-style", 642 | "border-left-width", 643 | "border-radius", 644 | "border-right", 645 | "border-right-color", 646 | "border-right-style", 647 | "border-right-width", 648 | "border-spacing", 649 | "border-style", 650 | "border-top", 651 | "border-top-color", 652 | "border-top-left-radius", 653 | "border-top-right-radius", 654 | "border-top-style", 655 | "border-top-width", 656 | "border-width", 657 | "bottom", 658 | "box-decoration-break", 659 | "box-shadow", 660 | "box-sizing", 661 | "break-after", 662 | "break-before", 663 | "break-inside", 664 | "caption-side", 665 | "chains", 666 | "clear", 667 | "clip", 668 | "clip-path", 669 | "clip-rule", 670 | "color", 671 | "color-interpolation-filters", 672 | "color-profile", 673 | "column-count", 674 | "column-fill", 675 | "column-gap", 676 | "column-rule", 677 | "column-rule-color", 678 | "column-rule-style", 679 | "column-rule-width", 680 | "column-span", 681 | "column-width", 682 | "columns", 683 | "contain", 684 | "content", 685 | "counter-increment", 686 | "counter-reset", 687 | "crop", 688 | "cue", 689 | "cue-after", 690 | "cue-before", 691 | "cursor", 692 | "direction", 693 | "display", 694 | "dominant-baseline", 695 | "drop-initial-after-adjust", 696 | "drop-initial-after-align", 697 | "drop-initial-before-adjust", 698 | "drop-initial-before-align", 699 | "drop-initial-size", 700 | "drop-initial-value", 701 | "elevation", 702 | "empty-cells", 703 | "filter", 704 | "flex", 705 | "flex-basis", 706 | "flex-direction", 707 | "flex-flow", 708 | "flex-grow", 709 | "flex-shrink", 710 | "flex-wrap", 711 | "float", 712 | "float-offset", 713 | "flood-color", 714 | "flood-opacity", 715 | "flow-from", 716 | "flow-into", 717 | "font", 718 | "font-family", 719 | "font-feature-settings", 720 | "font-kerning", 721 | "font-language-override", 722 | "font-size", 723 | "font-size-adjust", 724 | "font-stretch", 725 | "font-style", 726 | "font-synthesis", 727 | "font-variant", 728 | "font-variant-alternates", 729 | "font-variant-caps", 730 | "font-variant-east-asian", 731 | "font-variant-ligatures", 732 | "font-variant-numeric", 733 | "font-variant-position", 734 | "font-weight", 735 | "font-smoothing", 736 | "grid", 737 | "grid-area", 738 | "grid-auto-columns", 739 | "grid-auto-flow", 740 | "grid-auto-position", 741 | "grid-auto-rows", 742 | "grid-column", 743 | "grid-column-end", 744 | "grid-column-start", 745 | "grid-row", 746 | "grid-row-end", 747 | "grid-row-start", 748 | "grid-template", 749 | "grid-template-areas", 750 | "grid-template-columns", 751 | "grid-template-rows", 752 | "hanging-punctuation", 753 | "height", 754 | "hyphens", 755 | "icon", 756 | "image-orientation", 757 | "image-resolution", 758 | "ime-mode", 759 | "inline-box-align", 760 | "justify-content", 761 | "justify-items", 762 | "justify-self", 763 | "left", 764 | "letter-spacing", 765 | "lighting-color", 766 | "line-break", 767 | "line-height", 768 | "line-stacking", 769 | "line-stacking-ruby", 770 | "line-stacking-shift", 771 | "line-stacking-strategy", 772 | "list-style", 773 | "list-style-image", 774 | "list-style-position", 775 | "list-style-type", 776 | "margin", 777 | "margin-bottom", 778 | "margin-left", 779 | "margin-right", 780 | "margin-top", 781 | "marker-offset", 782 | "marks", 783 | "mask", 784 | "mask-box", 785 | "mask-box-outset", 786 | "mask-box-repeat", 787 | "mask-box-slice", 788 | "mask-box-source", 789 | "mask-box-width", 790 | "mask-clip", 791 | "mask-image", 792 | "mask-origin", 793 | "mask-position", 794 | "mask-repeat", 795 | "mask-size", 796 | "mask-source-type", 797 | "mask-type", 798 | "max-height", 799 | "max-lines", 800 | "max-width", 801 | "min-height", 802 | "min-width", 803 | "move-to", 804 | "nav-down", 805 | "nav-index", 806 | "nav-left", 807 | "nav-right", 808 | "nav-up", 809 | "object-fit", 810 | "object-position", 811 | "opacity", 812 | "order", 813 | "orphans", 814 | "outline", 815 | "outline-color", 816 | "outline-offset", 817 | "outline-style", 818 | "outline-width", 819 | "overflow", 820 | "overflow-wrap", 821 | "overflow-x", 822 | "overflow-y", 823 | "padding", 824 | "padding-bottom", 825 | "padding-left", 826 | "padding-right", 827 | "padding-top", 828 | "page", 829 | "page-break-after", 830 | "page-break-before", 831 | "page-break-inside", 832 | "page-policy", 833 | "pause", 834 | "pause-after", 835 | "pause-before", 836 | "perspective", 837 | "perspective-origin", 838 | "pitch", 839 | "pitch-range", 840 | "play-during", 841 | "position", 842 | "presentation-level", 843 | "quotes", 844 | "region-fragment", 845 | "rendering-intent", 846 | "resize", 847 | "rest", 848 | "rest-after", 849 | "rest-before", 850 | "richness", 851 | "right", 852 | "rotation", 853 | "rotation-point", 854 | "ruby-align", 855 | "ruby-overhang", 856 | "ruby-position", 857 | "ruby-span", 858 | "shape-image-threshold", 859 | "shape-outside", 860 | "shape-margin", 861 | "size", 862 | "speak", 863 | "speak-as", 864 | "speak-header", 865 | "speak-numeral", 866 | "speak-punctuation", 867 | "speech-rate", 868 | "stress", 869 | "string-set", 870 | "tab-size", 871 | "table-layout", 872 | "target", 873 | "target-name", 874 | "target-new", 875 | "target-position", 876 | "text-align", 877 | "text-align-last", 878 | "text-combine-horizontal", 879 | "text-decoration", 880 | "text-decoration-color", 881 | "text-decoration-line", 882 | "text-decoration-skip", 883 | "text-decoration-style", 884 | "text-emphasis", 885 | "text-emphasis-color", 886 | "text-emphasis-position", 887 | "text-emphasis-style", 888 | "text-height", 889 | "text-indent", 890 | "text-justify", 891 | "text-orientation", 892 | "text-outline", 893 | "text-overflow", 894 | "text-shadow", 895 | "text-space-collapse", 896 | "text-transform", 897 | "text-underline-position", 898 | "text-wrap", 899 | "top", 900 | "transform", 901 | "transform-origin", 902 | "transform-style", 903 | "transition", 904 | "transition-delay", 905 | "transition-duration", 906 | "transition-property", 907 | "transition-timing-function", 908 | "unicode-bidi", 909 | "vertical-align", 910 | "visibility", 911 | "voice-balance", 912 | "voice-duration", 913 | "voice-family", 914 | "voice-pitch", 915 | "voice-range", 916 | "voice-rate", 917 | "voice-stress", 918 | "voice-volume", 919 | "volume", 920 | "white-space", 921 | "widows", 922 | "width", 923 | "word-break", 924 | "word-spacing", 925 | "word-wrap", 926 | "wrap-flow", 927 | "wrap-through", 928 | "writing-mode", 929 | "z-index" 930 | ] 931 | 932 | function unique(a) { 933 | var hash = {}, 934 | len = a.length, 935 | result = [] 936 | 937 | for (var i = 0; i < len; i++) { 938 | if (!hash[a[i]]) { 939 | hash[a[i]] = true 940 | result.push(a[i]) 941 | } 942 | } 943 | return result 944 | } 945 | 946 | var str = unique(allProp).sort() 947 | fs.writeFile("array.js", JSON.stringify(str), function(err) { 948 | if (err) { 949 | console.log(err) 950 | } else { 951 | console.log("Output saved to array.js.") 952 | } 953 | }) 954 | 955 | 956 | --------------------------------------------------------------------------------