浅谈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 相关文章推荐
全面总结使用CSS实现水平垂直居中效果的方法
Mar 10 HTML / CSS
css3图片边框border-image的用法
Jun 30 HTML / CSS
css3实例教程 一款纯css3实现的环形导航菜单
Oct 20 HTML / CSS
纯css3实现照片墙效果
Dec 26 HTML / CSS
CSS3制作苹果风格键盘特效
Feb 26 HTML / CSS
浅谈CSS3动画的回调处理
Jul 21 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
May 07 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
May 07 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
Apr 24 HTML / CSS
canvas离屏技术与放大镜实现代码示例
Aug 31 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
Oct 11 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
Apr 15 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
PHP 写文本日志实现代码
2010/05/18 PHP
PHP扩展开发入门教程
2015/02/26 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
10个php函数实用却不常见
2015/10/13 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
点击文章内容处弹出页面代码
2009/10/01 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
python实现动态数组的示例代码
2019/07/15 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
面试后的英文感谢信
2014/02/01 职场文书
搞笑征婚广告词
2014/03/17 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
标枪加油稿
2015/07/22 职场文书
如何写好开幕词?
2019/06/24 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript