如何选择适合自己的 CSS Reset 方案

阅读时长 12 分钟读完

CSS Reset 是一个前端开发中经常用到的工具,它的任务是将浏览器对 HTML 元素的默认样式进行重置,目的是为了让所有浏览器展现出一致的样式,即使存在浏览器差异,也可以减少样式修正的工作量。但如何选择适合自己的 CSS Reset 方案,却是很多前端开发者不得不面对的问题。在此,我们将介绍不同的 CSS Reset 方案,并帮助你选择适合自己的方案。

normalize.css

normalize.css 是很多开发者首选的 CSS Reset 方案。它是由 Nicolas Gallagher 于 2011 年创建的,这个方案致力于消除浏览器之间标签的差异,使默认样式在不同的浏览器中保持一致。与其他 reset 方案相比,它不仅对简单而常见的元素进行了重置,还对很多其他元素进行了标准化的样式设置。因此,你不需要再去处理一些特殊的样式情况。但需要注意的是,normalize.css 并不能完全清除浏览器默认样式,在样式上,normalize.css 依然存在一些继承样式。normalize.css 的代码如下:

-- -------------------- ---- -------
--- ------------- ------ - --- ------- - -------------------------------- --

-- --------
   -------------------------------------------------------------------------- --

---
 - -- ------- --- ---- ------ -- --- ---------
 - -- ------- ----------- -- ---- ---- ----- ----------- ------- -- ----
 --

---- -
  ------------ ----- -- - --
  ------------------------- ----- -- - --
  ---------------------------- ------------
-

-- --------
   -------------------------------------------------------------------------- --

---
 - ------ --- ------ -- --- ---------
 --

---- -
  ------- --
-

---
 - ------ --- ------ ------- ------------ -- ---
 --

---- -
  -------- ------
-

---
 - ------- --- ---- ---- --- ------ -- ---- -------- ------ --------- ---
 - --------- -------- -- ------- -------- --- -------
 --

-- -
  ---------- ----
  ------- ------ --
-

-- -------- -------
   -------------------------------------------------------------------------- --

---
 - -- --- --- ------- --- ------ -- --------
 - -- ---- --- -------- -- ---- --- ---
 --

-- -
  ----------- ------------ -- - --
  ------- -- -- - --
  --------- -------- -- - --
-

---
 - -- ------- --- ----------- --- ------- -- ---- ---- -- --- ---------
 - -- ------- --- --- ---- ---- ------ -- --- ---------
 --

--- -
  ------------ ---------- ---------- -- - --
  ---------- ---- -- - --
-

-- ---------- ---------
   -------------------------------------------------------------------------- --

---
 - ------ --- ---- ---------- -- ------ ----- -- -- ---
 --

- -
  ----------------- ------------
-

---
 - -- ------ --- ------ ------ -- ------ ---
 - -- --- --- ------- ---- ---------- -- ------- ----- --- ------ --- -------
 --

----------- -
  -------------- ----- -- - --
  ---------------- ---------- -- - --
  ---------------- --------- ------- -- - --
-

-- -------- -------
   -------------------------------------------------------------------------- --

---
 - ------ --- ------ -- ------ ------ ----- -- -- ---
 --

--- -
  ------------- -----
-

-- -----
   -------------------------------------------------------------------------- --

---
 - -- ------ --- ---- ------ -- --- ---------
 - -- ------ --- ------ -- ------- --- -------
 --

-------
------
---------
-------
-------- -
  ------------ -------- -- - --
  ---------- ----- -- - --
  ------------ ----- -- - --
  ------- -- -- - --
-

-------
----- - -- - --
  --------- --------
-

---
 - ---- --- -------- -- ---
 - ------ -------- -- --------- -- ---- --- ------ -- ---
 --

----------------- -
  --------- --------
-

---
 - ------ --- ------- -------- --------- -- ---
 --

-------------------------------------------
------------------------------------------ -
  ------- -----
-

--------------- -
  ------------------- ---------- -- - --
  --------------- ----- -- - --
-

------------------------------------------ -
  ------------------- -----
-

---
 - -- ------- --- ---- -------- -- ---- --- ---
 - -- ------ --- ----- ------- --- ------ ------ ------ -- ------ --- -------
 --

--------------------------------------- -
  --------- ------- -- - --
  -------- -- -- - --
  ----------- ----- -- - --
-

----------------------------------------------
------------------------------------------ -
  ------------------- -----
-

---
 - ------ --- ------- -------- --------- -- ------- -------- --- ------
 --

-------------- -
  --------------- -------
-

-- -----------
   -------------------------------------------------------------------------- --

--
 - --- --- ------- ------- -- ----- -- ---- --- --------
 --

------- -
  -------- ------
-

--
 - --- --- ------- ------ -- ----- -- ---- --- --------
 --

------- -
  -------- ----------
-

-- ----
   -------------------------------------------------------------------------- --

---
 - --- --- ------- ------- -- -- ----
 --

-------- -
  -------- -----
-

---
 - --- --- ------- ------- -- -- ----
 --

-------- -
  -------- -----
-

reset.css

reset.css 是 Eric Meyer 创建的一个 CSS Reset 方案。相较于 normalize.css,reset.css 对所有元素进行了重置,例如,独立的样式表包含类似于下面这样的样式:

-- -------------------- ---- -------
----- ----- ---- ----- ------- ------- -------
--- --- --- --- --- --- -- ----------- ----
-- ----- -------- -------- ---- ----- -----
---- ---- --- ---- ---- ---- -- -- -----
------ ------- ------- ---- ---- --- ----
-- -- -- -------
--- --- --- --- --- ---
--------- ----- ------ -------
------ -------- ------ ------ ------ --- --- ---
-------- ------ ------- -------- ------
------- ----------- ------- ------- -------
----- ---- ------- ----- -------- --------
----- ----- ------ ----- -
  ------- --
  -------- --
  ------- --
  ---------- -----
  ----- --------
  --------------- ---------
-
-------- ------ -------- ----------- -------
------- ------- ------- ----- ---- ------- -
  -------- ------
-
---- -
  ------------ --
-
--- -- -
  ----------- -----
-
----------- - -
  ------- -----
-
------------------ -----------------
--------- ------- -
  -------- ---
  -------- -----
-
----- -
  ---------------- ---------
  --------------- --
-

可以看到,reset.css 的代码可以清除所有的浏览器默认元素样式,显然,它的重置范围更广泛,其中大量的样式都无法通过 normalize.css 进行操作。但值得注意的是,reset.css 会导致很多元素失去预设的基本样式,需要经过重新设置才能正常使用。

其他方案

除了 normalize.css 和 reset.css 这两个主流方案之外,还有一些其他的 CSS Reset 方案,例如:

这些方案也可根据需求选择。

了解了不同的 CSS Reset 方案后,如何选择适合自己的呢?我们总结了几个建议:

  1. 对于跨浏览器相同的样式可选择使用 normalize.css;
  2. 对于更广泛的样式清除需求,可以选择 reset.css;
  3. 根据自身需要自行定制或修改 CSS Reset 方案;
  4. 选择已经得到广泛应用并持续更新维护的方案;
  5. 建议使用浏览器兼容性好、支持范围广的方案。

示例代码

下面是使用 normalize.css 和 reset.css 的示例代码:

-- -------------------- ---- -------
--------- -----
----- ----------
  ------
    ----- --------------- --
    ----- --------------- ---------------------------- ------------------ --
    ---------- ----- --------------
    ----- ---------------- -------------------- --
    ----- ---------------- ---------------- --
    -------
      -- --------- ---- ------ --
      ---- -
        ------------ ------ -----------
        ---------- -----
        ------------ ----
        ------ -----
      -
    --------
  -------
  ------
    ---------- -----------
    ---
      ----- ----- ----- --- ---- ----------- ----------- ----- ------- -------
      ----- --- ---- ----------- -------- --------- ---- ---- ----------
      ------- --- ---- ------ --------- ------ -------- ----- --- --------
      -----
    ----
  -------
-------

希望以上的介绍能帮助你选择适合的 CSS Reset 方案,并减少你的样式修正工作。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b0cf9748841e9894cfd75d

纠错
反馈