The proper way of fixing it is by establishing block formatting contexts (BFC).
The common ways to establish them are:
- Setting
overflow
to anything but visible
, e.g. hidden
- Taking out of flow (floating or absolute positioning)
- Setting
display
to inline-block
, table-cell
or table-caption
To avoid those hacky ways, Display L3 introduces display: flow-root
, which behaves like block
but establishing a BFC. That would be perfect but sadly browsers don't support it yet.
Then, you can establish a BFC in
.main
, e.g.
.main {
overflow: hidden; /* Establish BFC */
}
.aside {
float: right;
width: 200px;
background: red;
}
.main {
margin-right: 220px;
overflow: hidden;
}
.main ul li {
border-bottom: 1px solid black;
}
.main ul li img {
float: left;
}
/* clearfix */
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {clear: both;}
.clearfix {*zoom: 1;}
<div class="aside">
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
</div>
<div class="main">
<ul>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 1</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 2</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 3</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 4</div></li>
</ul>
</div>
.main > ul
, e.g.
.main > ul {
display: inline-block; /* Establish BFC */
width: calc(100% - 40px); /* Full width (minus padding) */
padding-left: 40px;
}
.aside {
float: right;
width: 200px;
background: red;
}
.main {
margin-right: 220px;
overflow: hidden;
}
.main > ul {
display: inline-block; /* Establish BFC */
width: calc(100% - 40px); /* Full width (minus padding) */
padding-left: 40px;
}
.main ul li {
border-bottom: 1px solid black;
}
.main ul li img {
float: left;
}
/* clearfix */
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {clear: both;}
.clearfix {*zoom: 1;}
<div class="aside">
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
</div>
<div class="main">
<ul>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 1</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 2</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 3</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 4</div></li>
</ul>
</div>
.main > ul > li
, e.g
.main > ul > li {
float: left; /* Establish BFC */
clear: left; /* Prevent adjacency */
}
.aside {
float: right;
width: 200px;
background: red;
}
.main {
margin-right: 220px;
overflow: hidden;
}
.main ul li {
border-bottom: 1px solid black;
float: left;
clear: left;
}
.main ul li img {
float: left;
}
/* clearfix */
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {clear: both;}
.clearfix {*zoom: 1;}
<div class="aside">
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
</div>
<div class="main">
<ul>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 1</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 2</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 3</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 4</div></li>
</ul>
</div>
.main > ul > li > .clearfix
, e.g (with overlapping)
.main > ul > li > .clearfix {
position: absolute; /* Establish BFC */
}
.aside {
float: right;
width: 200px;
background: red;
}
.main {
margin-right: 220px;
overflow: hidden;
}
.main ul li {
border-bottom: 1px solid black;
}
.main > ul > li > .clearfix {
position: absolute;
}
.main ul li img {
float: left;
}
/* clearfix */
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {clear: both;}
.clearfix {*zoom: 1;}
<div class="aside">
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
<p>This is a div aside with some very interesting notes and a text to give it some height.</p>
</div>
<div class="main">
<ul>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 1</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 2</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 3</div></li>
<li><div class="clearfix"><img src="http://orig06.deviantart.net/7926/f/2013/172/c/7/free_grumpy_cat_icon_by_fiinie-d6a1ose.gif">item 4</div></li>
</ul>
</div>