使用CSS的@supports標(biāo)記來檢測瀏覽器的兼容情況

CSS @supports標(biāo)記在CSS代碼里跟@media查詢語句的語法相似:
- @supports(prop:value) {
- /* 各種樣式 */
- }
CSS @supports允許程序員用多種不同的方法來探測當(dāng)前瀏覽器是否支持某項CSS樣式特征。
基本屬性檢測
你可以執(zhí)行對基本屬性和屬性值的檢測:
- @supports (display: flex) {
- div { display: flex; }
- }
這是@supports標(biāo)記最基本的用法。
not關(guān)鍵字
@supports標(biāo)記可以和‘not’關(guān)鍵字組合,用來應(yīng)對不支持的情況:
- @supports not (display: flex) {
- div { float: left; } /* 替換樣式 */
- }
多檢測及條件檢測
- /* or */
- @supports (display: -webkit-flex) or
- (display: -moz-flex) or
- (display: flex) {
- /* use styles here */
- }
- /* and */
- @supports (display: flex) and (-webkit-appearance: caret) {
- /* something crazy here */
- }
- /* and and or */
- @supports ((display: -webkit-flex) or
- (display: -moz-flex) or
- (display: flex)) and (-webkit-appearance: caret) {
- /* use styles here */
- }
Javascript CSS.supports()
在Javascript中通過使用window.CSS.supports方法來對CSS @supports進行檢測,規(guī)范中提供了兩個方法,一個方法可以接收兩個參數(shù)boolValue = CSS.supports(propertyName, value);另一個可以接收一個字符串(A DOMString containing the condition to check),boolValue = CSS.supports(supportCondition);具體使用看下例:
- //測試環(huán)境,Chrome:34.0.1847.131 m
- var res01 = CSS.supports("text-decoration-style", "blink");
- //Outputs: false
- console.log(res01);
- var res02 = CSS.supports("display", "flex");
- //Outputs: true
- console.log(res02);
- var res03 = CSS.supports("( transform-origin: 5% 5% )");
- //Outputs: false
- console.log(res03);
- var res04 = CSS.supports("( transform-style: preserve ) or ( -moz-transform-style: preserve ) or " +
- "( -o-transform-style: preserve ) or ( -webkit-transform-style: preserve )" );
- //Outputs: false
- console.log(res04);
@supports的使用場景
大多數(shù)情況,@supports是用來支持老式瀏覽器,并在有可能的情況下,利用現(xiàn)代瀏覽器的新特征來提高用戶體驗。@supports的一個最重要的使用場景是頁面布局。很多現(xiàn)代瀏覽器都提供了對flexbox網(wǎng)頁布局的支持,在這種還有很多瀏覽器不支持的情況下,你的代碼可以寫成這樣:
- section {
- float: left;
- }
- @supports (display: -webkit-flex) or
- (display: -moz-flex) or
- (display: flex) {
- section {
- display: -webkit-flex;
- display: -moz-flex;
- display: flex;
- float: none;
- }
- }
相信隨著程序員對這種新的@supports功能的使用和體驗,更多的更好的使用場景會不斷的出現(xiàn)。
相關(guān)文章
- 這篇文章主要介紹了詳解CSS中@supports的用法,是CSS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-07-14