浅谈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代码绘制可爱的Hello Kitty猫
Aug 03 HTML / CSS
css3实现一款模仿iphone样式的注册表单
Mar 20 HTML / CSS
一款利用html5和css3实现的3D滚动特效的教程
Jan 04 HTML / CSS
详解CSS3中使用gradient实现渐变效果的方法
Aug 18 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
CSS3实现酷炫的3D旋转透视效果
Nov 21 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
Mar 31 HTML / CSS
HTML5逐步分析实现拖放功能的方法
Sep 30 HTML / CSS
萌新HTML5 入门指南(二)
Nov 09 HTML / CSS
Html5移动端网页端适配(js+rem)
Feb 03 HTML / CSS
详解CSS不受控制的position fixed
May 25 HTML / CSS
CSS 左边固定宽右边自适应的6种方法
May 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遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
深入了解python列表(LIST)
2020/06/08 Python
python3处理word文档实例分析
2020/12/01 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
交通专业个人自荐信格式
2013/09/23 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
公司门卫岗位职责
2014/03/15 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
python语言中pandas字符串分割str.split()函数
2022/08/05 Python