css 通配符选择器 * 有什么使用场景_用于样式初始化 reset

老强姑娘_4836

老强姑娘_4836

2026-01-20

185人浏览

原创

通配符选择器 初始化样式易出问题,因无差别匹配所有元素(含 svg、math 等),导致表单控件错位、SVG 压缩、可访问性布局断裂;现代 reset 已弃用 ,改用白名单精准重置。

css 通配符选择器 * 有什么使用场景_用于样式初始化 reset

为什么用 * 做样式初始化容易出问题

通配符选择器 * 会匹配页面中所有元素,包括 html、body、svg、math 等非普通 HTML 元素。它本身没有重置语义,只是「无差别应用样式」,盲目设 margin: 0; padding: 0; 会导致:
– 表单控件(如 input、button)失去默认内边距和行高,文字贴边或垂直错位
– textarea 和 select 高度异常,光标定位偏移
– svg 图标尺寸被意外压缩(因 box-sizing 覆盖)
– 屏幕阅读器相关元素(如 summary)布局断裂

* 在现代 reset 中基本被弃用

主流 reset 方案(如 modern-normalize、sanitize.css)完全不使用 *。它们采用白名单方式,只对已知有默认样式的元素显式归一化,例如:
– 仅重置 h1~h6 的 margin
– 仅对 ol、ul 设 padding-left: 0,保留 li 的自然缩进逻辑
– 对 table 单独处理 border-collapse,而非靠 * 一刀切

如果非要兼容旧项目,* 必须加限制条件

仅在极简原型或内部工具页中临时使用时,可配合属性选择器缩小影响范围:
– 限定作用域:*[class] 或 .reset-root *,避免污染第三方组件
– 排除特定标签:*:not(svg):not(math):not(iframe)(注意 IE 不支持)
– 避免设置 box-sizing:改用 *:where(:not(svg)) + 后续单独声明 html *, html *::before, html *::after(更安全)
– 绝不设置 font-size 或 line-height,这两项会破坏继承链

HTML Text Extract
HTML Text Extract

从HTML页面(URL、文件或标准输入)中提取主体内容文本,去除导航、页脚、广告和模板文本。可直接传递给readability_check或其他文本工具。

下载
/* 推荐的轻量级替代写法(非 *) */
:where(html, body, h1, h2, h3, h4, h5, h6, p, blockquote, pre, address, dl, ol, ul) {
  margin: 0;
}
:where(ol, ul) {
  padding-left: 0;
}
:where(input, button, textarea, select) {
  margin: 0;
  padding: 0.375em 0.75em;
}

真正该关注的是继承与层叠控制点

比 * 更关键的是控制根节点的初始值:
– 在 :root 或 html 上设 box-sizing: border-box 并用 *::before, *::after 继承(这是唯一合理用到 * 的地方)
– 所有字体相关重置应集中在 html 或 body,而非扩散到每个子元素
– rem 基准必须通过 html { font-size: 100% } 锚定,不是靠 * 拦截

重置的本质是「有选择地消除差异」,不是「无差别抹平一切」。通配符越早从 reset 文件里删掉,后续调试表单、SVG、可访问性问题就越少。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

4196

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

306

9

margin在css中是啥意思
margin在css中是啥意思

在CSS中,margin是一个用于设置元素外边距的属性。想了解更多margin的相关内容,可以阅读本专题下面的文章。

2023.12.18

857

10

css中的padding属性作用
css中的padding属性作用

在CSS中,padding属性用于设置元素的内边距。想了解更多padding的相关内容,可以阅读本专题下面的文章。

2023.12.07

3092

3

html边框设置教程
html边框设置教程

本教程将带你全面掌握HTML/CSS边框设置,从基础的border属性讲起,涵盖所有边框样式、圆角设置及高级技巧,帮助你快速上手实现各种边框效果。

2025.09.02

2753

11

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.24

874

4

iframe写法有哪些
iframe写法有哪些

iframe写法有基本Iframe写法、嵌套Iframe写法、自适应宽高的Iframe写法、带有样式和属性的Iframe写法、内联Iframe写法和使用JavaScript动态创建Iframe写法。种写法都有自己的特点和适用场景。根据实际需求,选择合适的写法可以实现所需的功能和效果。

2023.10.19

2463

8

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

20

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.1万人学习