Angular4 开发实战:(3) 使用CSS美化组件
- 使用样式模板
- 使用样式字符串
// card.component.ts
styleUrls: ['./card.component.scss']
// card.component.scss
.card {
padding: 10px;
box-shadow: 0 0 3px rgba(0,0,0,.2);
margin: 10px 0;
}
(2) 使用样式字符串
styles: ['h5 { font-weight: normal; }']
还有一种最简单粗暴的:
<app-card>
<h5 style="font-weight: normal">卡头</h5>
</app-card>
注:虽然可以,但不推荐。app-card
,这就是宿主元素。app-card {
display: block;
margin: 10px 0;
background: #eee;
}
你会很郁闷的发现无效,咋办呢?Angular还是很友好的,我们可以这样:
:host {
display: block;
margin: 10px 0;
background: #eee;
}
这样你会发现app-card
有背景色啦。display
属性是空字符串的,也就是不占据空间。:host(.active) {
background: red;
}
:host-context(.theme-blue) {
color: blue;
}
注:它会在当前组件宿主元素的祖先节点中查找 CSS 类, 直到文档的根节点为止。
强制给子组件加样式
默认情况下,组件样式只会作用于组件自身的HTML上。
我们先再创建一个组件,名为card-header
:
// card-header.component.html
<div class="card-header">
卡头
</div>
然后在app.component.ts
中添加:
<app-card>
<app-card-header></app-card-header>
</app-card>
app/components/card/card.component.scss
中添加:
.card-header {
font-size: 25px;
}
上面的代码对子组件card-header
里的内容是不起作用的,只有这样:
/deep/ .card-header {
font-size: 25px;
}
/deep/
就是用来强制一个样式对各级子组件的视图及其内容都生效。<style>
div {color: #333;}
</style>
(2) link标签
<link rel="stylesheet" href="app.css">
(3) import
@import 'app.css';
更多建议: