【问题标题】:Page-specific css rules - where to put them?特定于页面的 css 规则 - 将它们放在哪里?
【发布时间】:2009-04-22 01:58:00
【问题描述】:

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

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

【问题讨论】:

    标签: html css


    【解决方案1】:

    查看是否存在可以为您提供所需结果的类组合。您可能还想考虑将那个元素的 CSS 分解为几个可以在其他元素上重复使用的类。这将有助于最大限度地减少整个网站所需的 CSS。

    我会尽量避免在 HTML 文件顶部使用特定于页面的 CSS,因为如果您想更改网站的外观,这会使您的 CSS 碎片化。

    对于真的,真的,永远不会用于其他任何东西的 CSS,我仍然会求助于在站点范围的 CSS 中添加 #id 规则。

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

    【讨论】:

    • 我希望我能给出所有答案,但你的答案是最冗长的,所以你明白了。我最终设计了一个足够通用的类,可以放在主 css 文件中,而不会使事情变得混乱。感谢您考虑缓存和页面大小,我也忘了考虑这一点。
    【解决方案2】:

    有四种基本情况:

    1. 风格=属性。这是最难维护但最容易编码的。我个人认为使用 style= 是一个错误。
      • page-specific css:这让您拥有干净的 HTML 干净的主 CSS 文件。但是,这意味着您的客户端必须下载大量的小 CSS 文件,这会增加带宽和页面加载延迟。但是,它非常易于维护。
      • 一个大站点范围的 CSS:一个大文件的主要优点是它只需下载一件事。这在带宽和延迟方面效率更高。

    如果您正在进行任何服务器端编程,您也许可以动态组合 #3 中的多个工作表以获得 #4 的效果。

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

    至于answer that was accepted when I wrote this,,我不同意找到“可以为您提供所需结果的类组合”。在我看来,这听起来像是课程正在识别视觉风格而不是逻辑概念。你的类应该是“titlebox”而不是“red”。然后如果你需要改变用户信息页面上的文字颜色,你可以说

    #userInfoPage .titlebox h1 { color : red; }
    

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

    【讨论】:

      【解决方案3】:

      我会为这样的页面设置一个 id

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

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

      【讨论】:

        【解决方案4】:

        我认为您绝对应该扩展思考过程,以包括对“特定于页面的 css”的一些疑问。这应该是一件非常非常难得的事情。无论如何,我会说去使用全局样式表,但是重构你的 css / html 以使页面不必具有超级特定的样式。如果最终在全局 css 中有几行特定于页面的标记,谁在乎。无论如何,最好把它放在一个一致的地方。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            我会将它们放在页面顶部的&lt;style /&gt; 标记中。

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

                如您所知,样式表文件是静态文件并缓存在客户端。它们也可以通过 Web 服务器进行压缩。所以把它们放在一个外部文件中是我的选择。

                【讨论】:

                  【解决方案9】:

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

                  【讨论】:

                  • 这些不是内联样式,当您将它们设置在 style 标签内时,它们是内部样式。
                  【解决方案10】:

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

                  【讨论】:

                    【解决方案11】:

                    如果您想知道样式是在哪里定义的,请将其放在您想看的地方。

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2012-07-11
                      • 1970-01-01
                      • 2020-04-17
                      • 1970-01-01
                      • 2010-10-31
                      • 2014-06-07
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多