我有一个有角度的项目,并创建了一个具有scss设置的组件,当我将选择器嵌套在ng-bootstrap选项卡类名称下时,似乎没有选择它。为什么.nav-link .badge我的scss中不能使用这样的选择器?但是,.card-body .badge确实会选择类似元素。
模板文件摘录
<ngb-tab id="projectInfoTab">
<ng-template ngbTabTitle>
Project info<span class="badge badge-pill badge-danger">4</span>
</ng-template>
<ng-template ngbTabContent>
...
Run Code Online (Sandbox Code Playgroud)
脚本
.nav-link .badge {
margin-left: .5em;
}
Run Code Online (Sandbox Code Playgroud)
这是渲染的HTML
<div _ngcontent-c3 class="card-body">
<a class="nav-link active" href="" role="tab" id="projectInfoTab" aria-controls="projectInfoTab-panel" aria-expanded="true" aria-disabled="false">
Project info<span _ngcontent-c3="" class="error-badge badge badge-pill badge-danger">4</span>
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
这是由于Angular封装机制。创建组件时,Emulated默认情况下是封装。
检查此链接:通过Angular检查生成的CSS
当您将样式放入组件样式文件中时,angular将生成您的样式并添加一些属性,因此您的自定义样式
.nav-link .badge {
margin-left: .5em;
}
Run Code Online (Sandbox Code Playgroud)
编译后将变成类似以下内容
.nav-link[_ngcontent-c3] .badge {
margin-left: .5em;
}
Run Code Online (Sandbox Code Playgroud)
并且由于您的ngb-tab组件可能没有具有该属性的任何元素,因此它不适用于该元素。您可以通过在@Component装饰中添加以下代码来更改组件封装。
@Component({
selector: 'your-comp',
....
encapsulation: ViewEncapsulation.None
})
Run Code Online (Sandbox Code Playgroud)
您可以做的另一件事是将此CSS移至ngb-tab组件样式文件。
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |