非常教程

CSS参考手册

选择 | Selectors

::before

在CSS中,::before创建一个伪元素,它是所选元素的第一个子元素。它通常用于将内容添加到具content属性的元素。它是默认内联的。

/* Add a heart before links */
a::before {
  content: "♥";
}

语法

/* CSS3 syntax */
::before

/* CSS2 syntax */
:before

CSS3引入了::before符号(用两个冒号)来区分伪类和伪元素。在CSS2中引入后,浏览器也接受:before

实例

添加引号

使用::before伪元素的一个简单例子是添加引号。这里我们同时使用::before::after插入引号。

HTML内容

<q>Some quotes,</q> he said, <q>are better than none.</q>

CSS内容

q::before { 
  content: "«";
  color: blue;
}
q::after { 
  content: "»";
  color: red;
}

输出

装饰实例

我们可以在content属性中几乎以任何方式设置文本或图像的样式。

HTML内容

<span class="ribbon">Notice where the orange box is.</span>

CSS内容

.ribbon {
  background-color: #5BC8F7;
}

.ribbon::before {
  content: "Look at this orange box.";
  background-color: #FFBA10;
  border-color: black;
  border-style: dotted;
}

输出

待办事项清单

在这个例子中,我们将使用伪元素创建一个简单的待办事项列表。通常可以使用此方法向UI添加小的用户交互并改善用户体验。

HTML内容

<ul>
  <li>Buy milk</li>
  <li>Take the dog for a walk</li>
  <li>Exercise</li>
  <li>Write code</li>
  <li>Play music</li>
  <li>Relax</li>
</ul>

CSS内容

li {
  list-style-type: none;
  position: relative;
  margin: 2px;
  padding: 0.5em 0.5em 0.5em 2em;
  background: lightgrey;
  font-family: sans-serif;
}

li.done {
  background: #CCFF99;
}

li.done::before {
  content: '';
  position: absolute;
  border-color: #009933;
  border-style: solid;
  border-width: 0 0.3em 0.25em 0;
  height: 1em;
  top: 1.3em;
  left: 0.6em;
  margin-top: -1em;
  transform: rotate(45deg);
  width: 0.5em;
}

JavaScript内容

var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
  if( ev.target.tagName === 'LI') {
     ev.target.classList.toggle('done'); 
  }
}, false);

这里是上面示例代码的运行实例。请注意,我们在这里没有使用图标,并且复选标记实际上是已经在CSS中设置过样式的::before。现在让我们继续。

输出

笔记

尽管Firefox 3.5中的定位修复程序不允许将内容作为单独的前向同级元素生成(按照CSS规范中的说明:“:before:after伪元素元素与其他框之间的交互作用...就好像它们是真正的,插入到相关联的元素中的元素“),它们可以用于在无表格布局上提供轻微的改进(例如,为了实现居中):只要将要居中的内容包裹在另一个子元素中,就可以在不添加之前或之后的兄弟节点的情况下在所需居中内容的前后加入列(即,在下面添加额外的行在语义上可能是更正确的,而不是在内容前后添加空的<div />)。(永远记得把宽度加一个浮点数,否则,它将不会浮动!)

HTML内容

<div class="example">
<span id="floatme">"Floated Before" should be generated on the left of the 
viewport and not allow overflow in this line to flow under it. Likewise 
should "Floated After" appear on the right of the viewport and not allow this 
line to flow under it.</span>
</div>

CSS内容

#floatme { float: left; width: 50%; }

/* To get an empty column, just indicate a hex code for a non-breaking space: \a0 as the content (use \0000a0 when following such a space with other characters) */
.example::before {
  content: "Floated Before";
  float: left;
  width: 25%
}
.example::after {
  content: "Floated After";
  float: right;
  width:25%
}

/* For styling */
.example::before, .example::after, .first {
  background: yellow;
  color: red;
}

输出

规范

Specification

Status

Comment

CSS Pseudo-Elements Level 4The definition of '::before' in that specification.

Working Draft

No significant changes to the previous specification.

CSS Transitions

Working Draft

Allows transitions on properties defined on pseudo-elements.

CSS Animations

Working Draft

Allows animations on properties defined on pseudo-elements.

Selectors Level 3The definition of '::before' in that specification.

Recommendation

Introduces the two-colon syntax.

CSS Level 2 (Revision 1)The definition of '::before' in that specification.

Recommendation

Initial definition, using the one-colon syntax

浏览器兼容性

Feature

Chrome

Edge

Firefox (Gecko)

Internet Explorer

Opera

Safari (WebKit)

:before support

(Yes)

(Yes)

1.0 (1.7 or earlier)1

8.0

4

4.0

::before support

(Yes)

(Yes)

1.5 (1.8)1

9.0

7

4.0

Support of animations and transitions

26

(Yes)

4.0 (2.0)

No support

No support

No support

Feature

Android

Chrome

Edge

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

:before support

(Yes)

(Yes)

(Yes)

(Yes)

?

?

?

::before support

(Yes)

(Yes)

(Yes)

(Yes)

7.1

?

5.1

Support of animations and transitions

26

(Yes)

(Yes)

4.0 (4.0)

No support

No support

No support

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 表单