Reputation: 611
I'm trying to get two images on top of each other, while also being centered both vertically and horizontally on screen. If I make them both positioned relatively, the first one is centered great, while the second one appears beneath the first.
#copy, #logo {
position: relative;
top: 50%;
transform: translateY(-50%);
margin-left: auto;
margin-right: auto;
}
So I added a wrapper and positioned that relatively and positioned the images absolutely. Now they stack on one another, but I lost my centering.
#wrapper {
position: relative;
top: 50%;
transform: tranlasteY(-50%);
margin-left: auto;
margin-right: auto;
}
#copy, #logo {
position: absolute;
}
Upvotes: 1
Views: 6806
Reputation: 207901
You can omit the wrapper and just use absolute positioning on the children elements, setting the margin to auto and the top/right/bottom/left to 0:
#copy, #logo {
opacity: 1;
position: absolute;
margin:auto;
top:0;
right:0;
bottom:0;
left:0;
}
<div id="wrapper">
<img id="copy" class="img-responsive" src="http://fillmurray.com/600/600"></img>
<img id="logo" class="img-responsive" src="http://fillmurray.com/500/500"></img>
</div>
Upvotes: 2
Reputation: 612
You got to make html
, body
, the #wrapper
and all the parent elements for the images to occupy all the screen, with height:100%
. Set the positioning of the images absolute based on #wrapper
with position:relative on it. And voilá, set the XY positioning margin to 50% (as you did) and translate(-50%) (as you did).
body,html{
padding:0;
height:100%;
}
#wrapper {
position: relative;
height:100%;
}
#copy, #logo {
opacity: 1;
position: absolute;
top:50%;
left:50%;
transform:translateY(-50%) translateX(-50%);
}
Obs: Great images btw
Upvotes: 4