早知道 CSS 有这 5 个伪元素,代码也不至于写那么复杂了!

开发 前端
我们都知道,页面样式通常写在 CSS 规则里。但有时候为了实现一些特殊的效果,往往会借助 JavaScript。

[[356518]]

我们都知道,页面样式通常写在 CSS 规则里。但有时候为了实现一些特殊的效果,往往会借助 JavaScript。最佳实践当然是职责分离:CSS 负责表现,HTML 负责结构,JavaScript 负责行为。所以,样式上能用 CSS 解决的,尽量不用 JavaScript。这样代码更简洁、易维护,性能也更好。

本文将介绍 5 个 CSS 伪元素,你可能从来没听说过,或者没用过。一起来看看吧!

什么是伪元素

伪元素和伪类是 CSS 初学者容易搞混的两个概念。

伪元素:是一个附加至选择器末的关键词,允许你对被选择元素的特定部分修改样式。例如::before,::after,::first-letter等。它是创造出一个并不存在的“元素”内容,并附加样式。

伪类:没有创造元素内容,只是选中某些状态下的已有元素,并附加样式。比如:first-child,:active,:focus等等。

伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿。但实际上 CSS3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。

  1. :Pseudo-classes         //伪类  
  2. ::Pseudo-elements       //伪元素 

但因为兼容性的问题,现在大部分还是统一的单冒号。不过我们在书写时应该尽可能养成好习惯,区分两者。

下面逐一介绍这 5 个伪元素。

1::first-letter

对块级元素第一行的第一个字符设置样式,并且这个字符前面没有其他内容(例如图片或者内联表格),只对块级元素生效。这个伪元素在博客文章用得比较多,比如:

::first-letter

用伪类实现就比较简单了:

  1. p { 
  2.   width: 500px; 
  3.   line-height: 1.5; 
  4.  
  5. h2 + p::first-letter { 
  6.   color: white; 
  7.   background-color: black; 
  8.   border-radius: 2px; 
  9.   box-shadow: 3px 3px 0 red; 
  10.   font-size: 250%; 
  11.   padding: 6px 3px; 
  12.   margin-right: 6px; 
  13.   floatleft

要是不用这个伪类实现相同的效果,想想都觉得麻烦。

2::first-line

跟::first-letter类似,用于设置文本或者块级元素的第一行内容的样式。

  1. ::first-line { 
  2.   color: blue; 
  3.   text-transform: uppercase; 
  4.  
  5.   /* WARNING: 这些样式不起作用 */ 
  6.   /* 很多属性在 ::first-line 伪元素里是无效的 */ 
  7.   margin-left: 20px; 
  8.   text-indent: 20px; 

::first-line {

3::selection

设置元素被用户选中高亮后的样式。对该伪元素生效的样式属性只有三个:

  • color
  • background properties (background-color, background-image, etc.)
  • text-shadow

::selection

4::backdrop

这个伪元素有点面生,它是跟 viewport 大小一致的盒子,当页面处于全屏模式时充当背景。比如利用它设置全屏视频的背景色:

  1. video::backdrop { 
  2.   background-color: #448; 

::backdrop

5::placeholder

<input>或者<textarea>的输入提示性文字,默认是灰色的,可以自定义文字样式。

  1. input::placeholder { 
  2.   color: red; 
  3.   font-size: 1.2em; 
  4.   font-style: italic; 

::placeholder

最后

 

CSS 伪元素还有很多,本文只列举了5个比较实用的。希望大家在项目里能用得上。

本文转载自微信公众号「1024译站」,可以通过以下二维码关注。转载本文请联系1024译站公众号。

 

责任编辑:武晓燕 来源: 1024译站
相关推荐

2020-01-09 12:11:02

Python 开发编程语言

2019-12-29 23:40:38

Python编程语言代码

2015-06-04 17:35:45

融合媒体云华为

2023-05-22 15:37:31

CSS元素JavaScript

2023-08-14 15:56:52

CSS 伪元素开发

2020-07-16 08:46:50

Python 开发编程语言

2015-08-28 10:31:20

Windows 10预览版更新

2015-08-10 09:53:10

Windows 10隐私

2015-11-09 12:54:55

Build 10586手机版Windows 10

2024-01-05 17:16:03

2016-01-15 09:46:16

开源DJMixxx 2.0

2020-04-27 09:21:25

Android谷歌功能

2017-09-29 10:33:53

互联网

2015-03-23 10:20:04

程序员精英程序员程序员忠告

2013-02-26 09:42:14

奥斯卡小金人微软

2018-03-22 19:03:34

2016-05-19 14:21:00

2021-07-27 12:45:07

NaaS网络网络即服务

2016-02-19 11:51:47

Windows 10RedStoneBuild 14267
点赞
收藏

51CTO技术栈公众号