【问题标题】:Different style sheets for different parent pages不同父页面的不同样式表
【发布时间】:2015-11-23 22:14:46
【问题描述】:

我正在努力调整我的 Angular JS 应用程序。

最后我想在整个应用程序中使用我的app.css 文件作为样式表。所以每个状态都像:

  • domain/#/articles
  • domain/#/articles/1
  • domain/#/users
  • domain/#/users/1

将使用此文件。

但是我的应用程序中确实有一个 cms 部分(即domain/#/cms/articles,我想在那里使用完全不同的样式(与app.css 没有共同之处)。我可以做些什么来轻松加载@987654329 @ 用于选定的状态并且不在那里加载app.css

我最初的想法是在我的index.html 文件中添加两个样式表,每个样式表都带有ng-ifng-show,但这绝对不是一个好方法(很可能它甚至都行不通)。

【问题讨论】:

标签: javascript html css angularjs angular-ui-router


【解决方案1】:

如何为每个页面分配一个顶级类,然后在其中嵌套该页面独有的样式?如果您使用的是 LESS 或 SASS 之类的 CSS 预处理器,这将变得更加简单。

例如,你会有这样的东西:

<div class='main-page' ng-controller='main'>
    <p>Some text</p>
    <p>Some more text</p>
</div>

<div class='cms-page' ng-controller='cms'>
    <p>Some CMS text</p>
    <p>Some more CMS text</p>
</div>

然后在你的 CSS 中:

.main-page {
//main styles here
    background-color: black;

    p {
        color: white;
    }
}

.cms-page {
//cms styles here
    background-color: red;

    p {
        color: blue;
    }
}

根据需要推断该想法,但现在您不必担心重用类名或使一个页面上的样式与另一个页面上的样式冲突,因为所有内容都安全地嵌套在其页面类中。

当然,对于全局样式,您只需将它们排除在顶级页面类之外。

【讨论】:

  • 如果我没记错的话,这种方法需要一次加载所有样式。同样在我的情况下,没有“全局”样式(至少两个样式表之间没有共同点)。
  • 啊,对不起。我没有注意到您不想加载所有样式。对于基于路由的样式,你可以看看这个人做了什么:stackoverflow.com/questions/15193492/… 他正在使用 Angular 路由器,但我看不出它不适用于 ui-router 的任何原因。
  • 我已经看到了他的想法,并会尝试通过 gulp injection 与它成为朋友 :),但不确定它会如何工作。
猜你喜欢
  • 2017-05-13
  • 1970-01-01
  • 2015-08-12
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
相关资源
最近更新 更多