代码之家  ›  专栏  ›  技术社区  ›  EDJ

具有彩色叠加语法的动态背景图像-角度

  •  3
  • EDJ  · 技术社区  · 7 年前

    我使用离子(基于角度),我想设置一个图像作为一个组件的背景,上面有一个彩色叠加。当代码写入.css文件时是正确的,但是当它是动态的(我用变量替换值)时,我的语法似乎不正确。

    这根本不影响组件的背景:

    [ngStyle] = "{'background': 'linear-gradient('+colors[test.number]+','+colors[0]+'),url(../assets/img/test-'+test.number+'.jpg)'}"
    

    但是,此操作有效,但不将图像作为背景,仅将颜色:

    [ngStyle] = "{'background': 'linear-gradient('+colors[test.number]+','+colors[0]+')'}"
    

    所以我的问题是我如何纠正 第一代码 为了有个形象?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Reactgular    7 年前

    我认为该值被指定为一个样式,但是浏览器在 无效 .

    举个例子:

    <div [ngStyle]="{'background': 'fooBar'}"></div>
    

    当我以角度运行上面的例子时。我在浏览器中看到这个。

    <div _ngcontent-c18="" ng-reflect-ng-style="[object Object]"></div>
    

    元素缺少 background 当我使用Chrome的Inspector时。

    这告诉我Angular指定了无效的CSS样式,但是浏览器忽略了它。

    这就提出了一个问题,如果你的一个变量是 undefined . 它可能是 colors , colors[test.number] , colors[0] test.number .

    尝试在组件上使用函数来生成样式对象,并将此值记录到控制台以确保其正确无误。

    public getBackground(start, end, num) {
        const style = {'background': `linear-gradient(${start},${end}),url(../assets/img/test-${num}.jpg)`};
        console.log(style);
        return style;
    }
    

    然后在模板中

    <div [ngStyle]="getBackground(colors[test.number],colors[0],test.number)"></div>