前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS 伪元素基本用法

CSS 伪元素基本用法

作者头像
李振
发布2021-11-26 12:25:59
8110
发布2021-11-26 12:25:59
举报
文章被收录于专栏:乱码李

伪元素

CSS 中可以利用伪元素给 DOM 元素添加特殊的样式。比如说,我们可以通过 :before 在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

CSS3 规范中要求使用双冒号(::)添加伪元素,用以区分伪元素和伪类,比如 ::before 是伪元素,:hover 是伪类。但是大部分伪元素依然支持单冒号的形式,::before 写成 :before 也可以,为了向后兼容,一般推荐使用单冒号的形式。

支持单双冒号的伪元素有: :before/::before:after/::after:first-letter/::first-letter:first-line/::first-line

仅支持双冒号的伪元素有: ::selection::placeholder::backdrop

:before & :after

:before:after 可以在元素前面或者后面插入内容,用 content 属性表示要插入的内容,这个虚拟元素默认是行内元素,可以配合其它样式使用。

html:

代码语言:javascript
复制
<p> </p>

css:

代码语言:javascript
复制
p:before {
  content: 'Hello';
  color: red;
}
p:after {
  content: 'World';
  color: black;
}

p 元素会显示 Hello World,但是被插入的内容实际上不在文档树中。

:first-letter

:first-letter 用来获取元素中文本的首字母,被修饰的首字母不在文档树中。注意没有 :last-letter

首行只在 block-container box 内部才有意义, 因此 :first-letter 伪元素 只在 display 属性值为 block, inline-block, table-cell, list-item 或者 table-caption 的元素上才起作用。 其他情况下 :first-letter 毫无意义。

:first-letter 的优先级低于 :before,也就是如果元素用 :before 先插入文本,会获取 before 伪元素中的内容。

html:

代码语言:javascript
复制
<p>World</p>

css:

代码语言:javascript
复制
p:before {
  content: 'Hello ';
}
p:first-letter {
  font-size: 40px;
  color: red;
}

这时,:first-letter 实际获取的元素是 :before 中的 H

注意: 在一个使用了 :first-letter 伪元素的选择器中,只有很小的一部分 css 属性能被使用 ::first-letter

:first-line

:first-line 用来获取 块状元素 中的第一行文本,不能用于内联元素。

html:

代码语言:javascript
复制
<h1>Hello</br>World</h1>

css:

代码语言:javascript
复制
h1:first-line {
  background: orange;
}

在一个使用了 ::first-line 伪元素的选择器中,只有很小的一部分css属性能被使用 ::first-line

::selection

::selection 伪元素应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分),该伪元素只支持双冒号的形式。

只有 Gecko 引擎需要加前缀(-moz)

代码语言:javascript
复制
::-moz-selection {
  background: orange;
}
 
::selection  {
  background: orange;
}

注意: 只有一小部分 CSS 属性可以用于 ::selection 选择器: color, background-color, cursor, outline, text-decoration, text-emphasis-color 和 text-shadow。要特别注意的是,background-image 会如同其他属性一样被忽略。

::placeholder (试验性质)

:placeholder 匹配占位符的文本,只有元素设置了 placeholder 属性时,该伪元素才能生效。在一些浏览器中(IE10 和 Firefox18 及其以下版本)会使用单冒号的形式。

代码语言:javascript
复制
input::-moz-placeholder {
  color: #666;
}
 
input::-webkit-input-placeholder {
  color: #666;
}
 
/* IE 10 only */
input:-ms-input-placeholder {
  color: #666;
}
 
/* Firefox 18 and below */
input:-moz-input-placeholder {
  color: #666;
}

::backdrop (试验性质)

用于改变全屏模式下背景色,全屏模式默认背景色为黑色。

代码语言:javascript
复制
h1:fullscreen::backdrop {
  background: orange;
}

参考文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 伪元素
    • :before & :after
      • :first-letter
        • :first-line
          • ::selection
            • ::placeholder (试验性质)
              • ::backdrop (试验性质)
              • 参考文章
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档