【问题标题】:Prevent Child component from taking style from Parent防止子组件从父组件中获取样式
【发布时间】:2018-04-29 00:16:49
【问题描述】:

我在另一个内部有一个组件,我想完全独立于父组件来设置它的样式。当前示例是文本对齐;我在父母中设置了text-align:center,但我不希望它渗透到孩子身上。我尝试了三种不同类型的 ViewEncapsulation(Native、None 和 Emulated),但在所有情况下,样式都被馈送到子级并且文本居中对齐。任何想法如何处理这个?

父组件:

<div class="Home__Banner">
  <div class="container">
    <div class="mt-5 mb-5">
    <app-mh-search-form></app-mh-search-form>
  </div>
</div>

父样式:

.Home {
  &__Banner {
     background: url('/assets/images/homepage/mainImg.jpg') no-repeat center 
         center fixed;
     background-size: cover;
     text-align: center;
  }
}

子组件:

<div class="MhSearchForm">
  <div class="container">
    <div class="row">
      <div class="MhSearchForm__Nav">
        <div class="MhSearchForm__NavLink" (click)="setActiveState('buy')">
          BUY
        </div>
        <div class="MhSearchForm__NavLink" (click)="setActiveState('rent')">
          RENT
        </div>
      </div>
    </div>
  </div>
</div>

“购买”和“租赁”文本居中对齐,尽管它位于单独的组件中

【问题讨论】:

  • 能贴出相关代码吗?看起来 Native 是您希望将子组件包装在其自己的 shadow dom 中的选项,但如果无法查看发生了什么,则很难进行故障排除。

标签: angular


【解决方案1】:

那是因为您的“购买”和“出租”文本在带有 .Home__Banner 类的 div 内,即使该类是 CSS 中的父类,您也告诉 Home_Banner 类中包含的所有内容都应使其文本对齐。为避免这种情况,您必须为“MhSearchForm__NavLink”设置样式以将文本设置为左对齐。

【讨论】:

  • 我想我在那种情况下误解了 View Encapsulation 的观点。我认为子组件不会从父组件继承任何样式,但似乎恰恰相反。子选择器不能影响 ViewEncapsulation 设置为 Native 或 Emulated 的父选择器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2019-05-05
相关资源
最近更新 更多