【发布时间】:2014-09-05 15:28:11
【问题描述】:
我知道一个好的做法是将 css 代码保存在外部 .css 文件中,而不是在 html 代码中添加标签。但是只对单个 Angular 部分 html 有效的 css 代码呢?
感谢您的建议。
【问题讨论】:
-
请花点时间查看答案并选择正确的答案。
我知道一个好的做法是将 css 代码保存在外部 .css 文件中,而不是在 html 代码中添加标签。但是只对单个 Angular 部分 html 有效的 css 代码呢?
感谢您的建议。
【问题讨论】:
我强烈建议将其放在外部 CSS 文件中。如果仅用于单个页面的样式不太重,只需将其放在您的主 CSS 文件中即可。
请记住,另一个文件会向服务器发出另一个请求。
如果你仍然想用 Angular 添加另一个 CSS 文件,你应该用 $rootScope 来做:
$rootScope.$on('$routeChangeSuccess', function(ev,data) {
$rootScope.routeName = data.$$route.originalPath;
});
然后,在你的布局文件中:
<link ng-if="routeName === 'myPartial' " href="css/myPartial.css" rel="stylesheet" type="text/css" />
一些关于 AngularJS rootScope 的文档:https://docs.angularjs.org/api/ng/service/$rootScope
【讨论】:
作为最佳实践,CSS 文件必须始终放在专用的[fileName].css 中。
如果您想让某些 CSS 仅应用于代码的某些部分(因为它总是使用 CSS),您可以指定专用规则。
非常简单的示例(2 个部分,1 个样式表)
第一:
<div id="partial1">
<h1>I'm the first</h1>
</div>
秒:
<div id="partial2">
<h1>I'm the second</h1>
</div>
样式表:
// Common rule to both the <h1>
h1 {
font-size: 64px;
}
// only for partial1
#partial1 h1 {
color: #C0C0C0;
}
//only for partial2
#partial2 h1 {
color: #FF0000;
}
编辑:
您也可以使用 SASS 并为每个部分(例如 _partial1.scss 和 _partial2.scss)创建一个不同的文件,这些文件将包含在您的 main.scss 中,如下所示:
@import "partial1",
"partial2";
在此处查看有关 SASS 的更多信息:http://sass-lang.com/guide
【讨论】:
But what about css code that is only valid for a single angular partial html? ID 和 Classes 用于此目的,这就是 CSS 的使用方式。您也可以内联该部分的 CSS,但这很糟糕。