使用CSS的@supports标记来检测浏览器的兼容情况

时间:2021-05-08

CSS @supports标记在CSS代码里跟@media查询语句的语法相似:

CSS Code复制内容到剪贴板
  • @supports(prop:value){
  • }
  • CSS @supports允许程序员用多种不同的方法来探测当前浏览器是否支持某项CSS样式特征。

    基本属性检测
    你可以执行对基本属性和属性值的检测:

    CSS Code复制内容到剪贴板
  • @supports(display:flex){
  • div{display:flex;}
  • }
  • 这是@supports标记最基本的用法。

    not关键字
    @supports标记可以和‘not’关键字组合,用来应对不支持的情况:

    CSS Code复制内容到剪贴板
  • @supportsnot(display:flex){
  • div{float:left;}
  • }
  • 多检测及条件检测

    CSS Code复制内容到剪贴板
  • @supports(display:-webkit-flex)or
  • (display:-moz-flex)or
  • (display:flex){
  • }
  • @supports(display:flex)and(-webkit-appearance:caret){
  • }
  • @supports((display:-webkit-flex)or
  • (display:-moz-flex)or
  • (display:flex))and(-webkit-appearance:caret){
  • }
  • Javascript CSS.supports()
    在Javascript中通过使用window.CSS.supports方法来对CSS @supports进行检测,规范中提供了两个方法,一个方法可以接收两个参数boolValue = CSS.supports(propertyName, value);另一个可以接收一个字符串(A DOMString containing the condition to check),boolValue = CSS.supports(supportCondition);具体使用看下例:

    JavaScript Code复制内容到剪贴板
  • //测试环境,Chrome:34.0.1847.131m
  • varres01=CSS.supports("text-decoration-style","blink");
  • //Outputs:false
  • console.log(res01);
  • varres02=CSS.supports("display","flex");
  • //Outputs:true
  • console.log(res02);
  • varres03=CSS.supports("(transform-origin:5%5%)");
  • //Outputs:false
  • console.log(res03);
  • varres04=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的使用场景

    大多数情况,@supports是用来支持老式浏览器,并在有可能的情况下,利用现代浏览器的新特征来提高用户体验。@supports的一个最重要的使用场景是页面布局。很多现代浏览器都提供了对flexbox网页布局的支持,在这种还有很多浏览器不支持的情况下,你的代码可以写成这样:

    CSS Code复制内容到剪贴板
  • 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功能的使用和体验,更多的更好的使用场景会不断的出现。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章