【问题标题】:apply background to element:after dynamically with ngStyle将背景应用于元素:使用 ngStyle 动态后
【发布时间】:2018-03-02 12:04:33
【问题描述】:

我正在为 div 应用背景,如下所示:

<div class="bgimg">test</div>

.bgimg {
  padding-top: 10px;
  &::after {
    background: url('/assets/img/test.png') no-repeat center center;
  }
}

图片的路径是动态的,存储在组件中:

export class MyComponent {

  myImage: string = "/assets/img/test.png";

所以我想对我的 div 元素应用 ngStyle 但我不知道如何指定 :after

<div
  [ngStyle]="background: url('{myImage}') no-repeat center center;">
  test
</div>

【问题讨论】:

  • 不记得确切的方法。试试&lt;div #el&gt; 之类的东西。在组件中:el:ElementRefchange(){el.style = ????}
  • @QuentinLaillé 这个问题是针对 AngularJS 而这个问题是针对 Angular2+
  • 您是否有理由不使用额外的 HTML 元素(divimg)而不是 ::after 子句?
  • @JánHalaša 是的,这是绝对定位图像。它溢出了父级,我无法隐藏它。

标签: css angular typescript sass interpolation


【解决方案1】:

通过使用::after 伪类,您不会将背景应用于父div 或任何其他元素。不清楚为什么要使用::after 来显示背景。

  1. 您需要包含ng-style,例如:&lt;div ng-style="bgimg"&gt;test&lt;/div&gt;,以便 Angular 可以引用该元素。
  2. 完成后,您可以调用bgimg={'background-image':'url(myImage)'},它会将背景应用到引用的元素。

有关更多信息,请查看此Angular documentation 和此example code 您可以玩。我希望这会有所帮助,但这是我在 StackOverflow 上的第一个答案,请耐心等待!

【讨论】:

  • 唯一的解决方案是将背景移动到 div,因为没有解决方案来动态设置 :after 样式。无论如何我都会接受你的回答。
猜你喜欢
  • 2016-08-29
  • 2019-07-31
  • 2018-08-21
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多