【问题标题】:Common page header's css styles getting overridden by other page's styles - How do widgets manage?常见页面标题的 css 样式被其他页面的样式覆盖 - 小部件如何管理?
【发布时间】:2017-04-19 19:08:37
【问题描述】:

我有一个页面标题 - 导航栏,比如 page-header.html,它包含在应用程序的所有页面中。标题有一些 CSS 样式。

但有时应用程序内部页面的 css 样式会影响页眉,反之亦然。

我了解特异性规则,您可以将自定义 id 添加到页眉的 css 样式中,例如。

#navigation-bar12345 ul{
color:red;
}

id 是唯一的,因此它有助于不覆盖其他页面的样式并且不被覆盖。

例如,我在 page-header.html 中有一个链接 <a href>,我没有对其应用任何样式。

但是在一个应用程序页面中,比如introduction.html,我已经为链接属性应用了一些特定于页面的样式。

a {
      color:red
  }

考虑到上述情况,我有几个问题:

1) 在上述我没有为page-header.html 中的链接属性指定样式规则的情况下,如何避免链接的样式被introduction.html 覆盖?

2) 我已经阅读了有关作用域 css 的内容,它有助于不覆盖其他页面的样式。但是在 html 页面中包含所有样式是一种开销,而不是一个好习惯?

3) 有什么方法可以保护您的 html 页面(page-header.html)不受您应用程序的其余部分的影响?就我而言,我不希望 page-header.html 中的任何链接元素 (<a href>) 暴露给其他页面的样式,例如 Introduction.html,以防止被覆盖。

4) 好奇的问题 - 我们在页面中包含各种小部件。这些小部件如何管理不操纵其他页面样式或保护自己的样式不被覆盖?

我已经阅读了与此相关的文章和一些堆栈溢出问题,但还没有给我一个清晰的想法。提前感谢您的帮助!

【问题讨论】:

    标签: html css


    【解决方案1】:
    1. 您可以利用“特异性规则”(正如您已经说过的:#thisInputElementID vs Div > Input css 规则)和使用“!important”(color:red !important;)来设置优先级样式。 @David Thomas 在this SO answer 中有很好的文章。

    2. 你是对的,如果过度使用,范围内的 css 会阻塞 HTML。 Arley McBlain 有一篇关于其用途和陷阱的很好的文章here

    3. 为什么不只基于一页创建 CSS 样式表?您可以创建一个名为“/pageHeader.css”的样式表,并将该表仅用于该特定页面。

    4. 我不确定您指的是哪些小部件,但我可以假设如果您查看他们的 css,您会看到答案 1 的组合。这会锁定他们的元素并消除可能影响的任何歧义非小部件元素。

    希望这会有所帮助。

    【讨论】:

    • 您好Ethilium,感谢您的回复和分享链接。为了清楚我的第三个问题,假设我在包含所有导航链接的页面中有一个顶部栏。该顶部栏被导入并跨页面共享,例如 page1.html、page2.html 等,所有这些共享一个公共 css,而不是包含全部不同样式的顶部栏。顶部栏页面中的某些元素可能根本不需要任何样式。比如说,链接的默认样式是蓝色,因此我不添加任何 CSS。
    • 明白了。除了在其他页面上更具体地使用您的元素样式外,您还可以使用:not() 排除那些您不希望受到影响的特定元素。例如:a:not(.NavLinks){color: red;} .
    • 哦,是的,你是对的。我也可以这样做。谢谢!但是没有办法保护 HTML 页面的元素不受其他页面样式的影响,对吧?
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多