轻松上手,快乐学习!

CSS 教程

CSS 教程CSS 简介CSS 语法CSS 选择器CSS 如何使用CSS 注释CSS 颜色RGB 颜色HEX 颜色HSL 颜色CSS 背景CSS 背景图像CSS 背景重复CSS 背景附着CSS 背景简写属性CSS 边框CSS 边框宽度CSS 边框颜色CSS 边框各边CSS 简写边框属性CSS 圆角边框CSS 外边距CSS 外边距合并CSS 内边距CSS 高度/宽度CSS Box 模型CSS 轮廓CSS 轮廓宽度CSS 轮廓颜色CSS 轮廓简写属性CSS 轮廓偏移CSS 文本CSS 文本对齐CSS 文本修饰CSS 文本转换CSS 文本间距CSS 文本阴影CSS 字体CSS 字体样式CSS 字体大小CSS 谷歌字体CSS 字体简写属性CSS 图标CSS 链接CSS 列表CSS 表格CSS DisplayCSS Max-widthCSS 定位CSS 溢出CSS 浮动CSS 清除浮动CSS 浮动实例CSS Inline-blockCSS 对齐CSS 组合器CSS 伪类CSS 伪元素CSS 不透明度CSS 导航栏CSS 垂直导航栏CSS 水平导航栏CSS 下拉菜单CSS 图片库CSS 图像拼合技术CSS 属性选择器CSS 表单CSS 计数器CSS 网站布局CSS 单位CSS 特异性CSS3 高级教程CSS3 简介CSS3 圆角CSS3 边框图像CSS3 多重背景CSS3 颜色CSS3 渐变CSS3 径向渐变CSS3 阴影CSS3 盒子阴影CSS3 文本效果CSS3 网络字体CSS3 2D 转换CSS3 3D 转换CSS3 过渡CSS3 动画CSS3 提示框CSS3 样式图像CSS3 object-fitCSS3 按钮CSS3 分页CSS3 多列CSS3 用户界面CSS3 变量CSS3 覆盖变量CSS3 变量 - JavaScriptCSS3 盒子大小CSS3 媒体查询CSS3 媒体查询实例CSS3 弹性盒子CSS3 弹性容器CSS3 弹性项目CSS3 弹性响应式RWD 简介RWD 视口RWD 网格视图RWD 媒体查询RWD 图像RWD 视频RWD 框架RWD 模板Grid 网络简介Grid 网格容器Grid 网格项目CSS 模板CSS 实例CSS 测验CSS 练习

CSS 参考手册

CSS 参考手册CSS 浏览器支持CSS 选择器参考手册CSS 函数参考手册CSS 听觉参考手册CSS 网络安全字体CSS 动画相关属性CSS 单位Px/Em 换算CSS 颜色CSS 合法颜色值CSS 默认值参考手册CSS 实体


CSS 伪元素


什么是伪元素?

CSS 伪元素用于设置元素指定部分的样式。

例如,它可用于:

  • 设置元素的首字母、首行的样式
  • 在元素的内容之前或之后插入内容

语法

伪元素的语法:

selector::pseudo-element {
  property: value;
}

::first-line 伪元素

::first-line 伪元素用于向文本的首行添加特殊样式。

下面的例子为所有 <p> 元素中的首行添加样式:

Example 

p::first-line {
  color: #ff0000;
  font-variant: small-caps;
}
亲自试一试 »

注释: ::first-line 伪元素只能应用于块级元素。

以下属性适用于 ::first-line 伪元素:

  • 字体属性
  • 颜色属性
  • 背景属性
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

请注意双冒号表示法 - ::first-line 对比 :first-line

在 CSS3 中,双冒号取代了伪元素的单冒号表示法。这是 W3C 试图区分伪类伪元素的尝试。

在 CSS2 和 CSS1 中,伪类和伪元素都使用了单冒号语法。

为了向后兼容,CSS2 和 CSS1 伪元素可接受单冒号语法。



::first-letter 伪元素

::first-letter 伪元素用于向文本的首字母添加特殊样式。

下面的例子设置所有 <p> 元素中文本的首字母格式:

实例

p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}
亲自试一试 »

注释: ::first-letter 伪元素只适用于块级元素。

下面的属性适用于 ::first-letter 伪元素:

  • 字体属性
  • 颜色属性
  • 背景属性
  • 外边距属性
  • 内边距属性
  • 边框属性
  • text-decoration
  • vertical-align(仅当 "float" 为 "none")
  • text-transform
  • line-height
  • float
  • clear

伪元素和 CSS 类

伪元素可以与 CSS 类结合使用:

实例

p.intro::first-letter {
  color: #ff0000;
  font-size: 200%;
}
亲自试一试 »

上面的例子将以红色和较大的字体显示 class="intro" 的段落的首字母。


多个伪元素

也可以组合几个伪元素。

在下面的例子中,段落的第一个字母将是红色,字体大小为 xx-large。第一行的其余部分将变为蓝色,并使用小型大写字母。该段的其余部分将是默认的字体大小和颜色:

实例

p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}

p::first-line {
  color: #0000ff;
  font-variant: small-caps;
}
亲自试一试 »

CSS - ::before 伪元素

::before 伪元素可用于在元素内容之前插入一些内容。

下面的例子在每个 <h1> 元素的内容之前插入一幅图像:

实例

h1::before {
  content: url(smiley.gif);
}
亲自试一试 »

CSS - ::after 伪元素

::after 伪元素可用于在元素内容之后插入一些内容。

下面的例子在每个 <h1> 元素的内容之后插入一幅图像:

实例

h1::after {
  content: url(smiley.gif);
}
亲自试一试 »

CSS - ::selection 伪元素

::selection 伪元素匹配用户选择的元素部分。

以下 CSS 属性可以应用于 ::selection

  • color
  • background
  • cursor
  • outline

下例使所选文本在黄色背景上显示为红色:

实例

::selection {
  color: red;
  background: yellow;
}
亲自试一试 »

CSS 习题和测验


所有 CSS 伪元素

选择器 实例 实例描述
::after p::after 在每个 <p> 元素之后插入内容。
::before p::before 在每个 <p> 元素之前插入内容。
::first-letter p::first-letter 选择每个 <p> 元素的首字母。
::first-line p::first-line 选择每个 <p> 元素的首行。
::selection p::selection 选择用户选择的元素部分。

所有 CSS 伪类

选择器 实例 实例描述
:active a:active 选择活动的链接。
:checked input:checked 选择每个被选中的 <input> 元素。
:disabled input:disabled 选择每个被禁用的 <input> 元素。
:empty p:empty 选择没有子元素的每个 <p> 元素。
:enabled input:enabled 选择每个已启用的 <input> 元素。
:first-child p:first-child 选择作为其父的首个子元素的每个 <p> 元素。
:first-of-type p:first-of-type 选择作为其父的首个 <p> 元素的每个 <p> 元素。
:focus input:focus 选择获得焦点的 <input> 元素。
:hover a:hover 选择鼠标悬停其上的链接。
:in-range input:in-range 选择具有指定范围内的值的 <input> 元素。
:invalid input:invalid 选择所有具有无效值的 <input> 元素。
:lang(language) p:lang(it) 选择每个 lang 属性值以 "it" 开头的 <p> 元素。
:last-child p:last-child 选择作为其父的最后一个子元素的每个 <p> 元素。
:last-of-type p:last-of-type 选择作为其父的最后一个 <p> 元素的每个 <p> 元素。
:link a:link 选择所有未被访问的链接。
:not(selector) :not(p) 选择每个非 <p> 元素的元素。
:nth-child(n) p:nth-child(2) 选择作为其父的第二个子元素的每个 <p> 元素。
:nth-last-child(n) p:nth-last-child(2) 选择作为父的第二个子元素的每个<p>元素,从最后一个子元素计数。
:nth-last-of-type(n) p:nth-last-of-type(2) 选择作为父的第二个<p>元素的每个<p>元素,从最后一个子元素计数
:nth-of-type(n) p:nth-of-type(2) 选择作为其父的第二个 <p> 元素的每个 <p> 元素。
:only-of-type p:only-of-type 选择作为其父的唯一 <p> 元素的每个 <p> 元素。
:only-child p:only-child 选择作为其父的唯一子元素的 <p> 元素。
:optional input:optional 选择不带 "required" 属性的 <input> 元素。
:out-of-range input:out-of-range 选择值在指定范围之外的 <input> 元素。
:read-only input:read-only 选择指定了 "readonly" 属性的 <input> 元素。
:read-write input:read-write 选择不带 "readonly" 属性的 <input> 元素。
:required input:required 选择指定了 "required" 属性的 <input> 元素。
:root root 选择元素的根元素。
:target #news:target 选择当前活动的 #news 元素(单击包含该锚名称的 URL)。
:valid input:valid 选择所有具有有效值的 <input> 元素。
:visited a:visited 选择所有已访问的链接。