Styling cleanup
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* StyleFix 1.0.2
|
||||
* StyleFix 1.0.3
|
||||
* @author Lea Verou
|
||||
* MIT license
|
||||
*/
|
||||
@@ -52,8 +52,10 @@ var self = window.StyleFix = {
|
||||
});
|
||||
|
||||
// behavior URLs shoudn’t be converted (Issue #19)
|
||||
css = css.replace(RegExp('\\b(behavior:\\s*?url\\(\'?"?)' + base, 'gi'), '$1');
|
||||
}
|
||||
// base should be escaped before added to RegExp (Issue #81)
|
||||
var escaped_base = base.replace(/([\\\^\$*+[\]?{}.=!:(|)])/g,"\\$1");
|
||||
css = css.replace(RegExp('\\b(behavior:\\s*?url\\(\'?"?)' + escaped_base, 'gi'), '$1');
|
||||
}
|
||||
|
||||
var style = document.createElement('style');
|
||||
style.textContent = css;
|
||||
@@ -63,6 +65,8 @@ var self = window.StyleFix = {
|
||||
|
||||
parent.insertBefore(style, link);
|
||||
parent.removeChild(link);
|
||||
|
||||
style.media = link.media; // Duplicate is intentional. See issue #31
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,6 +88,9 @@ var self = window.StyleFix = {
|
||||
},
|
||||
|
||||
styleElement: function(style) {
|
||||
if (style.hasAttribute('data-noprefix')) {
|
||||
return;
|
||||
}
|
||||
var disabled = style.disabled;
|
||||
|
||||
style.textContent = self.fix(style.textContent, true, style);
|
||||
@@ -150,7 +157,7 @@ function $(expr, con) {
|
||||
})();
|
||||
|
||||
/**
|
||||
* PrefixFree 1.0.5
|
||||
* PrefixFree 1.0.6
|
||||
* @author Lea Verou
|
||||
* MIT license
|
||||
*/
|
||||
@@ -160,36 +167,39 @@ if(!window.StyleFix || !window.getComputedStyle) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Private helper
|
||||
function fix(what, before, after, replacement, css) {
|
||||
what = self[what];
|
||||
|
||||
if(what.length) {
|
||||
var regex = RegExp(before + '(' + what.join('|') + ')' + after, 'gi');
|
||||
|
||||
css = css.replace(regex, replacement);
|
||||
}
|
||||
|
||||
return css;
|
||||
}
|
||||
|
||||
var self = window.PrefixFree = {
|
||||
prefixCSS: function(css, raw) {
|
||||
var prefix = self.prefix;
|
||||
|
||||
function fix(what, before, after, replacement) {
|
||||
what = self[what];
|
||||
|
||||
if(what.length) {
|
||||
var regex = RegExp(before + '(' + what.join('|') + ')' + after, 'gi');
|
||||
|
||||
css = css.replace(regex, replacement);
|
||||
}
|
||||
}
|
||||
|
||||
fix('functions', '(\\s|:|,)', '\\s*\\(', '$1' + prefix + '$2(');
|
||||
fix('keywords', '(\\s|:)', '(\\s|;|\\}|$)', '$1' + prefix + '$2$3');
|
||||
fix('properties', '(^|\\{|\\s|;)', '\\s*:', '$1' + prefix + '$2:');
|
||||
css = fix('functions', '(\\s|:|,)', '\\s*\\(', '$1' + prefix + '$2(', css);
|
||||
css = fix('keywords', '(\\s|:)', '(\\s|;|\\}|$)', '$1' + prefix + '$2$3', css);
|
||||
css = fix('properties', '(^|\\{|\\s|;)', '\\s*:', '$1' + prefix + '$2:', css);
|
||||
|
||||
// Prefix properties *inside* values (issue #8)
|
||||
if (self.properties.length) {
|
||||
var regex = RegExp('\\b(' + self.properties.join('|') + ')(?!:)', 'gi');
|
||||
|
||||
fix('valueProperties', '\\b', ':(.+?);', function($0) {
|
||||
css = fix('valueProperties', '\\b', ':(.+?);', function($0) {
|
||||
return $0.replace(regex, prefix + "$1")
|
||||
});
|
||||
}, css);
|
||||
}
|
||||
|
||||
if(raw) {
|
||||
fix('selectors', '', '\\b', self.prefixSelector);
|
||||
fix('atrules', '@', '\\b', '@' + prefix + '$1');
|
||||
css = fix('selectors', '', '\\b', self.prefixSelector, css);
|
||||
css = fix('atrules', '@', '\\b', '@' + prefix + '$1', css);
|
||||
}
|
||||
|
||||
// Fix double prefixing
|
||||
@@ -198,11 +208,25 @@ var self = window.PrefixFree = {
|
||||
return css;
|
||||
},
|
||||
|
||||
// Warning: prefixXXX functions prefix no matter what, even if the XXX is supported prefix-less
|
||||
property: function(property) {
|
||||
return (self.properties.indexOf(property)? self.prefix : '') + property;
|
||||
},
|
||||
|
||||
value: function(value, property) {
|
||||
value = fix('functions', '(^|\\s|,)', '\\s*\\(', '$1' + self.prefix + '$2(', value);
|
||||
value = fix('keywords', '(^|\\s)', '(\\s|$)', '$1' + self.prefix + '$2$3', value);
|
||||
|
||||
// TODO properties inside values
|
||||
|
||||
return value;
|
||||
},
|
||||
|
||||
// Warning: Prefixes no matter what, even if the selector is supported prefix-less
|
||||
prefixSelector: function(selector) {
|
||||
return selector.replace(/^:{1,2}/, function($0) { return $0 + self.prefix })
|
||||
},
|
||||
|
||||
// Warning: Prefixes no matter what, even if the property is supported prefix-less
|
||||
prefixProperty: function(property, camelCase) {
|
||||
var prefixed = self.prefix + property;
|
||||
|
||||
@@ -334,7 +358,9 @@ var keywords = {
|
||||
'zoom-out': 'cursor',
|
||||
'box': 'display',
|
||||
'flexbox': 'display',
|
||||
'inline-flexbox': 'display'
|
||||
'inline-flexbox': 'display',
|
||||
'flex': 'display',
|
||||
'inline-flex': 'display'
|
||||
};
|
||||
|
||||
self.functions = [];
|
||||
|
||||
Reference in New Issue
Block a user