Я знаю, что хорошей практикой является хранение кода CSS во внешнем файле .css вместо добавления тегов в код HTML. Но как насчет кода CSS, который действителен только для одного углового частичного HTML?
Спасибо за совет.
Я знаю, что хорошей практикой является хранение кода CSS во внешнем файле .css вместо добавления тегов в код HTML. Но как насчет кода CSS, который действителен только для одного углового частичного HTML?
Спасибо за совет.
Рекомендуется всегда помещать файлы 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?
Для этого используются идентификаторы и классы, и именно так предполагается использовать CSS. Вы также можете встроить CSS для этого фрагмента, но это будет отстой.
- person domokun; 15.07.2014
Я настоятельно рекомендую поместить его во внешний файл CSS. Если стили, которые используются только для одной страницы, не слишком тяжелы, просто поместите их в свой основной файл CSS.
Помните, что другой файл сделает еще один запрос к серверу.
Если вы все еще хотите добавить еще один файл CSS с помощью Angular, вы должны сделать это с помощью $ 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