最流行的 CSS Reset 方法及其优缺点

阅读时长 11 分钟读完

CSS Reset 是 Web 前端开发中常用的一种技术,通过清除各个浏览器默认样式,实现网站效果的统一和规范。本文将介绍目前最流行的 CSS Reset 方法以及其优缺点,并给出具体的示例代码。

1. Eric Meyer's Reset CSS

Eric Meyer's Reset CSS 是目前最著名的 CSS Reset 方法之一。该方法通过重设各个 HTML 元素的所有属性,使得网站的样式能够在各种浏览器上呈现一致,从而达到网页初步布局的效果。具体代码如下:

-- -------------------- ---- -------
----- ----- ---- ----- ------- ------- -------
--- --- --- --- --- --- -- ----------- ----
-- ----- -------- -------- ---- ----- -----
---- ---- --- ----- ---- ---- ---- -- -- -----
------ ------- ------- ---- ---- --- ----
-- -- -- -------
--- --- --- --- --- ---
--------- ----- ------ -------
------ -------- ------ ------ ------ --- --- ---
-------- ------ ------- -------- ------
------- ----------- ------- ------- -------
----- ---- ------- ----- -------- --------
----- ----- ------ ----- -
    ------- --
    -------- --
    ------- --
    ---------- -----
    ----- --------
    --------------- ---------
-
-- ----- ------------ ----- --- ----- -------- --
-------- ------ -------- ----------- -------
------- ------- ------- ----- ---- ------- -
    -------- ------
-
---- -
    ------------ --
-
--- -- -
    ----------- -----
-
----------- - -
    ------- -----
-
------------------ -----------------
--------- ------- -
    -------- ---
    -------- -----
-
----- -
    ---------------- ---------
    --------------- --
-
展开代码

优点:Eric Meyer's Reset CSS 保留了 HTML 元素之间嵌套的关系,同时它的样式丰富,比较全面。

缺点:重设各个 HTML 元素的所有属性会非常耗费性能,而且如果网站中有用户自定义的样式表,Eric Meyer's Reset CSS 可能会不够灵活。

2. Normalize.css

Normalize.css 是一个相对于 Eric Meyer's Reset CSS 更加轻量级、更加模块化的 CSS Reset 方法。它在 Eric Meyer's Reset CSS 的基础上,对一些细节进行了更加细致的处理。比如把一些元素的边框显示为点线,让表单元素的样式保留原有效果等。具体代码如下:

-- -------------------- ---- -------
--- ------------- ------ - --- ------- - -------------------------------- --
-- --------
   -------------------------------------------------------------------------- --
---
 - -- ------- --- ---- ------ -- --- ---------
 - -- ------- ----------- -- ---- ---- ----- ----------- ------- -- ----
 --
---- -
  ------------ ----- -- - --
  ------------------------- ----- -- - --
-
-- --------
   -------------------------------------------------------------------------- --
---
 - ------ --- ------ -- --- -------- --------------
 --
---- -
  ------- --
-
---
 - --- --- ------- ------- -- -- ---
 - -- --- --- ------- ------- -- ----- --- --- --------
 - -- --- --- ------- ------- -- ---
 --
--------
------
-------
-------
----
------- -
  -------- ------
-
---
 - ------ --- ----------- --- ------------- -- ---- -------- -- ----- --- --- -------
 --
----
-----
----
---- -
  ------------ ---------- ---------- -- - --
  ---------- ---- -- - --
-
-- -------- -------
   -------------------------------------------------------------------------- --
---
 - ------ --- ------ -- ------ ----- -- ----- --- --- -------
 --
-- -
  ------- --
-
---
 - ------- --- ----------- --- ------- -- ---- ---- -- --- ---------
 --
--------
-------
-------- -
  ------------ -------- -- - --
  ---------- -------- -- - --
  ------------ -------- -- - --
-
-- -------
   -------------------------------------------------------------------------- --
---
 - --- --- ------- ------- ---- ----- - ------ ------- -- - --------- ---- --------
 --
-------
----------------
---------------
--------------- -
  ------------------- -------
-
展开代码

优点:Normalize.css 代码量较小,采用模块化的设计思路,支持在其基础上扩展自己的 CSS 样式。

缺点:作者在 Normalize.css 中更加关注于浏览器间的差异性,可能会对网站的性能造成一定程度的削弱。

3. Modern Normalize

Modern Normalize 是 Normalize.css 的加强版,它针对一些重要的特性进行了更加详细的处理。比如,对于表格、链接、字体、元素的最小宽度等等都进行了统一处理。同时,Modern Normalize 还加入了一些比较新的样式,支持 CSS3 属性的一些前缀处理。具体代码如下:

-- -------------------- ---- -------
--- ---------------- ------ - --- ------- - ------------------------------------------------ --
-- --------
   -------------------------------------------------------------------------- --
---
 - --- - ------ --- ----- --------------
 --
---- -
  ----------- -----------
-
--
---------
------- -
  ----------- --------
-
---
 - --- - ---- -------- --- ---- --------------
 --
----- -
  -------------- --
  --------- --
-
---
 - ------ --- ------ -- --- ---------
 --
---- -
  ------- --
-
---
 - ------ ---------- --------- -- --- ---------
 --
-----
---- -
  ----------- -------
-
-- --------
   -------------------------------------------------------------------------- --
---
 - ---- -------- ---- ----- --------- -------- -- - -------- --------
 --
--------------
---------------------- -
  -------- ------
-
---
 - --- --- ------- --------- ----- -- ----- ---------
 --
--- -
  -------- ------
-
---
 - ------ --- ------ -- ------ ------
 --
-- -
  ------- --
-
-- ---------- ---------
   -------------------------------------------------------------------------- --
---
 - --- --- ------- ----------------- ----- -- ------
 --
- -
  ---------------- -----
-
---
 - ------ --- ------- -- ------- ----- ---- ---- --- ---- ------ -- --------
 --
-------------------------------- -
  -------- --
-
---
 - --- --- ------- ------------- --- ---- -----
 --
--
------ -
  ------------ -------
-
---
 - ---- ---- ---- --- ------ -------- --- ----- ------ ---------
 --
-----
----
-----
--- -
  ------------ ---------- ----------
  ---------- ----
-
---
 - --- -------- -- ---------------- --------- ----- ---- ------- -------- -----
 - -------- -- ------ ---
 --
------
-------
-------
---------
---------
------ -
  --------------- ---------
-
-- -----
   -------------------------------------------------------------------------- --
---
 - ----- --- ------- --------- ------ --- ------- ---- ---------
 --
-------------------------------------------
--------------------------------------------- -
  ------------------- -----
-
---
 - ------ --- ----- ------- --- ------ ------- -- ------ --- ------ -- ------
 --
-------------------------------
--------------------------- -
  ------------------- -----
-
-------------------- -
  ------------------- -----
  ---------------- -----
  ----------- -----
-
---
 - ------- --- ----- ------ ----- -- --- -------- -----
 --
-------------------------- -
  -------- -----
-
展开代码

优点:Modern Normalize 从浏览器的渲染机理入手,进一步完善了 Normalize.css 的代码。

缺点:Modern Normalize 的代码量较大,可能会影响网站的性能。

小结

本文主要介绍了当前比较流行的三种 CSS Reset 方法,分别是 Eric Meyer's Reset CSS、Normalize.css 和 Modern Normalize。对于这三种方法,要根据自己的实际需求和网站规模进行选择,找出最适合自己的 CSS Reset 方法,才能够提高网站的性能、兼容性和规范性。

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

纠错
反馈

纠错反馈