pembaruan 2 ::slotted
::slotted
sekarang didukung oleh semua browser baru dan dapat digunakan dengan ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
perbarui 1 :: ng-sedalam
/deep/
sudah usang dan diganti dengan ::ng-deep
.
::ng-deep
juga sudah ditandai usang, tetapi belum ada pengganti yang tersedia.
Ketika ViewEncapsulation.Native
didukung dengan baik oleh semua browser dan mendukung penataan batas bayangan DOM, ::ng-deep
mungkin akan dihentikan.
asli
Angular menambahkan semua jenis kelas CSS ke HTML yang ditambahkannya ke DOM untuk meniru bayangan DOM CSS enkapsulasi untuk mencegah gaya pendarahan masuk dan keluar dari komponen. Angular juga menulis ulang CSS yang Anda tambahkan agar sesuai dengan kelas yang ditambahkan ini. Untuk HTML ditambahkan menggunakan [innerHTML]
kelas-kelas ini tidak ditambahkan dan CSS yang ditulis ulang tidak cocok.
Sebagai solusinya coba
- untuk CSS ditambahkan ke komponen
/* :host /deep/ mySelector { */
:host ::ng-deep mySelector {
background-color: blue;
}
- untuk CSS ditambahkan ke
index.html
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
background-color: green;
}
>>>
(dan yang setara /deep/
tetapi /deep/
bekerja lebih baik dengan SASS) dan ::shadow
ditambahkan dalam 2.0.0-beta.10. Mereka mirip dengan penggabung bayangan DOM CSS (yang sudah usang) dan hanya berfungsi dengan encapsulation: ViewEncapsulation.Emulated
yang merupakan default di Angular2. Mereka mungkin juga bekerja samaViewEncapsulation.None
tetapi kemudian hanya diabaikan karena mereka tidak perlu. Combinator ini hanya solusi perantara sampai fitur yang lebih canggih untuk penataan komponen silang didukung.
Pendekatan lain adalah menggunakan
@Component({
...
encapsulation: ViewEncapsulation.None,
})
untuk semua komponen yang memblokir CSS Anda (tergantung pada tempat Anda menambahkan CSS dan di mana HTML ingin Anda gaya - mungkin semua komponen dalam aplikasi Anda)
Memperbarui
Contoh Plunker
index.html
?