Reputation: 111
I have tired a few of the different solutions on here but I can't get anything to work. So I was wondering if anyone had any other ideas.
I have created a the makings of a webpage using flexbox to lay everything out so it is nice and responsive.
However I am stuck, in one of my flexbox containers I would like to have a image centred with text centred over the top of that.
This container is the "container-stack pink" container with the "bulb" img and text
Here is a link to a codepen of my webpage. I have added placeholder images and havent copied any of the Javascript in as it isnt really import for the layout
Thanks for any help/suggestions in advance...
<html>
<head>
<link rel="stylesheet" href="https://use.typekit.net/nqr5bmw.css">
</head>
<body>
<div class="container green">
<div class="right-side">
<img id="raw-logo" src="http://via.placeholder.com/300x100" alt="raw-logo">
</div>
<div class="centered mash">
<img id="mash-logo" src="http://via.placeholder.com/700x500" alt="mash-up-img">
</div>
</div>
<div class="container pink">
<div class="centered fancy-header">
<p id="fancy-text1">Bacon ipsum<br>dolor amet</p>
</div>
<div class="centered fancy-body">
<p id="fancy-text2">Bacon ipsum dolor amet tail pancetta ribeye<br>beef turkey ball tip.</p>
</div>
<div class="centered scroll">
<p id="fancy-text3">keep scrolling</p>
button here
</div>
</div>
<div class="container-row blue">
<img id="masher" src="http://via.placeholder.com/700x500" alt="masher-img">
<div id="brief-text">
<p><span id="header">bacon</span><br><span id="subheader">in short...</span></p>
<p class="body">tasty</p>
<p class="body">Bacon ipsum Bacon ipsum Bacon ipsum<br>Bacon ipsum Bacon ipsum Bacon ipsum Bacon ipsum<br>amet tail pancetta ribeye</p>
</div>
</div>
<div class="container-stack pink">
<div id="wrapper">
<img id="bulb" src="http://via.placeholder.com/500x300" alt="bulb-img">
<div id="bulb-text">
<p>Bacon ipsum dolor amet<br>tail pancetta ribeye beef<br>turkey ball tip.</p>
<p>Andouille prosciutto<br>ground round jowl jerky.</p>
</div>
</div>
</div>
<div class="container generator">
<div class="centered text">
<div class="word-1">Peanut Butter</div>
<div class="word-2">Water Lily Seeds</div>
</div>
<div class="centered">
<button class="button">Mash!</button>
</div>
</div>
</body>
</html>
CSS:
body {
font-family: bebas-neue-by-fontfabric;
font-weight: 700;
text-align: center;
text-transform: uppercase;
background-color: black;
width: 100%;
height: 100%;
margin: 0;
}
.blue {
background-color: skyblue;
}
.pink {
background-color: pink;
}
.green {
background-color: chartreuse;
}
.container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: flex-start;
width: 100%;
margin: 0;
padding: 0;
}
.container-row {
display: flex;
flex-direction: row;
justify-content: center;
width: 100%;
margin: 0;
padding: 0;
}
.container-stack {
display: flex;
justify-content: center;
width: 100%;
margin: 0;
padding: 0;
}
.centered {
flex: 0 0 100%;
align-self: center;
}
.right-side {
border: 1px solid blue;
flex: 0 0 100%;
align-self: flex-end;
}
.left-side {
border: 1px solid orange;
flex: 0 0 100%;
align-self: flex-start;
}
#raw-logo {
width: 13.3vw;
max-width: 150px;
}
#mash-logo {
width: 80%;
margin-left: 10%;
margin-right: 10%;
}
.fancy-header{
border: 1px solid blue;
font-size: 15vw;
}
.fancy-body {
border: 1px solid red;
font-size: 3vw;
}
#fancy-text1 {
margin: 0;
}
#fancy-text2 {
margin-top: 7vw;
}
#masher {
width: 40%;
margin-left: 10%;
}
#brief-text {
margin-left: 5%;
margin-right: 10%;
align-self: center;
}
#header {
font-size: 11vw;
}
#subheader {
font-size: 5vw;
}
.body {
font-size: 2.5vw;
}
#wrapper {
position: relative;
}
#bulb {
width: 40%;
}
Upvotes: 0
Views: 51
Reputation: 1966
...I would like to have a[sic] image centred[sic] with text centred[sic] over the top of that.
The following changes should move the text above image and keep it centered.
#wrapper {
...
display: flex;
flex-direction: column-reverse;
align-items: center;
}
body {
font-family: bebas-neue-by-fontfabric;
font-weight: 700;
text-align: center;
text-transform: uppercase;
background-color: black;
width: 100%;
height: 100%;
margin: 0;
}
.blue {
background-color: skyblue;
}
.pink {
background-color: pink;
}
.green {
background-color: chartreuse;
}
.container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: flex-start;
width: 100%;
margin: 0;
padding: 0;
}
.container-row {
display: flex;
flex-direction: row;
justify-content: center;
width: 100%;
margin: 0;
padding: 0;
}
.container-stack {
display: flex;
justify-content: center;
width: 100%;
margin: 0;
padding: 0;
}
.centered {
flex: 0 0 100%;
align-self: center;
}
.right-side {
border: 1px solid blue;
flex: 0 0 100%;
align-self: flex-end;
}
.left-side {
border: 1px solid orange;
flex: 0 0 100%;
align-self: flex-start;
}
#raw-logo {
width: 13.3vw;
max-width: 150px;
}
#mash-logo {
width: 80%;
margin-left: 10%;
margin-right: 10%;
}
.fancy-header{
border: 1px solid blue;
font-size: 15vw;
}
.fancy-body {
border: 1px solid red;
font-size: 3vw;
}
#fancy-text1 {
margin: 0;
}
#fancy-text2 {
margin-top: 7vw;
}
#masher {
width: 40%;
margin-left: 10%;
}
#brief-text {
margin-left: 5%;
margin-right: 10%;
align-self: center;
}
#header {
font-size: 11vw;
}
#subheader {
font-size: 5vw;
}
.body {
font-size: 2.5vw;
}
#wrapper {
position: relative;
display: flex;
flex-direction: column-reverse;
align-items: center;
}
#bulb {
width: 40%;
}
<html>
<head>
<link rel="stylesheet" href="https://use.typekit.net/nqr5bmw.css">
</head>
<body>
<div class="container green">
<div class="right-side">
<img id="raw-logo" src="http://via.placeholder.com/300x100" alt="raw-logo">
</div>
<div class="centered mash">
<img id="mash-logo" src="http://via.placeholder.com/700x500" alt="mash-up-img">
</div>
</div>
<div class="container pink">
<div class="centered fancy-header">
<p id="fancy-text1">Bacon ipsum<br>dolor amet</p>
</div>
<div class="centered fancy-body">
<p id="fancy-text2">Bacon ipsum dolor amet tail pancetta ribeye<br>beef turkey ball tip.</p>
</div>
<div class="centered scroll">
<p id="fancy-text3">keep scrolling</p>
button here
</div>
</div>
<div class="container-row blue">
<img id="masher" src="http://via.placeholder.com/700x500" alt="masher-img">
<div id="brief-text">
<p><span id="header">bacon</span><br><span id="subheader">in short...</span></p>
<p class="body">tasty</p>
<p class="body">Bacon ipsum Bacon ipsum Bacon ipsum<br>Bacon ipsum Bacon ipsum Bacon ipsum Bacon ipsum<br>amet tail pancetta ribeye</p>
</div>
</div>
<div class="container-stack pink">
<div id="wrapper">
<img id="bulb" src="http://via.placeholder.com/500x300" alt="bulb-img">
<div id="bulb-text">
<p>Bacon ipsum dolor amet<br>tail pancetta ribeye beef<br>turkey ball tip.</p>
<p>Andouille prosciutto<br>ground round jowl jerky.</p>
</div>
</div>
</div>
<div class="container generator">
<div class="centered text">
<div class="word-1">Peanut Butter</div>
<div class="word-2">Water Lily Seeds</div>
</div>
<div class="centered">
<button class="button">Mash!</button>
</div>
</div>
</body>
</html>
Upvotes: 0
Reputation: 47
.container {
position: relative;
text-align: center;
color: black;
}
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div class="container">
<img src="http://via.placeholder.com/500x300" alt="Snow" style="width:100%;">
<div class="centered">
<p>Bacon ipsum dolor amet<br>tail pancetta ribeye beef<br>turkey ball tip.</p>
<p>Andouille prosciutto<br>ground round jowl jerky.</p>
</div>
</div>
Upvotes: 1
Reputation: 801
Why don't you just use background images?
body {
font-family: bebas-neue-by-fontfabric;
font-weight: 700;
text-align: center;
text-transform: uppercase;
background-color: black;
width: 100%;
height: 100%;
margin: 0;
}
.blue {
background-color: skyblue;
}
.pink {
background-color: pink;
}
.green {
background-color: chartreuse;
}
.container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: flex-start;
width: 100%;
margin: 0;
padding: 0;
}
.container-row {
display: flex;
flex-direction: row;
justify-content: center;
width: 100%;
margin: 0;
padding: 0;
}
.container-stack {
display: flex;
justify-content: center;
width: 100%;
margin: 0;
padding: 0;
}
.centered {
flex: 0 0 100%;
align-self: center;
}
.right-side {
border: 1px solid blue;
flex: 0 0 100%;
align-self: flex-end;
}
.left-side {
border: 1px solid orange;
flex: 0 0 100%;
align-self: flex-start;
}
#raw-logo {
width: 13.3vw;
max-width: 150px;
}
#mash-logo {
width: 80%;
margin-left: 10%;
margin-right: 10%;
}
.fancy-header{
border: 1px solid blue;
font-size: 15vw;
}
.fancy-body {
border: 1px solid red;
font-size: 3vw;
}
#fancy-text1 {
margin: 0;
}
#fancy-text2 {
margin-top: 7vw;
}
#masher {
width: 40%;
margin-left: 10%;
}
#brief-text {
margin-left: 5%;
margin-right: 10%;
align-self: center;
}
#header {
font-size: 11vw;
}
#subheader {
font-size: 5vw;
}
.body {
font-size: 2.5vw;
}
#wrapper {
position: relative;
}
#bulb {
width: 40%;
}
.container-stack #wrapper{
background-image:url("http://via.placeholder.com/500x300");
background-size:cover;
background-position:center;
padding: 3vw;
}
<html>
<head>
<link rel="stylesheet" href="https://use.typekit.net/nqr5bmw.css">
</head>
<body>
<div class="container green">
<div class="right-side">
<img id="raw-logo" src="http://via.placeholder.com/300x100" alt="raw-logo">
</div>
<div class="centered mash">
<img id="mash-logo" src="http://via.placeholder.com/700x500" alt="mash-up-img">
</div>
</div>
<div class="container pink">
<div class="centered fancy-header">
<p id="fancy-text1">Bacon ipsum<br>dolor amet</p>
</div>
<div class="centered fancy-body">
<p id="fancy-text2">Bacon ipsum dolor amet tail pancetta ribeye<br>beef turkey ball tip.</p>
</div>
<div class="centered scroll">
<p id="fancy-text3">keep scrolling</p>
button here
</div>
</div>
<div class="container-row blue">
<img id="masher" src="http://via.placeholder.com/700x500" alt="masher-img">
<div id="brief-text">
<p><span id="header">bacon</span><br><span id="subheader">in short...</span></p>
<p class="body">tasty</p>
<p class="body">Bacon ipsum Bacon ipsum Bacon ipsum<br>Bacon ipsum Bacon ipsum Bacon ipsum Bacon ipsum<br>amet tail pancetta ribeye</p>
</div>
</div>
<div class="container-stack pink">
<div id="wrapper">
<div id="bulb-text">
<p>Bacon ipsum dolor amet<br>tail pancetta ribeye beef<br>turkey ball tip.</p>
<p>Andouille prosciutto<br>ground round jowl jerky.</p>
</div>
</div>
</div>
<div class="container generator">
<div class="centered text">
<div class="word-1">Peanut Butter</div>
<div class="word-2">Water Lily Seeds</div>
</div>
<div class="centered">
<button class="button">Mash!</button>
</div>
</div>
</body>
</html>
I have added some padding to the Wrapper so the text is not so bunched to the end of the tag.
.container-stack #wrapper{
background-image:url("http://via.placeholder.com/500x300");
background-size:cover;
background-position:center;
padding: 3vw;
}
Upvotes: 0
Reputation: 1431
Perhaps there is a few way of doing it. If your image is big enought and you don't want to make it as background you could do something like that
#bulb-text{
position: absolute;
top: 50%;
left: 50%;
display: inline-block;
transform: translateX(-50%) translateY(-50%);
}
Upvotes: 0