body {
background: rgba(0, 0, 0, 0.8);
font-family: sans-s
There are a couple of things going on here - first, your width on the "registercontainer" div is 1050 - which will force it to clear, causing the "register" div to appear below the 'centered' div.
I would go about this a different way. If you are dealing with a fixed-width site: I would float #login and #registercontainer next to each other, and give #wrapper an explicit width. Then, set #wrapper to have a margin left using a % that would approximate the placement that you're after.
See this JS Fiddle for an example. Here is the CSS (I changed the background colors for clarity):
body {
background: rgba(0, 0, 0, 0.8);
font-family: sans-serif;
font-size: 11px;
color: #e0e0e0;
width: 960px;
}
#wrapper {
width: 760px;
background: blue;
overflow: hidden;
margin-left: 35%;
}
#login {
float: left;
margin-top: 50px;
background: rgba(0, 0, 0, 0.9);
width: 360px;
padding: 20px;
-webkit-border-radius: 15px;
border-radius: 15px;
}
#registercontainer {
float:left;
margin-top: 50px;
clear: none;
width: 350px;
background: red;
}
#register {
}
Take a look at this fiddle. http://jsfiddle.net/nUk77/ Or even closer to your original code: http://jsfiddle.net/rSbzT/
Instead of absolute positioning the register div I positioned its container. The absolute positioning makes it break from the html flow so it doesn't interfere with the margin-right:auto;
I imagine there are quite a few approaches you can take. Here is one.
Using the same HTML structure as in your example, the goal can be achieved thus:
inline-block
.text-align: center
to the main wrapper.position: absolute
. This requires that you give its container position: relative
as well.vertical-align: top
so that its top edge (which is also the sidebar's top edge) aligns with the top edge of the centered element.text-align
for the centered element and the sidebar if you don't want their contents to be centered within themselves.As a bonus, with this approach you can directly specify the widths for both the centered div and the sidebar in just one place.
See it in action.
float: right
should solve your problem. remember to add an empty div-container with float:clear
afterwards.
Try this:
<div style="position: relative; display: inline-block; padding: 0 30px;">
<h2>CENTERED ELEMENT</h2>
<div style="position: absolute; top: 0; left: 100%;">
ELEMENT NEXT TO CENTERED DIV
</div>
Use 100% in position absolute. And use padding for the centered element to push the side div further.
Please, check the repaired JSFiddle of your markup.
You need to remove #registercontainer
and place #register
into #login
plus some position modifications according to centered block width.
HTML:
<div id="wrapper">
<div id="login">
<h2>Login to The Something Project</h2>
<form action="game" method="post">
<input type="text" name="username" maxlength="20" placeholder="username"><br>
<input type="text" name="usericon" placeholder="http://imgur.com/icon.png"><br>
<br>
<input type="submit" value="login">
</form>
<div id="register">
<h2>Register for The Something Project</h2>
</div>
</div>
</div>
And CSS:
body {
background: rgba(0, 0, 0, 0.8);
font-family: sans-serif;
font-size: 11px;
color: #e0e0e0;
}
#login {
margin-left: auto;
margin-right: auto;
margin-top: 50px;
background: rgba(0, 0, 0, 0.9);
width: 360px;
padding: 20px;
position: relative;
-webkit-border-radius: 15px;
border-radius: 15px;
}
#register {
position: absolute;
left: 420px;
top: 20px;
width: 100px;
}