我应该自定义normalize.css 文件吗?

mal*_*ann 5 css css-reset

当开始一个新项目时,使用哪些工具、框架和库始终是一个问题。我经常包含Eric Meyer CSS Reset,但这次我将切换到Normalize.css。我将其理解为一个可定制的起点,而不是一个库。我建议包含 normalize.css 文件并覆盖它的特定部分。但我不太确定这是否是正确的方法。更新 normalize.css 文件会比较困难。看来 Normalize.css 也不确定。

\n\n

来自github.com 的文档

\n\n
\n

Normalize.css 是一个可自定义的 CSS 文件,[\xe2\x80\xa6]

\n
\n\n

README.md,第 3 行

\n\n
\n

建议您将 normalize.css 文件作为未修改的库代码包含在内。

\n
\n\n

README.md,第 21 行

\n\n

你有什么建议?

\n

Bra*_*roy 5

我猜这将会结束,因为这是一个有待辩论的问题。不过,我还是想在讨论中补充一些内容。

由于normalize.css(或我所知道的任何重置CSS文件)作为插件包文件分发,因此根据您的需要更改它应该没有问题。它可以与媒体查询中寻找正确的断点进行比较。事实是,没有一条单行道可走,它是一个三角洲:每个人都必须适应他们的项目。这也意味着每个开发人员都必须编写项目特定的代码。一个项目可能需要第一个断点位于 480 像素,而另一个项目不以任何方式考虑移动设备,但它确实提供非常高分辨率的显示。每个项目都是独一无二的,您的代码应该反映这一点。

话虽这么说,但也可以有例外。库、插件和特定片段可以反复使用,无需任何修改。对于库和插件,每个项目可以通过传递调用库或函数的参数来自由使用。例如,当使用 jQuery 时,我不会总是在脚本文件中编写相同的代码,当然不会。这是因为库只是达到目的的一种手段,而不是本身提供功能的独立包。插件(在广泛的上下文中),例如 Modernizr,是另一种野兽。( 1 ) 那么问题就来了,在这方面什么是 CSS 重置?大多数人会说这是一个插件,我同意。但是插件应该被编辑吗?

我认为他们可以。

以 WordPress 插件为例。在互联网上可以找到大量与此讨论相关的主题:是否应该编辑它们。许多偷窥者建议不要这样做。我不会,也永远不会。对于想要向其博客添加功能的简单博主来说,插件本身就足够了。但作为网络开发人员,我们可能需要更多选择(或更少,以优化体验或速度)。只要相关开发人员考虑到更新,更改插件就不会产生任何后果。为什么应该这样?

CSS 重置也是如此。正如我之前所说,每个项目都有特定的样式表,通常一个样式表会覆盖另一个样式表中的值。但是这样的规则有什么好处:

/* normalize.css */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以按照自己的规则覆盖它:

/* your-stylesheet.css */
h1 {
  font-size: 1.8em;
  margin: 0 0 0.8em;
  line-height: 1.24;
}
Run Code Online (Sandbox Code Playgroud)

这很可笑,看起来不是吗?然后我建议编辑normalize.css。

然而...

到目前为止我所写的所有内容(我承认相当多)都考虑了一个项目。但是,如果您经常构建自己的网站,或者主网站有许多子网站等等,该怎么办?您应该如何相应地组织您的工作空间(在本例中为目录结构)?

对于子站点(例如在子域上运行的网站或项目使用相同的 ftp 源但使用不同的样式指南),我建议使用未更改的标准化器。通过这样做,每个项目都必须按照在 normalize.css 中定义的规则进行修改,但它可以防止您normalize.css在 ftp 服务器上传播重复的(但不同!因为您已经为每个项目编辑了它们)文件。您的文件夹结构将如下所示

- root
-- /index.html
-- /css
--- /normalize.css
-- /project-name-1/
--- /index.html
--- /css
---- /style.css
-- /project-name-2/
--- /index.html
--- /css
---- /style.css
-- /project-name-3/
--- /index.html
--- /css
---- /style.css
Run Code Online (Sandbox Code Playgroud)

这意味着index.html根目录与所有(子)项目共享相同的重置(normalize.css,未编辑)。

总结一下:在完全独立的单个项目中,我将编辑规范化文件并将其视为开始使用的基本文件。这是一个很好的指南,但有些东西并不适合项目的需求(例如我之前提到的标题声明)。我自己对 SCSS 进行了化解编辑了 normalize.css 以满足我的需求,并将其用作我所有网站的基本文件。只需在某处保留一份副本,当您获得新项目时:复制它、编辑它并使用它。


1:我知道并不是每个人都同意我的这种区别。它基于 DOM 操作:例如,jQuery允许功能,即执行函数的可能性。您不能调用jQuery 来触发操作或操作。例如,Modernizr 的基本功能就不同。当被调用时,它执行函数并检查浏览器的功能(并将类添加到 DOM)。


mal*_*ann 1

我决定使用 Normalize.css 和 Reset.css 来编写我自己的默认值。