Normalize.css+Resets:在重置样式中选择最佳优化

阅读时长 4 分钟读完

Normalize.css+Resets:在重置样式中选择最佳优化

在前端开发中,为了跨浏览器一致性和避免默认的样式干扰,我们通常需要使用重置样式来规范化样式表。其中比较常用的有 Resets 和 Normalize.css 两种方式。这篇文章主要讲解如何在选择重置样式时进行最佳优化。

Resets 和 Normalize.css 的区别

Resets 是一种基础的样式重置方法。它的原理非常简单,就是把所有标签的默认样式都清空,然后再去定义自己需要的样式。举个例子, resst 样式表中会写上以下代码:

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

这段代码会将常见标签的 margin、padding、border、outline 等属性全部归零,然后设置默认字体大小为 100%。这种方式虽然能够有效地解决浏览器样式兼容性问题,但同时也会带来一系列问题:

  1. 重置样式会影响所有标签,包括一些外部的 UI 组件库,导致与组件库的样式产生冲突。
  2. 重置样式破坏了一些默认的 HTML 结构,比如所有标签都变成了行内元素,这样会影响页面布局。
  3. 在进行样式规划的时候需要写很多冗余的代码。

为了解决上述问题,Normalize.css 应运而生。Normalize.css 是一个用来重置样式的 CSS 库。它保留了浏览器的默认样式,但是在此基础上做了一些优化。具体来说,它主要包含了以下几个方面:

  1. 样式的准确性更高:Normalize.css 保留了浏览器默认的样式,同时加上了一些修正来避免浏览器不一致性。
  2. 样式的完整性更高:Normalize.css 不仅重置了基础的样式,还包括许多其他的元素的样式,比如一些新的 HTML5 元素。
  3. 样式的稳定性更高:Normalize.css 一直在更新,以适应新的浏览器和 Web 标准。

如何选择?

那么,我们在编写前端样式的时候应该如何选择适合自己的重置库呢?在这里,我们总结了一些选择的要点:

  1. 如果你想保持页面原有结构,避免样式覆盖,那么可以选择 Normalize.css。
  2. 如果你需要更严格的控制,而不是基于浏览器默认行为,那么可以选择 Resets。
  3. 如果你使用了一些 UI 组件库,那么可以选择不使用重置库。

最后,我们提供一些示例代码,供大家参考。

  1. 使用 Normalize.css
  1. 使用 Resets
-- -------------------- ---- -------
------
  ------ ----------------
    -- ---- ----- --- --
    ------- -----------------------------------------------------------
    
    -- ----------- --
    ---- -
      ----- -------- ---------- ------ ---------- ------ -----------
    -
  --------
-------

总结

本文从 Resets 和 Normalize.css 两方面介绍了如何在重置样式中进行最佳优化。在实际中要根据自己的需求和项目的实际情况选择合适的重置库。

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

纠错
反馈