无法在 Angular 9 中设置背景图像(带渐变)
Can't set a background image (with gradient) in Angular 9
如标题所述,我似乎无法设置此背景图片。
我尝试了多种方法。目前我的代码中有这个:
export class HeroComponent implements OnInit {
@Input() content: PageContent[];
public backgroundImage: string;
constructor() { }
ngOnInit(): void {
this.getComponent()
}
private getComponent(): void {
this.content.forEach((component: PageContent) => {
if (component.type !== 'hero') return;
let url = component.fields.backgroundImage.fields.file.url;
this.backgroundImage = `linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('${url}');`;
console.log(component.fields.backgroundImage.fields)
console.log(this.backgroundImage);
})
}
}
console.logreturns这个:
linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg');
这是对的。
我的 html 正在尝试这样做:
<div class="jumbotron" [ngStyle]="{ 'background-image': backgroundImage }" *ngIf="backgroundImage">
元素已渲染,因此有背景图片,但无法正常工作。
另外,我试过:
<div class="jumbotron" [style.background]="backgroundImage" *ngIf="backgroundImage">
问题是,如果我复制字符串并将其放入我的 css 中,如下所示:
.jumbotron {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg');
}
没有任何问题。
有谁知道我做错了什么?
我认为问题是;在字符串的末尾。
Demo
这给出了结果
backgroundImage="linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg')"
但这不是
backgroundImage="linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg');"
如标题所述,我似乎无法设置此背景图片。 我尝试了多种方法。目前我的代码中有这个:
export class HeroComponent implements OnInit {
@Input() content: PageContent[];
public backgroundImage: string;
constructor() { }
ngOnInit(): void {
this.getComponent()
}
private getComponent(): void {
this.content.forEach((component: PageContent) => {
if (component.type !== 'hero') return;
let url = component.fields.backgroundImage.fields.file.url;
this.backgroundImage = `linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('${url}');`;
console.log(component.fields.backgroundImage.fields)
console.log(this.backgroundImage);
})
}
}
console.logreturns这个:
linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg');
这是对的。 我的 html 正在尝试这样做:
<div class="jumbotron" [ngStyle]="{ 'background-image': backgroundImage }" *ngIf="backgroundImage">
元素已渲染,因此有背景图片,但无法正常工作。 另外,我试过:
<div class="jumbotron" [style.background]="backgroundImage" *ngIf="backgroundImage">
问题是,如果我复制字符串并将其放入我的 css 中,如下所示:
.jumbotron {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg');
}
没有任何问题。 有谁知道我做错了什么?
我认为问题是;在字符串的末尾。 Demo
这给出了结果
backgroundImage="linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg')"
但这不是
backgroundImage="linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('//images.ctfassets.net/90y01jqko4hp/15dPFmnMsX64iOL15WJIVR/457c906c79652365ff749ea2d5d11856/default-bg.jpg');"