css3条件判断_@supports的用法/Window.CSS.supports()的使用

摘要:为了判断浏览器是否支持css3的一些新属性样式,当不兼容该样式的时候,我们可以更优雅的降级处理。这就需要使用到css3的条件判断功能:在css中支持@supports标记、或者在js中使用CSS.supports函数,来检测浏览器是否支持css3的新属性。

为了判断浏览器是否支持css3的一些新属性样式,当不兼容该样式的时候,我们可以更优雅的降级处理。这就需要使用到css3的条件判断功能:在css中支持@supports标记、或者在js中使用CSS.supports函数,来检测浏览器是否支持css3的新属性。下面就来看看如何实现的!


CSS @supports标记:

语法:

@supports (rule)[operator (rule)]* { sRules }

说明:

rule: 指定一条具体的CSS规则,必须使用括号包裹。
operator: 使用or | and | not等操作符指定多条规则。


1、基本用法:  

@supports ( display: flex ) {
	body {
		display: flex;
	}
	#main {
		flex: auto;
	}
}

代表浏览器支持flex标准,则使用里面的规则,如果不支持,可以如下实现。


2、not关键词 :

@supports not ( display: flex ) {
	#main{
	    float: left;	
	}
}

当然not关键词使用的比较少,一般支持@supports的浏览器,都会支持大部分css3属性。


3、多条件检测 : 

我们可以使用or和and语句,来实现多条件检查。例如:

@supports ((display: -webkit-flex) or (display: -moz-flex) or (display: flex)) and (-webkit-appearance: caret) { 
    /* use styles here */ 
}/


4、@supports浏览器的兼容:

IEFirefoxChromeSafariOperaiOS SafariAndroid BrowserAndroid Chrome
12.0+22.0+28.0+9.0+15.0+9.0+4.4+27.0+

  

Js中CSS.supports函数  

同css的@supports标记一样,js里也提供了Window.CSS.supports()方法,用来检查浏览器对css3属性是否支持,该函数提供2中调用方式:

第一种方法是使用两个参数:一个是属性名,另一个是属性值  。

var supportsFlex = CSS.supports("display", "flex");

第二种用法是:简单的提供整个需要分析的样式字串。  

var  supportsFlex   = CSS.supports("(display: flex) and (-webkit-display: flex)");


CSS.supports函数返回的是一个布尔值,如果为true这代表支持该属性,当然在使用该函数之前,我们需要先判断浏览器是否支持CSS.supports,方法如下:

if(!!((window.CSS && window.CSS.supports) || window.supportsCSS || false)){
    //支持
}



本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_555