在使用Angular構建前端應用程序時,設置HTML的樣式變得至關重要。如果您的應用程序使用Bootstrap或其他樣式框架,那么這些樣式表將越來越多,很容易出現問題。
解決這個問題的最好方法是使用Angular的優先級系統管理樣式。
.hello { color: blue !important; }
在實現這個想法之前,需要了解Angular的樣式優先主題,也就是指令以及元素的優先級。
Angular組件使用ViewEncapsulation模式。每個組件都有一個單獨的封裝視圖,不同于其他組件的視圖。
@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], encapsulation: ViewEncapsulation.None })
封裝視圖包括三個設置:None, ShadowDom和Emulated(默認)。
優先級是對ViewEncapsulation和CSS規則進行處理的結果。
當使用None時,樣式表將在全局范圍內應用。使用ShadowDom,每個組件將具有一個獨立的DOM,當使用Emulated時,它將使用隨機生成的屬性添加樣式類,以確保僅應用發出的樣式,防止樣式泄漏。
.my-class { color: red; }
如果樣式被串聯,則按順序應用。
在下面的示例中,my-class將優先級更高:
<div class="my-class hello">Hello World!</div>
無論如何,Angular在選擇單個樣式表,元素和指令的樣式時具有更高的優先級,因此優先級設置是不可避免的。
為了避免沖突,請始終始終使用具體CSS規則,并限制它們的作用范圍,使用BEM或其他限制范圍的方法。
eyJpZCI6MTIzLCJvcmciOiJqaWFuZGVhZyJ9