通配符选择器

学习

通配符选择器

2026-02-23/0/ 编辑


通配符选择器

什么是通配符选择器

通配符选择器(*)选择页面上的所有元素。

语法

* {
  属性名1: 属性值1;
  属性名2: 属性值2;
}

示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>通配符选择器</title>
  <style>
    /* 选择所有元素,去掉默认边距 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
  </style>
</head>
<body>
  <h1>标题</h1>
  <p>段落</p>
  <div>盒子</div>
</body>
</html>

特点

1. 选择所有元素

通配符选择器会选择 HTML 文档中的所有元素

<style>
  * {
    color: red;
  }
</style>
<body>
  <h1>标题(红色)</h1>
  <p>段落(红色)</p>
  <div>盒子(红色)</div>
  <span>文本(红色)</span>
</body>

2. 优先级最低

通配符选择器的优先级为 0,是所有选择器中最低的。

/* 优先级: 0 */
* {
  color: red;  /* 被覆盖 */
}

/* 优先级: 1 */
div {
  color: blue;  /* 生效 */
}

3. 影响性能

通配符选择器会影响 CSS 解析性能,应谨慎使用。

常见用法

1. 样式重置

最常用的场景是作为样式重置的基础。

/* 通用样式重置 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

2. 统一盒模型

/* 统一使用 border-box */
* {
  box-sizing: border-box;
}

3. 设置默认字体

* {
  font-family: Arial, sans-serif;
}

4. 去掉列表样式

ul, ol {
  list-style: none;
}

后代通配符选择器

通配符选择器可以与后代选择器组合使用。

语法

父元素 * {
  /* 选择父元素下的所有后代元素 */
}

示例

<style>
  /* 选择 .container 内的所有元素 */
  .container * {
    border: 1px solid #ddd;
  }
</style>
<body>
  <div class="container">
    <h1>标题</h1>
    <p>段落</p>
    <div>盒子</div>
  </div>
</body>

伪类组合

<style>
  /* 选择所有获得焦点的元素 */
  *:focus {
    outline: 2px solid blue;
  }

  /* 选择所有悬停的元素 */
  *:hover {
    cursor: pointer;
  }
</style>

实际应用

应用1: 完整样式重置

/* 通用样式重置 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* HTML5 语义化标签重置 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section {
  display: block;
}

/* 列表样式重置 */
ul, ol {
  list-style: none;
}

/* 图片样式 */
img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* 链接样式 */
a {
  text-decoration: none;
  color: inherit;
}

应用2: 统一字体

* {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  color: #333;
}

应用3: 布局容器

<style>
  /* 容器内的所有元素 */
  .container * {
    box-sizing: border-box;
  }

  /* 特定区域的所有元素 */
  #main * {
    margin: 0;
    padding: 0;
  }
</style>

应用4: 调试样式

<style>
  /* 调试: 给所有元素添加边框 */
  * {
    border: 1px solid red;
  }

  /* 调试: 给所有元素添加背景色 */
  * {
    background-color: rgba(255, 0, 0, 0.1);
  }
</style>

性能影响

性能问题

通配符选择器会影响 CSS 解析性能,特别是在大型项目中。

优化建议

1. 避免过度使用

/* 不推荐: 频繁使用通配符选择器 */
* {
  color: red;
}

*::before,
*::after {
  content: '';
}

2. 使用具体选择器

/* 推荐: 使用具体选择器 */
body {
  font-family: Arial, sans-serif;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0;
}

p {
  margin: 0;
}

3. 限制作用范围

/* 推荐: 限制在特定容器内 */
.container * {
  box-sizing: border-box;
}

/* 不推荐: 作用范围太大 */
* {
  box-sizing: border-box;
}

与其他选择器对比

选择器语法选择范围优先级性能
通配符选择器*所有元素0
标签选择器div所有 div 元素1
类选择器.class所有 class 元素10
ID 选择器#id唯一元素100最好

优缺点

优点

  1. 简单直接: 语法简单,易于理解
  2. 全局生效: 一次性选择所有元素
  3. 样式重置: 适合作为样式重置的基础

缺点

  1. 优先级最低: 容易被其他选择器覆盖
  2. 性能影响: 影响页面渲染性能
  3. 作用范围大: 可能影响不需要的元素
  4. 缺乏语义: 不够精确,容易产生意外影响

最佳实践

1. 只用于样式重置

/* 推荐: 仅用于样式重置 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

2. 避免用于具体样式

/* 不推荐: 用于具体样式 */
* {
  color: red;
  font-size: 14px;
}

/* 推荐: 使用具体选择器 */
body {
  color: #333;
  font-size: 14px;
}

3. 限制作用范围

/* 推荐: 限制在特定容器内 */
.container * {
  box-sizing: border-box;
}

4. 与其他选择器配合

/* 通用重置 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* 具体元素的样式 */
h1 {
  font-size: 24px;
  margin-bottom: 10px;
}

p {
  line-height: 1.5;
}

常见错误

1. 过度使用

/* 不推荐 */
* {
  color: red;
  background-color: white;
  font-size: 14px;
  padding: 10px;
  margin: 10px;
}

2. 与其他选择器冲突

/* 通配符选择器 */
* {
  margin: 0;
}

/* 特殊元素需要 margin */
.header {
  margin-top: 20px;
}

3. 忽略性能影响

/* 不推荐: 在大型项目中频繁使用 */
* {
  /* 复杂样式 */
}

学习要点

  1. 语法: * { },选择所有元素
  2. 优先级: 最低,为 0
  3. 性能: 影响页面渲染性能
  4. 用途: 主要用于样式重置
  5. 后代: 可以与后代选择器组合使用
  6. 最佳实践: 只用于样式重置,避免过度使用
  7. 优化: 限制作用范围,使用具体选择器