我真的很喜歡React如何爲您淨化事件,所以我驚訝地發現它們不會爲您的CSS前綴添加樣式!React的前綴flexbox樣式
不管怎麼說,我開始實施我自己的基本prefixer這樣的:
var prefixes = ["ms", "Moz", "Webkit", "O"];
var properties = [
'userSelect',
'transform',
'transition',
'transformOrigin',
'transformStyle',
'transitionProperty',
'transitionDuration',
'transitionTimingFunction',
'transitionDelay',
'borderImage',
'borderImageSlice',
'boxShadow',
'backgroundClip',
'backfaceVisibility',
'perspective',
'perspectiveOrigin',
'animation',
'animationDuration',
'animationName',
'animationDelay',
'animationDirection',
'animationIterationCount',
'animationTimingFunction',
'animationPlayState',
'animationFillMode',
'appearance',
'flexGrow',
];
function vendorPrefix(property, value) {
var result = {}
result[property] = value
if(properties.indexOf(property) == -1){
return result;
}
property = property[0].toUpperCase() + property.slice(1);
for (var i = 0; i < prefixes.length; i++) {
result[prefixes[i] + property] = value;
};
return result;
}
React.prefix = function(obj) {
var result = {};
for(var key in obj){
var prefixed = vendorPrefix(key, obj[key])
for(var pre in prefixed){
result[pre] = prefixed[pre]
}
}
return result;
};
但後來我realized a big problem,陣營使用對象的風格和適當的前綴Flexbox的,你需要的前綴值,而不是屬性。因此,我不能同時包含以下所有樣式:
.page-wrap {
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
任何想法如何解決此問題?
今天,內聯樣式功能受到限制。我建議在這些實例中只使用傳統的類/'className'。 – WiredPrairie 2015-04-03 22:08:58
或者你可以檢測瀏覽器版本,但類可能是要走的路。 – FakeRainBrigand 2015-04-04 06:04:34
啊,我明白了。我希望最終能夠取消CSS和CSS預處理器 – Chet 2015-04-06 03:24:12