angular - create - Perforación de sombras dentro de scss
ng set defaults.styleext scss (3)
Estoy usando shadow piercing css para uno de mis estilos. Pero tengo códigos de color dentro de scss que quiero usar en el estilo. ¿Es posible tener la sombra perforando dentro de un archivo scss?
@Component({
selector: ''my-selector'',
styles: [
require(''./my.style.scss''),
'':host >>> .mystyle { background-color: green }''
],
templateUrl: ''./my.template.html''
})
AFAIK >>>
no es compatible con SASS porque este combinador no entró en el estándar CSS. Angular tiene su propia implementación para emular su soporte.
AFAIR solo usa un espacio en lugar de >>>
tiene el mismo efecto en Angular2 con ViewEncapsulation.Emulated
(predeterminado).
Usar un espacio no parece ser equivalente a >>>
y /deep/
más.
/deep/
es equivalente a >>>
en Angular, pero solo /deep/
funciona bien con SASS.
actualizar
SASS se depreció >>>
e introdujo ::ng-deep
para soporte angular especial (de ahí el ng-
en el nombre).
Las versiones recientes de Angular 4 ya son compatibles con ::ng-deep
y también se han depreciado >>>
.
En los documentos, se menciona que ::ng-deep
también está en desuso, pero esto se debe a un motivo diferente. Cuando todos los navegadores admiten el DOM sombreado con una temática adecuada, ViewEncapsulation.Emulated
(predeterminado) se descartará y Native
se convertirá en el predeterminado y ::ng-deep
se volverá obsoleto.
Aunque >>>
y /deep/
se supone que son equivalentes, descubrí que reemplazar el >>>
operador con /deep/
funciona cuando se usan archivos .scss
.
/deep/
fue compatible de forma nativa en los navegadores como un combinador de descendientes de piercing DOM de sombra, pero de hecho está en desuso (y eliminado en Chrome 63).
Pero, debido a que Angular ofrece (y por defecto) una implementación emulación shadow DOM (que no usa la implementación DOM nativa, su uso de /deep/
no está relacionado con el uso del navegador nativo - sobrecargado para su propia implementación y no generado en el final css. Por lo tanto, el uso de /deep/
in emulated shadow estilo DOM encapsulación ( encapsulation: ViewEncapsulation.Native
) todavía funciona en todos los navegadores.
Sin embargo, debido a que la idea es pasar a la encapsulación nativa (desde emulado), Angular obsoleto /deep/
en su propia implementación emulada (aunque todavía funciona, y técnicamente siempre podría).