How to align two divs side by side using the float, clear, and overflow elements with a fixed position div/
Clash Royale CLAN TAG#URR8PPP
How to align two divs side by side using the float, clear, and overflow elements with a fixed position div/
So I've been trying to align two divs side by side without overlapping. I have one div which will be fixed as a sidebar and the right div as the content. Hopefully, someone can help me.
body
background-color: #444;
margin-top: 0;
margin-bottom: 0;
#wrapper
width: 1005px;
margin: 0 auto;
padding: 0;
overflow: auto;
#leftcolumn
width: 250px;
background-color: #111;
padding: 0;
margin: 0;
display: block;
border: 1px solid white;
position: fixed;
#rightcolumn
width: 750px;
background-color: #777;
display: block;
float: left;
border: 1px solid white;
<div id="wrapper">
<div id="leftcolumn">
</div>
<div id="rightcolumn">
</div>
</div>
@peterchon I removed the float element is there something there to add or to change?
– Esteban Rodriguez
Aug 20 '13 at 21:12
If your right column is the content, then why is it so much skinnier?
– crush
Aug 20 '13 at 21:12
You could try with flexbox or table layout (depending on target browsers). If you're using float, remember to always add
clear: both
after last element as you probably don't want anything else showing there.– Marko Grešak
Aug 20 '13 at 21:12
clear: both
@crush thank you for letting me know, I had this as a project and decided to change some things and just edited.
– Esteban Rodriguez
Aug 20 '13 at 21:14
4 Answers
4
This answer may have to be modified depending on what you were trying to achieve with position: fixed;
. If all you want is two columns side by side then simply do the following:
position: fixed;
http://jsfiddle.net/8weSA/1/
I simply floated both columns to the left. I added min-height
to each column for illustrative purposes and I simplified your CSS.
min-height
body
background-color: #444;
margin: 0;
#wrapper
width: 1005px;
margin: 0 auto;
#leftcolumn,
#rightcolumn
border: 1px solid white;
float: left;
min-height: 450px;
color: white;
#leftcolumn
width: 250px;
background-color: #111;
#rightcolumn
width: 750px;
background-color: #777;
<div id="wrapper">
<div id="leftcolumn">
Left
</div>
<div id="rightcolumn">
Right
</div>
</div>
If you would like the left column to stay in place as you scroll do the following:
http://jsfiddle.net/8weSA/2/
Here we float the right column to the right while adding position: relative;
to #wrapper
and position: fixed;
to #leftcolumn
. I again used min-height
for illustrative purposes and can be removed for your needs.
position: relative;
#wrapper
position: fixed;
#leftcolumn
min-height
body
background-color: #444;
margin: 0;
#wrapper
width: 1005px;
margin: 0 auto;
position: relative;
#leftcolumn,
#rightcolumn
border: 1px solid white;
min-height: 750px;
color: white;
#leftcolumn
width: 250px;
background-color: #111;
min-height: 100px;
position: fixed;
#rightcolumn
width: 750px;
background-color: #777;
float: right;
<div id="wrapper">
<div id="leftcolumn">
Left
</div>
<div id="rightcolumn">
Right
</div>
</div>
Thank you. This one looks great as well.
– Esteban Rodriguez
Aug 20 '13 at 21:27
Try this:
<div id="wrapper">
<div class="float left">left</div>
<div class="float right">right</div>
</div>
#wrapper
width:500px;
height:300px;
position:relative;
.float
background-color:black;
height:300px;
margin:0;
padding:0;
color:white;
.left
background-color:blue;
position:fixed;
width:400px;
.right
float:right;
width:100px;
jsFiddle: http://jsfiddle.net/khA4m
add a clearfix CSS on your #wrapper as well.
– peterchon
Aug 20 '13 at 21:16
Thanks a bunch. I customized it a little and now I'm on track for how I wanted to style it.
– Esteban Rodriguez
Aug 20 '13 at 21:22
great - glad i can help.
– peterchon
Aug 20 '13 at 21:27
I did this:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AutoDealer</title>
<style>
.container
width: 860px;
height: 1074px;
margin-right: auto;
margin-left: auto;
border: 1px solid red;
.nav
.wrapper
display: block;
overflow: hidden;
border: 1px solid green;
.otherWrapper
display: block;
overflow: hidden;
border: 1px solid green;
float:left;
.left
width: 399px;
float: left;
background-color: pink;
.bottom
clear: both;
width: 399px;
background-color: yellow;
.right
height:350px;
width: 449px;
overflow: hidden;
background-color: blue;
overflow: hidden;
float:right;
</style>
</head>
<body>
<div class="container">
<div class="nav"></div>
<div class="wrapper">
<div class="otherWrapper">
<div class="left">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ultricies aliquet tellus sit amet ultrices. Sed faucibus, nunc vitae accumsan laoreet, enim metus varius nulla, ac ultricies felis ante venenatis justo. In hac habitasse platea dictumst. In cursus enim nec urna molestie, id mattis elit mollis. In sed eros eget nibh congue vehicula. Nunc vestibulum enim risus, sit amet suscipit dui auctor et. Morbi orci magna, accumsan at turpis a, scelerisque congue eros. Morbi non mi vel nibh varius blandit sed et urna.</p>
</div>
<div class="bottom">
<p>ucibus eros, sed viverra ex. Vestibulum aliquet accumsan massa, at feugiat ipsum interdum blandit. Morbi et orci hendrerit orci consequat ornare ac et sapien. Nulla vestibulum lectus bibendum, efficitur purus in, venenatis nunc. Nunc tincidunt velit sit amet orci pellentesq</p></div>
</div>
<div class="right">
<p>Quisque vulputate mi id turpis luctus, quis laoreet nisi vestibulum. Morbi facilisis erat vitae augue ornare convallis. Fusce sit amet magna rutrum, hendrerit purus vitae, congue justo. Nam non mi eget purus ultricies lacinia. Fusce ante nisl, efficitur venenatis urna ut, pellentesque egestas nisl. In ut faucibus eros, sed viverra ex. Vestibulum aliquet accumsan massa, at feugiat ipsum interdum blandit. Morbi et orci hendrerit orci consequat ornare ac et sapien. Nulla vestibulum lectus bibendum, efficitur purus in, venenatis nunc. Nunc tincidunt velit sit amet orci pellentesque maximus. Quisque a tempus lectus.</p>
</div>
</div>
</div>
</body>
So basically I just made another div to wrap the pink and yellow, and I make that div have a float:left on it. The blue div has a float:right on it.
Your code is correct. Kindly mark small correction.
#rightcolumn
width: 750px;
background-color: #777;
display: block;
**float: left;(wrong)**
**float: right; (corrected)**
border: 1px solid white;
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
you either user position:Fixed or float - not both.
– peterchon
Aug 20 '13 at 21:07