浅谈CSS3特性查询(Feature Query: @supports)功能简介


Posted in HTML / CSS onJuly 31, 2017

我们已经知道使用媒体查询(Media Query)来检测屏幕尺寸,从而实现响应式界面设计。

而特性查询则用来查询用户代理(如桌面浏览器)是否支持某个CSS3的特性,这个功能除了IE之外,已被其他浏览器所支持。

语法格式

@supports <supports-condition> {
  <group-rule-body>
}

特性查询使用@supports规则(和媒体查询@media类似,都是使用一个@符号前缀:at-rule),该CSS规则允许我们把CSS样式写在条件块中,这样只有在当前用户代理支持一个特定的CSS属性值对(property-value pair)的时候才被应用。

举个简单的例子,如果我们要为支持弹性框(flexbox)特性的浏览器定义样式,可以像下面这样写:

@supports ( display: flex ) {
    .foo { display: flex; }
}

同样的,和媒体查询规则类似,可以使用一些逻辑操作符(如and、or和not),并支持串接在一起:

@supports (display: table-cell) and (display: list-item) {
    … /* your styles */
}
 
@supports not ((text-align-last:justify) or (-moz-text-align-last:justify) ){
    … /* 不支持justify时,用这里的代码来模拟text-align-last:justify */
}

使用实例

检测动画特性:

@supports (animation-name: test) {
    … /* 当UA支持无前缀animations特性时的特定样式 */
    @keyframes { /* @supports 作为一个CSS条件组at-rule,可以包含其他at-rules */
      …    
    }
}

检测自定义属性:

@supports (--foo: green) {
  body {
    color: green;
  }
}

规范状态

尚处于候选推荐CR(Candidate Recommendation)状态,规范链接:CSS Conditional Rules Module Level 3.

浏览器兼容性

桌面系统:

浅谈CSS3特性查询(Feature Query: @supports)功能简介

移动设备:

浅谈CSS3特性查询(Feature Query: @supports)功能简介

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3实现粒子旋转伸缩加载动画
Apr 22 HTML / CSS
不同浏览器对CSS3和HTML5的支持状况
Oct 31 HTML / CSS
css3闪亮进度条效果实现思路及代码
Apr 17 HTML / CSS
CSS3实现swap交换动画
Jan 19 HTML / CSS
浅谈css3中的渐进增强和优雅降级
Dec 01 HTML / CSS
使用phonegap检测网络状态的方法
Mar 30 HTML / CSS
基于IE10/HTML5 开发
Apr 22 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
May 29 HTML / CSS
HTML5 在canvas中绘制文本附效果图
Jun 23 HTML / CSS
HTML5中Localstorage的使用教程
Jul 09 HTML / CSS
原生CSS实现文字无限轮播的通用方法
Mar 30 HTML / CSS
CSS中em的正确打开方式详解
Apr 08 HTML / CSS
css3旋转木马_动力节点Java学院整理
Jul 12 #HTML / CSS
css3边框_动力节点Java学院整理
Jul 11 #HTML / CSS
使用 css3 实现圆形进度条的示例
Jul 05 #HTML / CSS
css3学习系列之移动属性详解
Jul 04 #HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 #HTML / CSS
利用css3如何设置没有上下边的列表间隔线
Jul 03 #HTML / CSS
利用css3画个同心圆示例代码
Jul 03 #HTML / CSS
You might like
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
PHP实现文件下载详解
2014/11/27 PHP
php中动态变量用法实例
2015/06/10 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
python私有属性和方法实例分析
2015/01/15 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python3中exp()函数用法分析
2019/02/19 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
实习单位接收函
2014/01/11 职场文书
房产买卖委托公证书
2014/04/04 职场文书
市场开发计划书
2014/05/07 职场文书
销售员试用期自我评价
2014/09/15 职场文书
全陪导游词开场白
2015/05/29 职场文书
大学生党课感想
2015/08/11 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技
MySQL数据库表约束讲解
2022/06/21 MySQL