我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何实现vue、angular深度作用选择器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何实现vue、angular深度作用选择器

小编给大家分享一下如何实现vue、angular深度作用选择器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Vue适用的深度选择器

在 Vue 的开发中,我们经常会用到外部组件库,例如 element,当使用 element 组件库中的某一个组件的时,我们可能会希望有一些定制的地方,通常的做法是 用CSS覆盖;有时层级不够就要另辟他径。

less使用/deep/
css使用>>>

Angular适用深度选择器

使用组件样式

对你编写的每个 Angular 组件来说,除了定义 HTML 模板之外,还要定义用于模板的 CSS 样式、 指定任意的选择器、规则和媒体查询。

实现方式之一,是在组件的元数据中设置 styles 属性。 styles 属性可以接受一个包含 CSS 代码的字符串数组。 通常你只给它一个字符串就行了,如同下例:

<!--class="lazy" data-src/app/hero-app.component.ts-->@Component({
 selector: 'app-root',
 template: ` <h2>Tour of Heroes</h2>
 <app-hero-main [hero]="hero"></app-hero-main>
 `,
 styles: ['h2 { font-weight: normal; }']
})
export class HeroAppComponent {

}

范围化的样式

在@Component的元数据中指定的样式只会对该组件的模板生效

它们既不会被模板中嵌入的组件继承,也不会被通过内容投影(如 ng-content)嵌进来的组件继承。

在这个例子中,h2 的样式只对 HeroAppComponent 生效,既不会作用于内嵌的 HeroMainComponent ,也不会作用于应用中其它任何地方的 h2 标签。

这种范围限制就是所谓的样式模块化特性

  1. 可以使用对每个组件最有意义的 CSS 类名和选择器。

  2. 类名和选择器是局限于该组件的,它不会和应用中其它地方的类名和选择器冲突。

  3. 组件的样式不会因为别的地方修改了样式而被意外改变。

  4. 你可以让每个组件的 CSS 代码和它的 TypeScript、HTML 代码放在一起,这将促成清爽整洁的项目结构。

  5. 将来你可以修改或移除组件的 CSS 代码,而不用遍历整个应用来看它有没有在别处用到。

特殊的选择器

组件样式中有一些从影子(Shadow) DOM 样式范围领域(记录在W3C的CSS Scoping Module Level 1中) 引入的特殊选择器:

:host

使用 :host 伪类选择器,用来选择组件宿主元素中的元素(相对于组件模板内部的元素)。

<!--class="lazy" data-src/app/hero-details.component.css-->:host {
 display: block;
 border: 1px solid black;
}

:host 选择是是把宿主元素作为目标的唯一方式。除此之外,你将没办法指定它, 因为宿主不是组件自身模板的一部分,而是父组件模板的一部分。

要把宿主样式作为条件,就要像函数一样把其它选择器放在 :host 后面的括号中。

下一个例子再次把宿主元素作为目标,但是只有当它同时带有 active CSS 类的时候才会生效。

<!--class="lazy" data-src/app/hero-details.component.css-->content_copy
:host(.active) {
 border-width: 3px;
}

:host-context

有时候,基于某些来自组件视图外部的条件应用样式是很有用的。 例如,在文档的 元素上可能有一个用于表示样式主题 (theme) 的 CSS 类,你应当基于它来决定组件的样式。

这时可以使用 :host-context() 伪类选择器。它也以类似 :host() 形式使用。它在当前组件宿主元素的祖先节点中查找 CSS 类, 直到文档的根节点为止。在与其它选择器组合使用时,它非常有用。

在下面的例子中,只有当某个祖先元素有 CSS 类 theme-light 时,才会把 background-color 样式应用到组件内部的所有 h3 元素中。

<!--class="lazy" data-src/app/hero-details.component.css-->content_copy
:host-context(.theme-light) h3 {
 background-color: #eef;

已废弃 /deep/、>>> 和 ::ng-deep

组件样式通常只会作用于组件自身的 HTML 上。

把伪类 ::ng-deep 应用到如何一条 CSS 规则上就会完全禁止对那条规则的视图包装。任何带有 ::ng-deep 的样式都会变成全局样式。为了把指定的样式限定在当前组件及其下级组件中,请确保在 ::ng-deep 之前带上 :host 选择器。如果 ::ng-deep 组合器在 :host 伪类之外使用,该样式就会污染其它组件。

这个例子以所有的 h4 元素为目标,从宿主元素到当前元素再到 DOM 中的所有子元素:

<!--class="lazy" data-src/app/hero-details.component.css-->content_copy
:host /deep/ h4 {
 font-style: italic;
}

/deep/ 组合器还有两个别名:>>> 和 ::ng-deep。

/deep/ 和 >>> 选择器只能被用在仿真 (emulated) 模式下。 这种方式是默认值,也是用得最多的方式。 更多信息,见控制视图封装模式一节。

CSS 标准中用于 "刺穿 Shadow DOM" 的组合器已经被废弃,并将这个特性从主流浏览器和工具中移除。 因此,我们也将在 Angular 中移除对它们的支持(包括 /deep/、>>> 和 ::ng-deep)。 目前,建议先统一使用 ::ng-deep,以便兼容将来的工具。

以上是“如何实现vue、angular深度作用选择器”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何实现vue、angular深度作用选择器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

深入了解Vue选择器: 学习使用常见的各种选择器操作

Vue选择器大揭秘:学习使用各种常用选择器引言:Vue作为一种流行的JavaScript框架,广泛应用于前端开发。在开发过程中,Vue选择器是一个重要的概念,它允许我们选择DOM元素并对其进行操作。本文将深入讨论Vue选择器,介绍常用的
深入了解Vue选择器: 学习使用常见的各种选择器操作
2024-01-15

vue如何用element实现区间选择组件

这篇文章主要介绍“vue如何用element实现区间选择组件”,在日常操作中,相信很多人在vue如何用element实现区间选择组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何用element实现
2023-07-04

在Vue中使用deep深度选择器修改elementUI组件的样式

这篇文章主要介绍了在Vue中使用deep深度选择器修改elementUI组件的样式,本文分为两种方法给大家介绍,在这小编比较推荐使用第二种使用deep深度选择器,感兴趣的朋友跟随小编一起看看吧
2022-12-08

CSS选择器如何实现字段

这篇文章主要介绍CSS选择器如何实现字段,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!根据上面所学的CSS基础语法知识,现在来实现字段的解析。首先还是解析标题。打开网页开发者工具,找到标题所对应的源代码。发现是在di
2023-06-08

使用vue深度选择器修改ElementUI组件内样式的示例代码

在带有scoped属性的style中书写样式时,无法作用影响到子组件中的样式,此时我们会使用到deep深度选择器,来解决此问题,我们在使用less预处理器,能正常使用,但是在scss预处理器中会报错,下面通过本文介绍vue深度选择器修改ElementUI组件内样式,需要的朋友可以参考下
2022-12-08

JS如何实现时间选择器

今天小编给大家分享一下JS如何实现时间选择器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。dateTime.jsfuncti
2023-07-02

深圳服务器租用如何选择服务商

要选择深圳服务器租用服务商,可以考虑以下几个方面来选择合适的服务商:可靠性和稳定性:选择具有良好口碑和信誉的服务商,确保服务器稳定运行,避免频繁的故障和宕机。服务质量:服务商提供的技术支持、售后服务、数据备份等服务是否完善,是否能及时响应和
深圳服务器租用如何选择服务商
2024-04-16

Vue如何实现省市区级联下拉选择框

这篇文章将为大家详细讲解有关Vue如何实现省市区级联下拉选择框,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下以(Vue下拉选择框Select组件二)为基础实现省市区级联下拉选择框组件(业务需要
2023-06-29

VUE-ElementUI时间区间选择器如何使用

这篇文章主要介绍“VUE-ElementUI时间区间选择器如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“VUE-ElementUI时间区间选择器如何使用”文章能帮助大家解决问题。VUE-El
2023-06-30

编程热搜

目录