angular4系列之ViewEncapsulation

11 篇文章 0 订阅
6 篇文章 0 订阅

ViewEncapsulation

  • import { ViewEncapsulation } from ‘@angular/core’;
  • @Component({encapsulation:ViewEncapsulation.None})

是什么

  • 先了解 web Components

    • 它通过一种标准化的非侵入的方式封装一个组件,每个组件能组织好它自身的 HTML 结构、CSS 样式、JavaScript 代码,并且不会干扰页面上的其他元素。
    • web Components 由四种技术组成:

      • Custom Elements - 自定义元素

      • HTML Templates - HTML模板

      • Shadow DOM - 影子DOM

      • HTML Imports - HTML导入

  • 其中的 shadow Dom 和 ViewEncapsulation 相关
  • so ViewEncapsulation是一种【视图包装】

ViewEncapsulation简介

  • ViewEncapsulation 允许设置三个可选的值:

    • ViewEncapsulation.Emulated - 无 Shadow DOM,但是通过 Angular 提供的样式包装机制来封装组件,使得组件的样式不受外部影响。这是 Angular 的默认设置。

    • ViewEncapsulation.Native - 使用原生的 Shadow DOM 特性

    • ViewEncapsulation.None - 无 Shadow DOM,并且也无样式包装

ViewEncapsulation.None

  • ViewEncapsulation.None 设置的结果是没有 Shadow DOM,并且所有的样式都应用到整个 document,换句话说,组件的样式会受外界影响,可能被覆盖掉

ViewEncapsulation.Emulated

  • ViewEncapsulation.Emulated 设置的结果是没有 Shadow DOM,但是通过 Angular 提供的样式包装机制来封装组件,使得组件的样式不受外部影响。虽然样式仍然是应用到整个 document,但 Angular 为 .greet 类创建了一个 [_ngcontent-cmy-0] 选择器。可以看出,我们为组件定义的样式,被 Angular 修改了。其中的 _nghost-cmy- 和 _ngcontent-cmy- 用来实现局部的样式。

ViewEncapsulation.Native

  • ViewEncapsulation.Native 设置的结果是使用原生的 Shadow DOM 特性。Angular 会把组件按照浏览器支持的 Shadow DOM 形式渲染,渲染结果如上图所示。

参考博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值