css无效 https_CSS--@规则

448d75a8bc27cb85d6b183502ea05923.png

在 css 中主要有两种规则,一种是以 @ 开头,后面接一个标识符的 @ 规则,一种是以选择器、属性键值对构成的普通规则;在本文中主要列举介绍下 @ 规则。

常规的 @ 规则

@charset

用于指定样式表中使用的字符编码。

  • 如果设置的话,必须放在最前面;
  • 如果有多个 @charset ,只会使用第一个声明的规则;
  • 不能用在 html 元素中或 style 标签中
  • 如果有多中字符编码声明规则,使用优先级如下:
  • 文件开头的字符编码声明
  • http 头的字符编码声明
  • css文件的@charset
  • link 元素的charset设置(html5 已废除)
  • 默认 utf-8

css @charset "UTF-8";

@import

用于从其他样式表导入样式规则。使用 @import 可以引入其他样式表文件的除 @charset 外的所有内容,且必须放在文件的最前面。语法如下:

@import url;
@import url list-of-media-queries;
  • url 表示引入的资源的路径。
  • list-of-media-queries 表示媒体查询条件列表
@import 'custom.css';
@import url('custom.css');
@import url('custom.css') print;

使用 @import 导入文件时会出现多请求、阻塞加载等问题,建议只在开发阶段使用。

@namespace

用来定义使用在CSS样式表中的XML命名空间的 @ 规则;表示内部的 CSS 选择器全都带上特定命名空间。@namespace 规则必须要放在所有的 @charset 和 @import 之后,且在样式表中要放在其他的普通规则之前。

@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);
@namespace html url(http://www.w3.org/1999/xhtml)

/* 匹配所有的XHTML <a> 元素, 因为 XHTML 是默认无前缀命名空间 */
a {}

/* 匹配所有的 SVG <a> 元素 */
svg|a {}

/* 匹配所有的 HTML <a> 元素 */
html|a{}

/* 匹配 XHTML 和 SVG <a> 元素 */
*|a {}

嵌套的 @ 规则

嵌套的 @ 规则,实际上就是在 @ 规则后面需要跟上花括号 {} 包裹其他声明的规则;不仅可以作为样式表的一个语句,还可以放在条件规则组里: @media、@supports 和 @document

@media

用于根据一个或者多个媒体查询条件的结果来应用样式表的一部分(花括号嵌套的内容); @media 规则可以放在样式表中的任意位置;还可以放在条件规则组里。

媒体查询用于判断设备信息的一组条件,如设备的宽高值,宽高比,颜色,分辨率等。当条件为 true 时,才会执行嵌套的样式。

@media screen and (min-width: 900px) {
  article {
    padding: 1rem 3rem;
  }
}
/* 表示在设备宽度不小于900px时 article 标签的 padding 为 1rem 3rem */

@page

用于在打印文档时修改某些CSS属性。你不能用@page规则来修改所有的CSS属性,而是只能修改margin,orphans(用于排版,表示底部的一段文字至少有几行留在本页), widow (用于排版,表示上一页的一段文字至少有几行留在本页顶部)和 page breaks of the document。对其他属性的修改是无效的。

@page :first {
  margin-left: 50%;
  margin-top: 50%;
}
/* 表示打印时 第一页的上、左外边距均为 50% */

@font-face

用于指定文本的自定义字体。用户可以从本地字体库(local)中加载所需字体,或者从服务器(url)中加载。在同时使用 local 函数和 url 函数加载字体时,会优先加载本地的字体副本,如果没有找到,则会通过url去请求服务器的字体。@font-face 可以放在 css 样式表的顶部,也可以放在条件规则组中。

/* 定义 */
@font-face {
  /* 用于指定字体名 */
  font-family: "Open Sans"; 
  /* 指定字体文件 */
  src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2"),
       url("/fonts/OpenSans-Regular-webfont.woff") format("woff");
}
/* 应用 */
p {
  font-family: "Open Sans";
}

@keyframes

用于定义在动画序列中定义关键帧(或waypoints)的样式来控制CSS动画序列中的中间步骤。定义关键帧规则后,要通过定义 animation-name 来使用。关键帧序列是由百分比来标识命名的,起始状态和结束状态分别为 from 和 to 代表 0% 和 100% 。

/* 声明 */
@keyframes slidein {
  from {
    margin-left: 100%;
    width: 300%;
  }

  to {
    margin-left: 0%;
    width: 100%;
  }
}
@keyframes slideout {
  0% {
    top: 0;
  }
  50% {
    top: 30px;
  }
  100% {
    top: 60px;
  }
}
/* 应用 */
p {
  animation-name: slidein;
  animation-duration: 4s;
}
div {
  animation-name: slideout;
  animation-duration: 4s;
}
  • 关键帧中如果有不支持动画的样式,则会被直接忽略。
  • 重复定义同一个关键帧(百分比),则会使用最后一个定义的关键帧样式。其他定义会被完全忽略。
  • 关键帧定义中的 !important 关键词将会被直接忽略。

@supports

用于检查浏览器是否支持 css 的某个特性;可用于条件规则组内部,也能用于包裹css语句。目前还是实验特性,具体使用要看浏览器是否支持

/* 判断浏览器是否支持 grid 布局 */
@supports (display: grid) {
    div {
        display: grid
    }
}

支持使用 and、or、not 操作符,分别表示逻辑运算符中的:且、或、非。

/* 判断浏览器是否支持 grid 布局和 flex 布局 */
@supports (display: grid) and (display: flex) {
    div {
        display: grid
    }
  span {
    display: flex
  }
}

@document

用于根据文档的 URL 限制其中包含的样式规则,为用户特制样式表。目前还是实验特性,标准应该会在css4制定

  • url(), 匹配整个URL
  • url-prefix(), 匹配文档的URL是否以参数指定的值开头
  • domain(), 匹配文档的域名是否为参数中指定的域名或者为它的子域名
  • regexp(), 匹配文档的URL是否和参数中指定的正则表达式匹配,该表达式必须匹配整个 URL

除正则表达式外 其他的函数可以省略小括号;且正则表达式要使用 css 的规则进行二次转义,如:要匹配点.号,正则表达式需要转义为 .,还需要使用 css 的规则再转一次 .

@document url(http://www.w3.org/),
               url-prefix(http://www.w3.org/Style/),
               domain(mozilla.org),
               regexp("https:.*")
{
  /* 该条CSS规则会应用在下面的网页:
     + URL为"http://www.w3.org/"的页面.
     + 任何URL以"http://www.w3.org/Style/"开头的网页
     + 任何主机名为"mozilla.org"或者主机名以".mozilla.org"结尾的网页     
     + 任何URL以"https:"开头的网页 */

  /* make the above-mentioned pages really ugly */
  body { color: purple; background: yellow; }
}

参考文章

@规则​developer.mozilla.org
d5b14dec06e0cf25a1472f301f678b10.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值