首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

::before

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

代码语言:javascript
复制
/* Add a heart before links */
a::before {
  content: "?";
}

语法

代码语言:javascript
复制
/* CSS3 syntax */
::before

/* CSS2 syntax */
:before

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

实例

添加引号

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

HTML内容

代码语言:javascript
复制
<q>Some quotes,</q> he said, <q>are better than none.</q>

CSS内容

代码语言:javascript
复制
q::before { 
  content: "?";
  color: blue;
}
q::after { 
  content: "?";
  color: red;
}

输出

装饰实例

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

HTML内容

代码语言:javascript
复制
<span class="ribbon">Notice where the orange box is.</span>

CSS内容

代码语言:javascript
复制
.ribbon {
  background-color: #5BC8F7;
}

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

输出

待办事项清单

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

HTML内容

代码语言:javascript
复制
<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内容

代码语言:javascript
复制
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内容

代码语言: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内容

代码语言:javascript
复制
<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内容

代码语言:javascript
复制
#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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com