Reputation: 337
I'm still a beginner in programming and I'm doing a project to improve knowledge.
I need to insert a div with text on top of an image, I'm trying to recreate the example of the image below:
Half of the div is an image and the other half is text. Can you tell me how I can do that?
Here's my code I put into codesandbox
import React from "react";
import "./styles.css";
export default function App() {
return (
<div className="App">
<h1>Restaurant</h1>
<div
style={{
display: "flex",
flexDirection: "column",
justifyContent: "baseline",
alignItems: "baseline",
height: "200px",
width: "100%",
maxWidth: "300px"
}}
>
<div>
<img
style={{
width: "100%",
height: "100%"
}}
src="https://b.zmtcdn.com/data/collections/271e593eb19475efc39021c6e92603db_1454591396.jpg"
alt=""
className="img"
/>
</div>
<div className="divText">
<span
style={{
color: "#fff",
backgroundColor: "#000"
}}
>
Lorem Ipsum! Lorem Ipsum! Lorem Ipsum!
</span>
</div>
</div>
</div>
);
}
Thank you in advance.
Upvotes: 0
Views: 476
Reputation: 15223
And this solution from me:
style.css:
.divText {
position: absolute;
height: 50%;
background-color: white;
bottom: 0;
}
App.js:
import React from "react";
import "./styles.css";
export default function App() {
return (
<div className="App">
<h1>Restaurant</h1>
<div
style={{
display: "flex",
flexDirection: "column",
justifyContent: "baseline",
alignItems: "baseline",
height: "200px",
width: "100%",
maxWidth: "300px",
position: "relative"
}}
>
<div
style={{
height: "inherit"
}}>
<img
style={{
width: "100%",
height: "100%"
}}
src="https://b.zmtcdn.com/data/collections/271e593eb19475efc39021c6e92603db_1454591396.jpg"
alt=""
className="img"
/>
</div>
<div className="divText">
<span
style={{
color: "#fff",
backgroundColor: "#000"
}}
>
Lorem Ipsum! Lorem Ipsum! Lorem Ipsum!
</span>
</div>
</div>
</div>
);
}
Upvotes: 0
Reputation: 434
Maybe you could do something like this?
""
.wrapper {
width: 400px;
height: 200px;
position: relative;
}
picture {
position: absolute;
z-index: -1;
}
picture img {
object-fit: cover;
top: 0;
}
.text-overlay {
top: 50%;
height: 50%;
position: relative;
background-color: white;
display: flex;
z-index: 2;
padding: 10px;
opacity: 0.8;
font-family: sans-serif;
}
<div class="wrapper">
<picture>
<img src="https://images.unsplash.com/photo-1601758064224-c3c5ec910095?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2047&q=80"
width="400px"
height="200px"
style=" "/>
</picture>
<div class="text-overlay">
<p>Hello</p>
</div>
</div>
Upvotes: 2
Reputation: 3457
You have two solutions to set a background image :
use the background properties in CSS
.divText {
background-image:url("https://b.zmtcdn.com/data/collections/271e593eb19475efc39021c6e92603db_1454591396.jpg");
}
use positioning to make a custom layout
export default function App() {
return (
<div className="App">
<h1>Restaurant</h1>
<div
style={{
position: "relative",
height: "200px",
width: "300px"
}}
>
<img
style={{
width: "100%",
height: "100%"
}}
src="https://b.zmtcdn.com/data/collections/271e593eb19475efc39021c6e92603db_1454591396.jpg"
alt=""
className="img"
/>
<div className="divText"
style={{
position: "absolute",
bottom: 0,
height: "50%",
width: "100%",
color: "#fff",
backgroundColor: "#000",
opacity: 0.7
}}>
Lorem Ipsum! Lorem Ipsum! Lorem Ipsum!
</div>
</div>
</div>
);
}
Upvotes: 2