本篇文章带大家深入了解一下angular中的几个特殊选择器:host、:host-context、::ng-deep,希望对大家有所帮助!
一、:host
:host 表示选择当前的组件。
1.1 选择宿主元素
使用:host伪类选择器,用来选择组件宿主元素中的元素(相对于组件模板内部的元素),没有子元素就相当于选择整个宿主元素。
如有下面html:
<app-detail></app-detail>
组件app-detail的样式(整个app-detail的样式)如下 :
:host{display:inline-block;background:red;}
浏览器Elements选择app-detail元素, Style 如下:
[_nghost-wtd-c445]{display:inline-block;background-color:red;}
可以看得出来,:host直接作用于宿主元素本身
1.2 选择宿主元素的子元素
可以在:host后面添加选择器以选择子元素。例如::host h1定位组件视图内的h1标签
:hosth1{color:red;}
1.3 有条件的选择宿主元素
把宿主作为目标,同时带有 active 的 class 类的时候才会生效
:host(.active){border-width:3px;}
像这样:
<app-detailclass="active"></app-detail>
二、::ng-deep
::ng-deep 可以忽略中间 className 的嵌套层级关系。直接找到你要修改的 className。
在使用一些第三方的组件的时候,要修改组件的样式,这种情况下使用.
2.1 从宿主元素到当前元素再到 DOM 中的所有子 h3 元素,包括当前组件中使用第三方组件的 h3 元素
:host::ng-deeph3{font-style:italic;}
2.2 搜索某类型下面的特定类型
.card-container::ng-deep.ant-tabs-card.ant-tabs-content{height:120px;margin-top:-16px;}
三、:host-context
如果需要满足某条件才能应用样式。它在当前组件宿主元素的祖先节点中查找 CSS 类,直到文档的根节点为止。如果找到,才会应用后面的样式到本组件内部元素。
3.1 选择组件宿主元素中的元素
:host-context{color:red;}
3.2 把宿主作为目标,同时带有active的class类的时候才会生效
在下面的例子中,只有当某个祖先元素(宿主元素也可以)有 CSS 类theme-light时,才会把background-color样式应用到本组件内部的所有<h2>元素中。
:host-context(.theme-light)h2{background-color:#eef;}
3.3 可以在:host-context后面添加选择器以选择子元素
例如::host-context h1定位组件视图内的h1标签
:host-contexth1{color:hotpink;}
3.4 可用于某个样式内部条件判断
h1{color:hotpink;:host-context(.active)&{color:yellow;}}
产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;
日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉;
本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;
部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入;
如若转载,请注明出处:https://www.chanpinyuan.cn/27561.html;