我的应用程序中有两个菜单。
他们都使用了primeng Panel Menu
我已经改变了他们的CSS。
现在问题是在我的应用中添加second-menu
后,left-menu
的风格发生了变化。
我尝试在他们两个上使用View encapsulation
,left-menu
样式仍未封装
这是第一个菜单标题
@Component({
selector: 'app-left-menu',
templateUrl: './left-menu.component.html',
styleUrls: ['./left-menu.component.css'],
encapsulation: ViewEncapsulation.Emulated
})
第二个菜单
@Component({
selector: 'app-second-menu',
templateUrl: './second-menu.component.html',
styleUrls: ['./second-menu.component.css'],
encapsulation: ViewEncapsulation.Emulated
})
在我的CSS中,我使用ng-deep
和:host
这是一个例子
:host ::ng-deep .ui-panelmenu-header.ui-state-default:hover {
background-color: #555555;
}
我不会添加所有CSS,因为它在两种风格上都相同
答案 0 :(得分:0)
仅使用::ng-deep
将影响项目中的所有类,即使不是声明css的组件的子项也是如此。 (here is a simple stackblitz reproduting this behavior)
如果您只想影响组件的子元素而不影响同一级别的元素,则应将:host
与::ng-deep
一起使用。