1

CSS プロパティ (border-radius ここでは) のサポートは、次のコードで確認できます。

if(document.createElement('test').style.borderRadius===''){
//some code
}

しかし、線形勾配の場合はどうすればよいでしょうか? 宣言は次のようになります。

background:linear-gradient(top,bottom,#123,#456);

PS Modernizr を使用したくありません。これを行う方法を学びたいです。

4

2 に答える 2

2

Modernizr のソース コードを調べました。グラデーションを設定しようとした後、backgroundImage で文字列検索を行います。ここにあります:

https://github.com/Modernizr/Modernizr/blob/dfb4cff564dabcdb65b5957b235c3fa3e5b164eb/feature-detects/css/gradients.js

    var str1 = 'background-image:';
    var str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));';
    var str3 = 'linear-gradient(left top,#9f9, white);';

    var css =
      // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
      (str1 + '-webkit- '.split(' ').join(str2 + str1) +
       // standard syntax             // trailing 'background-image:'
       prefixes.join(str3 + str1)).slice(0, -str1.length);

    var elem = createElement('div');
    var style = elem.style;
    style.cssText = css;

    // IE6 returns undefined so cast to string
    return ('' + style.backgroundImage).indexOf('gradient') > -1;

これを自分でコピーまたは書き換えるよりも、おそらく Modernizr を使用する必要があります。サードパーティから物を借りることがありますが、ライセンスで許可されている場合は問題ありません。ライセンスと著作権情報を含めて、コードから切り離してください。

于 2013-09-27T18:01:11.410 に答える