使用React内联样式设置backgroundImage

Kri*_*ris 227 javascript reactjs

我正在尝试访问静态图像以backgroundImage在React中的内联属性中使用.不幸的是,我对如何做到这一点感到很沮丧.

一般来说,我认为你刚刚做了如下:

import Background from '../images/background_image.png';

var sectionStyle = {
  width: "100%",
  height: "400px",
  backgroundImage: "url(" + { Background } + ")"
};

class Section extends Component {
  render() {
    return (
      <section style={ sectionStyle }>
      </section>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这适用于<img>标签.有人可以解释两者之间的区别吗?

例:

<img src={ Background } /> 工作得很好.

谢谢!

rgo*_*ezz 390

backgroundImage属性中的花括号是错误的.

可能你正在使用webpack和图像文件加载器,所以后台应该已经是一个字符串: backgroundImage: "url(" + Background + ")"

您还可以使用如下的ES6字符串模板来实现相同的效果:

backgroundImage: `url(${Background})`
Run Code Online (Sandbox Code Playgroud)

  • 完整语法应如下所示:`style = {{backgroundImage:"url("+ Background +")"}}` (30认同)
  • 只是为了扩展@mike的注释,您需要双花括号,因为一个用于让React进入的是JS模式,另一个用于表示新对象。 (2认同)

小智 27

如果您使用的是ES5 -

backgroundImage: "url(" + Background + ")"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是ES6 -

backgroundImage: `url(${Background})`
Run Code Online (Sandbox Code Playgroud)

基本上删除不必要的花括号,同时为backgroundImage属性添加值工作将起作用.

  • 对我来说,在ES6中,它是`backgroundImage:\`url(“ $ {Background}”)\``,因为您的ES6示例对我不起作用。 (2认同)
  • @S..谢谢,这对我有帮助。我卡住了。 (2认同)

Hit*_*ahu 23

用于设置任何全屏图像的内联样式:

style={{  
  backgroundImage: "url(" + "https://images.pexels.com/photos/34153/pexels-photo.jpg?auto=compress&cs=tinysrgb&h=350" + ")",
  backgroundPosition: 'center',
  backgroundSize: 'cover',
  backgroundRepeat: 'no-repeat'
}}
Run Code Online (Sandbox Code Playgroud)


cat*_*tos 15

您可以使用模板文字(用反引号括起来:`...`)。对于backgroundImage这样的财产:

backgroundImage: `url(${Background})`
Run Code Online (Sandbox Code Playgroud)


Tri*_*cky 12

您还可以使用该require()功能将图像带入组件.

<div style={{ backgroundImage: `url(require("images/img.svg"))` }}>

**注意两组花括号.

  • 好的,我理解,使用基于网络的URL.我应该写一下`url(https://images.com/myimage.png)` (2认同)

小智 12

对我来说,工作是这样的

style={{ backgroundImage: `url(${require("./resources/img/banners/3.jpg")})` }}
Run Code Online (Sandbox Code Playgroud)


Det*_*ner 11

这个对我有用:

  import Background from '../images/background_image.png';
    
  <div className=...
       style={{
              background: `url(${Background})`,
            }}
    >...</div>
Run Code Online (Sandbox Code Playgroud)


cha*_*ner 6

对于localReactJS的文件。尝试

import Image from "../../assets/image.jpg";

<div
style={{ backgroundImage: 'url(' + Image + ')', backgroundSize: 'auto' }}
>Hello
</div>
Run Code Online (Sandbox Code Playgroud)

这是ReactJS内联样式的情况,其中Image是您必须使用路径导入的本地文件。


tao*_*tao 6

将代码的第 6 行更改为

  backgroundImage: "url(" + { Background} + ")"
Run Code Online (Sandbox Code Playgroud)

  backgroundImage: "url(" + { Background.src } + ")"
Run Code Online (Sandbox Code Playgroud)

它会起作用的。