广告位联系
返回顶部
分享到

CSS-@规则(At-rules)常用语法使用总结

css 来源:互联网 作者:秩名 发布时间:2023-02-06 21:55:48 人浏览
摘要

At-rules规则是目前CSS中一种常见的语法规则,它使用一个@符号加一个关键词定义,后面跟上语法区块,如果没有则以分号结束即可。 这种规则一般用于标识文档、引入外部样式、条件判

At-rules规则是目前CSS中一种常见的语法规则,它使用一个"@"符号加一个关键词定义,后面跟上语法区块,如果没有则以分号结束即可。
这种规则一般用于标识文档、引入外部样式、条件判断等等,本文是对该规则的使用总结。

常用规则

@import

@import 主要用于从其他样式表导入新的样式规则,语法:@import url|string list-of-mediaqueries;。

  • url|string:需要引入的样式资源路径,相对路径或绝对路径都可以;
  • list-of-mediaqueries:逗号分隔的条件列表,判断什么条件下才引入该样式资源,支持媒体查询条件。

1

2

@import "./reset.css";

@import url("./reset.css")

当使用条件判断时,可以使用媒体查询条件。

1

2

/* 宽度小于1000px才会生效 */

@import "./reset.css" screen and (max-width: 1000px);

另外,当在html文件或样式文件中使用该语法(不使用现代框架),有两点需要注意:

  • 引入位置:必须位于样式文件或<style>区块的头部,前面不可以出现其他css样式,但可以在@charset 后面。
  • 不能在条件嵌套语法中使用。

当使用vue等框架的时候,则可以在 @import 前出现css样式,也能在条件嵌套语法中使用,是因为导入的样式资源会被解析具体的样式到页面上。

@font-face

@font-face 用于加载自定义字体。属于目前前端比较常用的语法,也有多开源的字体图标库可以使用。
既支持提供字体资源文件路径进行加载,也支持用户本地安装的字体加载。

1

2

3

4

5

6

7

8

@font-face {

  font-family: "iconfont";

  src: url('https://at.alicdn.com/t/font_....ttf?t=1545807318834');

}

@font-face {

  font-family: "iconfont";

  src: url('./font_985780_km7mi63cihi.ttf?t=1545807318834');

}

如上,就是一个加载字体资源的示例,一个加载cdn上的地址,一个加载本地文件。

@font-face 定义了一个CSS区块,有多个属性取值:

  • font-family:指定字体名字,被用于font或font-family属性;
  • src:加载字体资源;

    url():加载字体资源文件;

    local():加载本地电脑字体名称,如 src: local("Arial");;

  • font-style:对src指定字体的描述;
  • font-variant
  • font-weight

1

2

3

4

5

@font-face {

  font-family: "sys-Arial";

  src: local("Arial");

  font-weight: normal;

}

如上,使用local加载当前电脑系统的字体名称。

@charset

@charset 为样式表文件指定所需要使用的字符编码,只能在CSS文件中使用,语法:@charset "charset";。

  • charset:指定使用的字符集。

1

@charset "UTF-8";

特点:

  • 在样式表文件中使用,不能在html文件的<style>区块或元素内样式属性中使用。
  • 必须出现在样式表文件的最前面。
  • 使用有效的字符编码和双引号,并且中间只能间隔一个空格字符,且以分号结尾。
  • 不能在条件嵌套语法中使用。
  • 如果有多个@charset声明,则只有第一个会生效。

浏览器解析样式表文件使用字符编码的顺序:

  • 文件的编码格式;
  • http请求响应中的charset属性值;
  • @charset;
  • link设置;
  • 默认UTF-8;

@keyframes

@keyframes 通过定义动画序列中的关键帧的样式,用来控制CSS动画的中间步骤。
语法定义:@keyframes animationname { keyframes-selector { css-styles; } }。

  • animationname:动画名称,作为动画引用时的标识符;
  • keyframes-selector:关键帧的名称选择器,用于指定关键帧被用于动画过程中的哪个节点,一般是时间节点,有两种取值方式:

    百分比:0% - 100%,时间百分比的节点

    from和to:from等同起始时间from,to等同结束时间

  • css-styles:指定当前关键帧的样式属性值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@keyframes dropIn {

  from {

    opacity: 0;

  }

  to {

    opacity: 1;

  }

}

@keyframes wave {

  0% {

    transform: translateY(0);

  }

  45% {

    transform: translateY(-100%);

  }

  100% {

    transform: translateY(0);

  }

}

如上,使用两种方式定义的关键帧动画样式。

特性说明:

  • 当没有指定开始或结束状态,则将元素的享有样式作为开始或结束状态;
  • 当有多个同名称的关键帧时,样式属性相同以最后一次为准,样式属性不同则会合并所有属性共同起作用;
  • 如果再关键帧样式中使用不能用作动画的属性,会被忽略;
  • 在关键帧中使用 !important 限定样式会被忽略,不起作用。

为了获得最佳动画体验,应该始终定义开始和结束状态。

@media

@media 媒体查询,是基于不同的媒体查询结果定义不同的样式。多用于针对不同屏幕尺寸进行差异化的样式设置,做一些响应式页面设计。另外,如果缩放浏览器的大小,也可以根据查询宽高重新渲染页面样式等。

语法: @media mediatype and|not|only (media feature) { CSS-Style; }。

说明:

  • mediatype:媒体类型,描述设备类别,一般有 all、print、screen、speech,默认all:

    • all:所有设备;
    • print:打印预览模式;
    • screen:用于屏幕;
    • speech:语音合成器;
  • 媒体特性(media feature):描述设备、环境的具体条件特征;必须使用括号括起来,常用的有:

    • 宽高类:width、max-width、min-width、height、max-height、min-height等;
    • 其他:color、grid、orientation、resolution、scan等;
  • 逻辑操作符:and、not、only、,:

    • and:多个规则组合,每条都满足才行;
    • not:否定某个查询规则;
    • only:整个查询匹配时才满足;
    • 逗号,:将多个查询组合,一条满足即可,类似 or;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

@media screen (max-width: 1000px) {

  div {

    background-color: red;

  }

}

 

/*或者嵌套*/

@media screen {

  @media (max-width: 1000px) {

    div {

      background-color: red;

    }

  }

}

如上示例,即是我们经常使用的方式。

@media 媒体查询也能作为 @import 的条件使用,可见上面已有介绍。

link和style中使用

在引入样式表的 <link> 语句中,也可以使用媒体查询,根据不同的条件加载不同的样式文件:

1

2

3

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="./reset.css">

 

<link rel="stylesheet" media="screen and (max-width: 1000px)" href="./reset.css">

在 <style> 样式区块也可以使用媒体查询:

1

2

3

4

5

<style media="screen and (max-width: 1000px)">

  div {

    background-color: red;

  }

</style>

JS检测媒体查询

使用Window.matchMedia() 和MediaQueryList.addListener() 方法来测试和监控媒体状态。
使用方式:

1

2

3

4

5

6

7

8

9

// 获取媒体查询MediaQueryList对象,有matches

const screenMediaQueryList = Window.matchMedia('(max-width: 1000px)')

console.log(1, screenMediaQueryList)

// matches: true  -- 当前媒体查询规则已生效,为false则不生效

// media: "(max-width: 1000px)"

 

screenMediaQueryList.addEventListener('change', (res) => {

  console.log(2, res)

})

可以获取当前是否已使用该媒体查询规则,或者监听媒体查询状态的变化事件。

非常用规则

以下是一些使用较少的@规则。

@supports

@supports 用于指定依赖于浏览器一个或多个特定CSS功能的支持申明。常用来判断当前浏览器是否支持某个CSS特性功能,所以又被称为特性查询。
ie不支持。

如判断自定义属性,详见自定义属性知识介绍。

1

2

3

4

5

6

@supports ((--a: 0)) {

  /* 支持自定义属性 */

}

@supports (not (--a: 0)) {

  /* 不支持自定义属性 */

}

语法,由一组样式声明和一条支持条件构成,支持条件可以是多条,可以使用 and、or、not 等进行结合处理;还可以使用圆括号调整优先级。

1

2

3

4

5

6

7

8

9

10

11

12

/* 浏览器支持grid */

@supports (display: grid) {

  div {}

}

 

/* 不支持grid */

@supports not (display: grid) {

}

 

/* 不支持gri和flex */

@supports not ((display: grid) and (display: flex)) {

}

其他

  • @namespace:是用来定义使用在 CSS 样式表中的 XML 命名空间的 @规则。定义的命名空间可以把通配、元素和属性选择器限制在指定命名空间里的元素。
  • @page:主要用于打印文档时修改某些CSS属性,兼容性不高。
  • counter-style:定义如何把一个计数器的值转化为字符串表示。

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • html+css设计两个摆动的大灯笼

    html+css设计两个摆动的大灯笼
    新年马上就要到了,教大家用html+css设计两个大灯笼,喜气洋洋。 html代码: html代码部分非常简单,将一个灯笼分成几部分进行设计,灯笼
  • CSS-@规则(At-rules)常用语法使用总结
    At-rules规则是目前CSS中一种常见的语法规则,它使用一个@符号加一个关键词定义,后面跟上语法区块,如果没有则以分号结束即可。 这种规
  • css实现简易报警灯的代码

    css实现简易报警灯的代码
    实现效果 实现思路 实现的核心是一个灯罩和一个灯芯。灯罩主要是使用了border-radius圆角边框,灯芯主要是radial-gradient径向渐变。再使用动
  • CSS3使用双旋转实现福到了的迎春喜庆特效代码

    CSS3使用双旋转实现福到了的迎春喜庆特效代码
    春节快到了,因为疫情已经好久没有回老家了,今年终于可以回家过年了,我已经抑制不住自己激动的心情了。因此,我利用css3的旋转做了
  • 三分钟学会使用css雪碧图

    三分钟学会使用css雪碧图
    一. 先分析一下名字(有没有人跟我一开始一样疑惑为啥叫这名) Sprite 英文小精灵的意思,Sprite又叫小精灵图,恰好呢某绿瓶气泡水名也叫
  • css实现文字充电效果的代码

    css实现文字充电效果的代码
    今年Apple推出了搭载M2芯片的新款MacBook Pro和MacBook Air,得到消息第一时间也是去Apple官网看看介绍,看看他们的产品网页,这次没有什么特别
  • CSS动画实现跳动的足球(疯狂世界杯)

    CSS动画实现跳动的足球(疯狂世界杯)
    022卡塔尔世界杯正在如火如荼的进行之中,作为诸神的黄昏,本届世界杯备受瞩目,足坛巅峰老将c罗,梅西,内马尔也将随本次世界杯退役
  • 利用css动画实现节流的介绍

    利用css动画实现节流的介绍
    节流指的避免过于频繁的执行一个函数,例如:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,不
  • CSS3实现一根心爱的二踢脚的代码

    CSS3实现一根心爱的二踢脚的代码
    2023春节快到了,虽然还在上班,但心情早已开始激动,感叹2022终将过去,喜迎2023兔年吧。让我以激动的心情,利用所学css3代码知识,实现
  • CSS预处理器scss/sass语法及使用教程介绍
    scss scss在css基础语法上面增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,使用scss可以很方便的提高开
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计