非常教程

CSS参考手册

杂项 | Miscellaneous

Cascade

级联是CSS的一个基本特征。它是一种定义如何组合来自不同来源的属性值的算法。它的名字就是CSS的核心:层叠样式表。

CSS实体参与级联

只有CSS声明(即属性/值对)参与级联。这意味着包含声明以外的实体的规则(例如@font-face包含描述符不参与级联。在这种情况下,只有整个规则参与级联; 这里是由其font-family描述符标识的@ font-face 。如果@font-face定义了几个具有相同描述符的描述符,则只@font-face考虑整体上最合适的描述符。

虽然在规则中包含大多数的声明-比如那些@media@documents@supports-参加级联,包含在声明中@keyframes没有。与之类似@font-face,通过级联算法仅选择规则作为整体。

最后注意@import@charset遵守特定的算法,不受级联算法的影响。

Origin of CSS declarations

CSS级联算法想要选择CSS声明来为CSS属性设置正确的值。CSS声明来自不同的来源:

  • 浏览器有一个基本样式表,为任何文档提供默认样式。这些样式表被命名为用户代理样式表。一些浏览器使用实际样式表来执行此操作,而其他浏览器使用代码模拟它们,但这两种许用户修改用户代理样式表。尽管HTML规范设置了一些用户代理样式表的约束,但浏览器仍然有很大的自由度:这意味着从一个浏览器到另一个浏览器存在显着差异。为了简化他们的开发并降低工作的基础,Web开发人员经常使用CSS重置样式表,将公共属性值强制为已知状态。
  • 网页的作者定义了文档的样式。这些是最常见的样式表。大多数时候,他们中的一些人是被定义的,他们制作网站的外观和感觉 - 它的主题。
  • 阅读器,浏览器的用户,可以有一个自定义样式表来定制其体验。

虽然样式表来自这些不同的来源,但它们在范围上重叠:级联算法定义它们如何交互。

级联顺序

级联算法确定如何找到应用于每个文档元素的每个属性的值。

  1. 它首先过滤来自不同来源的所有规则,以仅保留适用于给定元素的规则。这意味着规则的选择符与给定元素相匹配,哪些是适当媒体规则的一部分。
  2. 然后根据它们的重要性对这些规则进行分类,也就是说,它们是否跟随!important,以及它们的起源。级联按升序排列,这意味着!important来自用户定义样式表的值优先于源自用户代理样式表的正常值:Origin重要性 用户代理正常 用户正常 作者正常 CSS动画见下面 作者!important 用户!important 用户代理!important
  3. 在平等的情况下,价值的特殊性被认为是选择其中一种。

CSS动画和级联

CSS动画,使用@keyframesat-rules定义状态之间的动画。关键帧不会级联,这意味着CSS在任何时候都从一个单独获取值,@keyframes并且从不混合其中的几个值。

当几个关键帧合适时,它会选择最重要的文档中定义的最新版本,但从未将所有关键帧合并在一起。

还要注意,@keyframesat-rules 内的值会覆盖所有正常值,但会被!important值覆盖。

用户代理CSS:

li { margin-left: 10px }

Author CSS 1:

li { margin-left: 0 } /* This is a reset */

Author CSS 2:

@media screen {
  li { margin-left: 3px }
}

@media print {
  li { margin-left: 1px }
}

User CSS:

.specific { margin-left: 1em }

HTML:

<ul>
  <li class="specific">1<sup>st</sup></li>
  <li>2<sup>nd</sup></li>
</ul>

在这种情况下,内部申报li.specific规则应适用。没有声明被标记为!important优先顺序是用户样式表或用户代理样式表之前的作者样式表。

所以有三个声明在竞争中:

margin-left: 0
margin-left: 3px
margin-left: 1px

最后一个被忽略(在屏幕上),并且两个第一个具有相同的选择器,因此具有相同的特征:它是最后选择的最后一个:

margin-left: 3px

请注意,用户CSS中定义的声明虽然具有较高的特定性,但未选择,因为在特定性算法之前应用了级联算法。

CSS

层叠样式表( Cascading Style Sheets )是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

CSS目录

1.动画和转换 | Animations & Transitions
2.背景和边框 | Backgrounds & Borders
3.基本框模型 | Basic Box Model
4.基本用户界面 | Basic User Interface
5.框对齐 | Box Alignment
6. 级联和继承 | Cascading & Inheritance
7.颜色 | Color
8. 合成与混合 | Compositing & Blending
9.条件和规则 | Conditional Rules
10.计数器样式 | Counter Styles
11.设备适配 | Device Adaptation
12.扩展 | Extensions
13.滤镜效果 | Filter Effects
14.灵活的框布局 | Flexible Box Layout
15.字体 | Fonts
16.片段模块 | Fragmentation
17.全屏 API | Fullscreen API
18. 生成内容 | Generated Content
19.网格布局 | Grid Layout
20.图像值 | Image Values
21.初始线格局 | Inline Layout
22.列表和计数器 | Lists & Counters
23.逻辑属性 | Logical Properties
24.面具 | Masking
25.媒体查询 | Media Queries
26.杂项 | Miscellaneous
27.Miscellaneous Level 1
28.Miscellaneous Level 2
29.运动路径 | Motion Path
30. 多列布局 | Multi-column Layout
31.命名空间 | Namespaces
32.项目模型 | Object Model View
33.网页媒体 | Paged Media
34.定位布局 | Positioned Layout
35.伪元素 | Pseudo-
36.节奏大小 | Rhythmic Sizing
37. Ruby布局 | Ruby Layout
38.可缩放矢量图形 | Scalable Vector Graphics
39.滚动快照 | Scroll Snap
40.选择 | Selectors
41.形状 | Shapes
42.文本 | Text
43.文字装饰 | Text Decoration
44.变换 | Transforms
45.值和单位 | Values & Units
46.变量 | Variables
47.写入模型 | Writing Modes
48.CSS 教程
49.CSS 创建
50.CSS Id 和 Class选择器
51.CSS 简介
52.CSS 盒子模型
53.CSS Table(表格)
54.CSS 列表样式(ul)
55.CSS 链接(link)
56.CSS Fonts(字体)
57.CSS Text(文本)
58.CSS Backgrounds(背景)
59.CSS Display(显示) 与 Visibility(可见性)
60.CSS 尺寸 (Dimension)
61.CSS 分组和嵌套
62.CSS 轮廓(outline)属性
63.CSS Border(边框)
64.CSS 图像透明/不透明
65.CSS 导航栏
66.CSS 伪元素
67.CSS 伪类
68.CSS Float(浮动)
69.CSS Position(定位)
70.CSS 总结
71.CSS 属性选择器
72.CSS 媒体类型
73.CSS 图像拼合技术
74.CSS 实例
75.CSS 组合选择符
76.响应式 Web 设计 – 框架
77.响应式 Web 设计 – 视频(Video)
78.CSS 提示工具(Tooltip)
79.CSS 布局 Overflow
80.CSS 计数器
81.CSS 表单