这确实可以使用 CSS3 媒体选择器来实现。
假设一个列的宽度为 100 px,您有一个宽度为 150 px 的侧边栏,并且元素被包裹在一个包装器中。
理想情况下,这应该使用 LESS CSS 或类似方法来实现。
<div class="container">
<div id="sidebar">SIDEBAR</div>
<div id="wrapper">
<div class="coloumn">ITEM</div>
<div class="coloumn">ITEM</div>
<div class="coloumn">ITEM</div>
<div class="coloumn">ITEM</div>
<div class="coloumn">ITEM</div>
<div class="coloumn">ITEM</div>
</div>
</div>
/*Default layout with 2 coloumns (150 + 2*100)*/
#sidebar
{
float:left;
width:150px;
}
#container
{
width:350px;
}
/*Coloumns outer width must be 100px*/
.coloumn
{
width:90px;
border:1px solid #000; /*Left + right = 2px*/
margin-left:8px;
background:#ccc;
display:inline;
}
#wrapper
{
margin-left:150px;
width:200px;
}
/*3 coloumns (150 + 3*100)*/
@media (min-width: 450px){
#wrapper
{
width:300px;
}
#container
{
width:550px
}
}
/*4 coloumns (150 + 4*100)*/
@media (min-width: 550px){
#wrapper
{
width:400px;
}
#container
{
width:550px
}
}