问题描述:
在Angular 6/7中使用CSS媒体查询时,它在子孙级元素上不起作用。
解决方法:
:host选择器可以选择组件的宿主元素。通过在组件的CSS文件中使用:host选择器,可以将样式应用于组件的宿主元素。
示例代码:
:host {
display: block;
/* 在这里添加你的媒体查询样式 */
}
::ng-deep伪类选择器可以穿透组件的影子DOM,将样式应用于子孙级元素。
示例代码:
::ng-deep {
/* 在这里添加你的媒体查询样式 */
}
注意事项:
尽管::ng-deep可以解决这个问题,但在将来的Angular版本中可能会被废弃。因此,建议在可能的情况下使用:host选择器来避免潜在的问题。
另外,如果你的组件样式是通过CSS文件全局加载的,可以直接在全局的CSS文件中使用媒体查询,而不是在组件的样式文件中使用。这样可以避免子孙级元素无法应用样式的问题。