Html 特定于页面的css规则-放在哪里?

Html 特定于页面的css规则-放在哪里?,html,css,Html,Css,通常,当我在设计一个网站时,我需要一个特定的样式来应用于页面上的特定元素,并且我绝对确定它只会应用于该页面上的该元素(例如绝对定位的按钮或其他东西)。我不想求助于内联样式,因为我倾向于同意将样式与标记分开的理念,所以我发现自己在内部争论将样式定义放在哪里 我讨厌为一次性使用场景在我的基础css文件中定义特定的类或ID,我也害怕创建特定于页面的.css文件。对于我正在处理的当前站点,我正在考虑将样式定义放在head元素的页面顶部。你会怎么做?我会将它们放在页面顶部的标签中。对于这种情况,我认为将页

通常,当我在设计一个网站时,我需要一个特定的样式来应用于页面上的特定元素,并且我绝对确定它只会应用于该页面上的该元素(例如绝对定位的按钮或其他东西)。我不想求助于内联样式,因为我倾向于同意将样式与标记分开的理念,所以我发现自己在内部争论将样式定义放在哪里


我讨厌为一次性使用场景在我的基础css文件中定义特定的类或ID,我也害怕创建特定于页面的.css文件。对于我正在处理的当前站点,我正在考虑将样式定义放在head元素的页面顶部。你会怎么做?

我会将它们放在页面顶部的
标签中。

对于这种情况,我认为将页面特定的样式信息放在标题中可能是最好的解决方案。您的站点范围的样式表似乎是错误的,我同意您对内联样式的看法。

在这种情况下,我通常将其放在页面顶部。我有一个PHP页面定义框架,我使用它为每个页面携带局部变量,其中一个是特定于页面的CSS样式。

看看是否有一个类的组合可以提供您想要的结果。您可能还想考虑将一个元素的CSS分解为几个可以在其他元素上重用的类。这将有助于将整个站点所需的CSS降至最低

我会尽量避免将特定于页面的CSS放在HTML文件的顶部,因为这样会使您的CSS在您想要更改网站外观时变得支离破碎

对于真正、真实、永远不会用于其他任何东西的CSS,我仍然会在站点范围的CSS中加入
#id
规则


由于CSS是从一个不同的文件链接进来的,它允许浏览器缓存该文件,这会略微减少服务器带宽,以备将来加载。

如果您想知道样式的定义位置,请将其放置在您想要查看的位置


对我来说,这与我将使用2次、5次或170次的样式放在同一个位置-我认为没有理由根据使用次数将样式从主样式表中排除。

我认为您肯定应该扩展思考过程,包括对“页面特定css”的一些疑问。这应该是一件非常罕见的事情。我想说的是,无论如何都要使用全局样式表,但要重构css/html,使页面不必具有超特定的样式。如果最终在全局css中有几行特定于页面的标记,谁在乎呢。无论如何,最好将它放在一个一致的位置。

不值得为一个或两个特定规则加载特定于页面的CSS文件。我会把它放在文档头部的标签中。我通常做的是使用我的站点范围的CSS文件,然后使用注释,根据页面进行分区,并在那里应用特定的规则。

在消费页面中定义样式或将样式内联是同一个硬币的两面-在这两种情况下,您都是使用页面带宽来获得样式。我不认为一个一定比另一个好


我主张在站点范围的主样式表中为它创建一个#选择器。污染是最小的,如果你真的有那么多真正独特的案例,你可能会想重新考虑你标记网站的方式

正如您所知,样式表文件是静态文件,缓存在客户端。它们也可以通过web服务器进行压缩。因此,将它们放入外部文件是我的选择。

我会为如下页面设置一个id

<body id="specific-page"> or <html id="specific-page">

并在站点范围的css文件中使用css覆盖机制。

有四种基本情况:

  • 样式=属性。这是最不易维护但最容易编写的代码。我个人认为使用样式=是一个bug。
    • 元素位于页面顶部。这比style=稍微好一点,因为它保持了标记的干净,但是它浪费了带宽,使CSS的全面更改变得更加困难,因为您无法查看样式表并知道存在哪些规则
    • 页面特定css:这允许您拥有干净的HTML和干净的主css文件。然而,这意味着您的客户端必须下载大量的小CSS文件,这会增加带宽和页面加载延迟。然而,它很容易维护
    • 一个大的站点范围的CSS:一个大文件的主要优点是它只有一件东西可以下载。这在带宽和延迟方面效率更高
  • 如果您正在进行任何服务器端编程,您可能只需要动态组合来自#3的多个工作表即可获得#4的效果

    我建议您使用一个大文件,无论您是将其作为一个文件进行维护,还是通过构建过程或在服务器上动态生成该文件。您可以使用特定于页面的ID指定选择器(始终包括一个,以防万一)

    至于这个问题,我不同意找到“能给你想要的结果的类的组合”。在我看来,这些类似乎是在识别视觉样式,而不是逻辑概念。您的类应该类似于“标题框”,而不是“红色”。然后,如果您需要更改用户信息页面上的文本颜色,您可以说

    #userInfoPage .titlebox h1 { color : red; }
    

    不要到处应用类,因为类当前具有您想要的特定外观。您应该将高级概念放入页面中,用带有类的HTML表示,然后设置这些概念的样式,而不是相反的样式。

    我希望我能给出所有人的答案,但您的答案最为详细,所以您可以理解。最后,我设计了一个足够通用的类,可以放在主css文件中,而不会造成混乱。感谢您对缓存和页面大小的考虑