检测浏览器对样式的支持

真不知谁开了个坏头,搞了什么-xxx-前缀,CSS3上大量充斥着这样的私有实现,因此检测样式变得非常麻烦。参考外国的一些实现,搞出自己的测试程序:

//by 司徒正美
//http://www.cnblogs.com/rubylouvre/archive/2011/03/28/1998223.html
           var getStyleProperty =  new function (css, el) {
                    var prefixes = ['', '-ms-','-moz-', '-webkit-', '-khtml-', '-o-'];
                    var reg_cap = /-([a-z])/g;
                    return function(css, el){
                        el = el || document.documentElement;
                        var style = el.style, test;
                        for (var i=0, l=prefixes.length; i < l; i++) {
                            test = (prefixes[i] + css).replace(reg_cap,function($0,$1){
                                return $1.toUpperCase();
                            });
                            if(test in style){
                                return test;
                            }
                        }
                        return null;
                    }
                }

好了,我们对以下CSS属性进行测试:(发现IE9真是加班出来的鬼东西......)

log(getStyleProperty('column-count'));
log(getStyleProperty('column-gap'));
log(getStyleProperty('column-rule'));
log(getStyleProperty('column-rule-color'));
log(getStyleProperty('column-rule-style'));
log(getStyleProperty('column-rule-width'));
log(getStyleProperty('column-span'));
log(getStyleProperty('column-width'));
log(getStyleProperty('columns'));
log(getStyleProperty('float-offset'));

log(getStyleProperty('animation'));
log(getStyleProperty('animation-delay'));
log(getStyleProperty('animation-direction'));
log(getStyleProperty('animation-duration'));
log(getStyleProperty('animation-iteration-count'));
log(getStyleProperty('animation-name'));
log(getStyleProperty('animation-play-state'));
log(getStyleProperty('animation-timing-function'));


log(getStyleProperty('grid-columns'));
log(getStyleProperty('grid-rows'));


log(getStyleProperty('hanging-punctuation'));
log(getStyleProperty('line-break'));
log(getStyleProperty('punctuation-trim'));
log(getStyleProperty('text-align-last'));
log(getStyleProperty('text-autospace'));
log(getStyleProperty('text-decoration'));
log(getStyleProperty('text-decoration-color'));
log(getStyleProperty('text-decoration-line'));
log(getStyleProperty('text-decoration-skip'));
log(getStyleProperty('text-decoration-style'));
log(getStyleProperty('text-emphasis'));
log(getStyleProperty('text-emphasis-color'));
log(getStyleProperty('text-emphasis-position'));
log(getStyleProperty('text-emphasis-style'));
log(getStyleProperty('text-justify'));
log(getStyleProperty('text-outline'));
log(getStyleProperty('text-shadow'));
log(getStyleProperty('text-underline-position'));
log(getStyleProperty('white-space-collapsing'));
log(getStyleProperty('word-break'));
log(getStyleProperty('word-wrap'));


log(getStyleProperty('target'));
log(getStyleProperty('target-name'));
log(getStyleProperty('target-new'));
log(getStyleProperty('target-position'));

log(getStyleProperty('border-image'));
log(getStyleProperty('border-image-outset'));
log(getStyleProperty('border-image-repeat'));
log(getStyleProperty('border-image-slice'));
log(getStyleProperty('border-image-source'));
log(getStyleProperty('border-image-width'));
log(getStyleProperty('border-radius'));

log(getStyleProperty('box-align'));
log(getStyleProperty('box-decoration-break'));
log(getStyleProperty('box-direction'));
log(getStyleProperty('box-flex'));
log(getStyleProperty('box-lines'));
log(getStyleProperty('box-ordinal-group'));
log(getStyleProperty('box-orient'));
log(getStyleProperty('box-pack'));
log(getStyleProperty('box-shadow'));
log(getStyleProperty('rotation'));
log(getStyleProperty('rotation-point'));

log(getStyleProperty('marquee-direction'));
log(getStyleProperty('marquee-loop'));
log(getStyleProperty('marquee-play-count'));
log(getStyleProperty('marquee-speed'));
log(getStyleProperty('marquee-style'));
log(getStyleProperty('overflow-style'));


log(getStyleProperty('box-sizing'));
log(getStyleProperty('nav-index'));
log(getStyleProperty('nav-x'));
log(getStyleProperty('outline'));
log(getStyleProperty('outline-color'));
log(getStyleProperty('outline-offset'));
log(getStyleProperty('outline-style'));
log(getStyleProperty('outline-width'));
log(getStyleProperty('resize'));
log(getStyleProperty('text-overflow'));

log(getStyleProperty('transform'));
log(getStyleProperty('transform-origin'));
log(getStyleProperty('transform-style'));


log(getStyleProperty('background-clip'));
log(getStyleProperty('background-origin'));
log(getStyleProperty('background-size'));

log(getStyleProperty('transition'));
log(getStyleProperty('transition-delay'));
log(getStyleProperty('transition-duration'));
log(getStyleProperty('transition-property'));
log(getStyleProperty('transition-timing-function'));
    原文地址:https://www.cnblogs.com/rubylouvre/p/1998223.html