伪元素和伪类的区别和作用?

简介: 伪元素和伪类的区别和作用?

什么是伪元素和伪类

伪元素伪元素(pseudo-elements)是CSS中的一种选择器,用于选择元素的特定部分而不是整个元素本身。伪元素允许你在已选择的元素内部创建或修改内容,而无需在文档结构中添加额外的HTML元素。伪元素的语法以::(双冒号)作为前缀,如::before::after

以下是一些常见的伪元素及其主要作用:

  1. ::before:用于在所选元素的内容之前插入生成的内容。这通常用于在元素前面添加一些装饰性的内容,比如图标或文本。
  2. ::after:用于在所选元素的内容之后插入生成的内容。类似于::before,它也经常用于添加额外的装饰性元素。
  3. ::first-line:用于选择所选元素的第一行文本。你可以使用它来为文本的第一行应用特定的样式。
  4. ::first-letter:用于选择所选元素的第一个字母或字符。通常用于创建首字母大写或特殊的样式。
  5. ::selection:用于选择用户选择的文本部分(鼠标拖选时)。你可以使用它来自定义选中文本的样式。

伪类伪类(pseudo-class)是CSS中的一种选择器,用于选择HTML元素的特定状态或关系,而不是选择元素本身。伪类可以根据用户交互、元素的位置、链接状态等条件来选择元素,从而允许你应用不同的样式或行为。伪类的语法以:(单冒号)作为前缀,如:hover:first-child

以下是一些常见的伪类及其主要作用:

  1. :hover:用于选择用户鼠标悬停在元素上时的状态。通常用于创建悬停效果,如改变链接的颜色或显示工具提示。
  2. :active:用于选择用户点击元素时的状态。通常用于创建点击效果,如按钮按下时的变化。
  3. :focus:用于选择元素获得焦点时的状态,通常用于表单元素,如文本框或按钮,以突出显示当前激活的元素。
  4. :first-child:选择父元素的第一个子元素。这可用于设置第一个子元素的特定样式。
  5. :nth-child(n):选择父元素的第n个子元素。你可以使用这个伪类来选择元素列表中的某个特定元素。
  6. :not(selector):选择不匹配给定选择器的元素。这允许你排除某些元素以应用样式。
  7. :visited:选择已访问的链接元素,通常用于改变已访问链接的样式。

总结: 伪元素创建了抽象元素,而伪类代表了元素的特殊状态。注意语法上的区别,伪元素使用::  伪类使用:

使用场景

1、:hover鼠标悬停

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .parent {
        padding: 30px;
      }
      .child:hover {
        cursor: pointer;
        color: aqua;
      }
    </style>
  </head>
  <body>
    <div class="parent">
      <div class="child">一段文字</div>
    </div>
  </body>
</html>

当鼠标悬停文字颜色就变了。2、:active 鼠标按下的状态

.child:active {
  cursor: pointer;
  color: red;
 }

3、:focus激活状态的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        .input {
            width: 200px;
            padding: 10px;
            border: 2px solid #ccc;
        }
        .input:focus {
            border-color: blue;
            outline: none; /* 可选,用于去除默认的焦点边框 */
        }
    </style>
</head>
<body>
    <label for="example">输入框:</label>
    <input type="text" id="example" class="input">
</body>
</html>

激活后:4、:first-child  :nth-child(n)。类似还有:first-of-type。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      ul li:nth-child(2) {
        background-color: yellow;
      }
      ul li:first-child {
        color: blue;
      }
    </style>
  </head>
  <body>
    <ul>
      <li>第一个子元素</li>
      <li>第二个子元素</li>
      <li>第三个子元素</li>
    </ul>
  </body>
</html>

在这里插入图片描述

5、:not(selector) 伪类用于选择不匹配指定选择器的元素


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        p:not(.special) {
            font-weight: bold;
        }
    </style>
</head>
<body>
    <p>This is a normal paragraph.</p>
    <p class="special">This is a special paragraph.</p>
    <p>This is another normal paragraph.</p>
</body>
</html>

6、::before

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      .custom-button::before {
        content: "\2713"; /* Unicode字符 ✓ 代表勾号 */
        margin-right: 5px; /* 添加一些间距 */
        color: green; /* 颜色为绿色 */
      }
      .custom-button {
        background-color: lightblue;
        padding: 10px 20px;
        border: none;
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <button class="custom-button">点击这里</button>
  </body>
</html>

在这个示例中,定义了一个 .custom-button 类,并使用 ::before 伪元素在按钮文本前插入一个勾号图标。通过设置 content 属性为 "\2713"(Unicode字符 ✓)。7、::after

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      .quote::after {
        content: "\201D"; /* Unicode字符 ” 代表右双引号 */
        color: #999;
      }
      .quote {
        font-size: 18px;
        font-style: italic;
      }
    </style>
  </head>
  <body>
    <p class="quote">这是一段带有引用的文本。</p>
  </body>
</html>

在这个示例中,定义了一个 .quote 类,并使用 ::after 伪元素在引用文本后插入右双引号。通过设置 content 属性为 "\201D"(Unicode字符 ”)。8、::first-line、::first-letter 和 ::selection

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      p {
        width: 100px;
      }
      p::first-line {
        font-weight: bold;
        color: blue;
      }
      p::first-letter {
        font-size: 24px;
        color: red;
      }
      ::selection {
        background-color: yellow;
        color: black;
      }
    </style>
  </head>
  <body>
    <p>
      This is the first line of text. The rest of the text goes here. This is
      just an example.
    </p>
  </body>
</html>

例子中分别给第一行设置了加粗且文字颜色是蓝色、给第一个字符设置了大小及颜色、选中文字黄色背景。

第六行是一个选中颜色的效果

本文只是列举了一些伪类和伪元素以及它们的一点小用法。伪元素和伪类还有很多用处。

目录
相关文章
|
6月前
|
前端开发
伪类,伪元素有什么,区别是什么
伪类,伪元素有什么,区别是什么
136 0
|
23天前
|
前端开发 UED 开发者
伪类选择器与伪元素选择器的区别
【10月更文挑战第23天】通过以上对伪类选择器和伪元素选择器的详细比较和分析,我们可以更清晰地理解它们之间的差异和各自的特点。在实际的网页设计和开发中,正确地选择和使用伪类选择器与伪元素选择器,能够为我们的页面带来更出色的视觉效果和更好的用户体验。同时,要不断关注浏览器的发展和更新,以确保我们的代码在各种环境下都能正常运行。
36 8
|
23天前
|
前端开发
提高伪类选择器和伪元素选择器优先级的多种方法
【10月更文挑战第22天】通过以上对提高伪类选择器和伪元素选择器优先级的多种方法的深入探讨,我们对优先级的控制有了更全面的了解。在实际开发中,我们可以根据具体情况灵活选择合适的方法,以达到最佳的样式效果。同时,要不断积累经验,提高对 CSS 优先级规则的理解和运用能力,从而更好地应对各种复杂的样式需求。
|
2月前
|
JavaScript 容器
哪些标签存在伪元素,伪类和伪元素的区别
哪些标签存在伪元素,伪类和伪元素的区别
|
5月前
|
前端开发
CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)
CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)
|
5月前
|
前端开发
CSS伪类与伪元素的区别
CSS伪类与伪元素的区别
37 0
|
前端开发 JavaScript
css中什么是伪类?伪类,伪元素有哪些?区别是什么?
css中什么是伪类?伪类,伪元素有哪些?区别是什么?
121 1
|
6月前
|
前端开发
css伪类伪元素都有哪些区别是什么
css伪类伪元素都有哪些区别是什么
|
前端开发
伪类和伪元素的区别?
伪类和伪元素的区别?
|
前端开发
css伪类和伪元素的区别
css伪类和伪元素的区别
下一篇
无影云桌面