I'm trying to access a static image to use within an inline backgroundImage
property within React. Unfortunately, I've run up dry on how to do this.
Generally, I thought you just did as follows:
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>
);
}
}
This works for <img>
tags. Can someone explain the difference between the two?
Example:
<img src={ Background } />
works just fine.
Thank you!
This question is related to
javascript
reactjs
If you are using ES5 -
backgroundImage: "url(" + Background + ")"
If you are using ES6 -
backgroundImage: `url(${Background})`
Basically removing unnecessary curly braces while adding value to backgroundImage property works will work.
You can use Template Literals (enclosed with back-tick: `...`) instead for backgroundImage
property like this:
backgroundImage: `url(${Background})`
<div className="welcomer" style={{ backgroundImage: url(${myImage}) }}></div>
.welcomer
using CSS so that you can see your image in the desired size.try this:
style={{ backgroundImage: `url(require("path/image.ext"))` }}
You Can try usimg
backgroundImage: url(process.env.PUBLIC_URL + "/ assets/image_location")
Inline style to set any image full screen:
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'
}}
For me what worked is having it like this
style={{ backgroundImage: `url(${require("./resources/img/banners/3.jpg")})` }}
You can also bring the image into the component by using the require()
function.
<div style={{ backgroundImage: `url(require("images/img.svg"))` }}>
Note the two sets of curly brackets. The first set is for entering react mode and the second is for denoting object
You can try this with by adding backticks on whole url
style={{backgroundImage:url(${val.image || 'http://max-themes.net/demos/grandtour/upload/Tokyo_Dollarphotoclub_72848283-copy-700x466.jpg'} ) }}
Just add required to file or url
<div style={
{
backgroundImage: `url(${require("./path_local")})`,
}
}
>
Or set in css base64 image like
div {
background:
url('data:image/gif;base64,R0lGODlhZQBhAPcAACQgDxMFABsHABYJABsLA')
no-repeat
left center;
}
You can use https://www.base64-image.de/ for convert
Sometimes your SVG will be inlined by React so you need quotes around it:
backgroundImage: `url("${Background}")`
otherwise it's invalid CSS and the browser dev tools will not show that you've set background-image at all.
try this it worked in my case
backgroundImage: `url("${Background}")`
It works for me:
import Background from '../images/background_image.png';
<div className=...
style={{
background: `url(${Background})`,
}}
>...</div>
For a local
File in case of ReactJS.
Try
import Image from "../../assets/image.jpg";
<div
style={{ background-image: 'url(' + Image + ')', background-size: 'auto' }}
>Hello
</div>
This is the case of ReactJS
with inline styling where Image
is a local file that you must have imported with a path.
Source: Stackoverflow.com