Angular 可以針對個別的 Component 自定義 css 屬性,一開始可以設定為不影響其他 Component,也可以設定為 component 會影響到其他的 component封裝方式.並且說明其使用技巧.先來介紹 Shadow DOM 和 View Encapsulation。
設置 encapsulation 是在 @Component裝飾器裡面
而 encapsulation 有 4 種不同設定方式
<head>
的<style>
裡面,宣告的 css 會影響到 其他的 Components<head>
的 <style>
裡面,但可以辨識要對應的 Component,預設也是這個,讓 component 自設的 css 不會影響到其他 component可以針對個別的 component 使用 css,只要在該 component 中的裝飾器中指定對應的css檔或是直接寫,就可以對該 component 設定 css ,而且預設是不會影響到其他的 component
app.component.css
.container {
margin-top: 30px;
}
p {
color: blue;
}
app.component.html
<div class="container">
<app-cockpit></app-cockpit>
<hr />
</div>
<p>I am p in app.component.html will effect by app.component.css</p>
app.component.ts
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
serverElements = [{ type: 'server', name: 'TestServer', content: 'Just a Test' }];
}
或是可以在 component 直接使用 css
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styles: ['.container {margin-top: 30px;}', 'p {color: blue;']
})
export class AppComponent {
serverElements = [{ type: 'server', name: 'TestServer', content: 'Just a Test' }];
}
如果使用 Emulated,其顯示css效果只有套用在該 component
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styles: ['.container {margin-top: 30px;}', 'p {color: blue;'],
// encapsulation: ViewEncapsulation.Native
// encapsulation: ViewEncapsulation.Emulated
// encapsulation: ViewEncapsulation.ShadowDom
})
export class AppComponent {
serverElements = [{ type: 'server', name: 'TestServer', content: 'Just a Test' }];
}