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

时间:2015-03-01 12:51:33

标签: css css-reset

在开始一个新项目时,始终存在使用哪些工具,框架和库的问题。我经常包含Eric Meyer CSS Reset,但这次我会切换到Normalize.css。我将其理解为可自定义的起点,而不是库。我建议包括normalize.css文件并覆盖它的特定部分。但我不确定,如果这是正确的方法。更新normalize.css文件比很难。似乎Normalize.css也不确定。

来自documentation at github.com

  

Normalize.css是一个可自定义的CSS文件[...]

README.md,第3行

  

建议您将normalize.css文件包含为未触及的库代码。

README.md,第21行

你会建议什么?

3 个答案:

答案 0 :(得分:4)

我猜这将被关闭,因为这是一个争论的问题。但是,我仍想在讨论中添加一些内容。

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

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

我认为他们可以。

以Wordpress插件为例。在互联网上可以找到关于这个讨论的大量主题:它们是否应该被编辑。许多偷看建议反对它。我不会,也永远不会。对于想要为他或她的博客添加功能的简单博客,插件本身就足够了。但是,作为Web开发人员,我们可能需要更多选项(或更少,以优化体验或速度)。只要有问题的开发人员考虑到更新,改变插件就没有任何后果。为什么要这样?

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

/* normalize.css */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

然后用你自己的规则覆盖:

/* your-stylesheet.css */
h1 {
  font-size: 1.8em;
  margin: 0 0 0.8em;
  line-height: 1.24;
}

这很荒谬,似乎不是吗?然后我会建议编辑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

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

总结一下:在一个完全独立的单个项目中,我编辑normalize文件,只需将其视为基本文件即可开始使用。这是一个很好的指导方针,但有些事情并不符合项目的需要(例如我之前提到的标题声明)。我自己SCSS-ified 编辑了normalize.css以满足我的需求,并将其用作我所有网站的基本文件。只需在某处保留一份副本,当你得到一个新项目时:复制,编辑和使用它。


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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

除了默认的font-family,font-size,line-height和其他一些可选项之外,我认为不需要自定义Normalize。

我创建了Initialize.css,这是一组最佳实践,例如normalize,并且可以使用SASS(scss)进行配置(还有一个css版本)。在这种情况下,你可以使用normalize并设置你自己的默认font-familty,font-size和line-height,如果你需要一些边距到段落和标题等元素。你不会从CSS覆盖开始,这太棒了! : - )

http://jeroenoomsnl.github.io/initialize-css/