用div连续填充div(css)

时间:2013-08-18 09:43:23

标签: css css3 css-float

我有一个固定大小为600px的div容器。 我想在一行中填写一些div (数字是动态值)

这样的事情:

|---------------------------container-------------------------|
|----box1----||----box2-----||-----box3-----||------box4------|

所有方框必须具有相同的尺寸

3 个答案:

答案 0 :(得分:6)

基于表格布局的答案(纯CSS) http://jsfiddle.net/QheN7/1/

HTML:

<div class="container">
    <div class="child">&nbsp;</div>
    <div class="child">&nbsp;</div>
    <div class="child">&nbsp;</div>
    <div class="child">&nbsp;</div>
    <div class="child">&nbsp;</div>
    <div class="child">&nbsp;</div>
</div>
<button>Add div</button>

CSS:

.container{
    display:table;
    border:1px solid #000;
    width:600px;
    height:20px;
}

.child{
    display:table-cell;
    height:20px;
}

.child:nth-child(odd){
    background-color:#aaa;
}

.child:nth-child(even){
    background-color:#666;
}

我只使用JS添加更多div,否则不需要:

$('button').on('click', function(){
    var newChild = $('.container').find('.child').first();
    newChild.clone().appendTo($('.container'));
});

答案 1 :(得分:1)

我不确定这是不是你想要的..你需要javascript(我知道你没有在这里标记): http://jsfiddle.net/QheN7/

截屏:

enter image description here

CSS:

.container{
    overflow:auto;
    border:1px solid #000;
    width:600px;
}

.child{
    float:left;
    height:20px;
}

.child:nth-child(odd){
    background-color:#aaa;
}

.child:nth-child(even){
    background-color:#666;
}

HTML:

<div class="container">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
</div>
<button>Add div</button>

JS:

$(function(){
    function setWidth(){
        var container = $('.container'),
            children = $('.child'),
            containerWidth = container.width(),
            noOfChildren = children.length;
        children.width(containerWidth/noOfChildren);
    }
    $('button').on('click', function(){
        var newChild = $('.container').find('.child').first();
        newChild.clone().appendTo($('.container'));
        setWidth();
    });
    setWidth();
});

答案 2 :(得分:1)

实际上可以用纯CSS解决问题,但它并不适用于所有浏览器。你的问题有点像this一样。我们的想法是根据数字设置div的宽度。

/* one item */
li:nth-child(1):nth-last-child(1) {
    width: 100%;
}

/* two items */
li:nth-child(1):nth-last-child(2),
li:nth-child(2):nth-last-child(1) {
    width: 50%;
}

/* three items */
li:nth-child(1):nth-last-child(3),
li:nth-child(2):nth-last-child(2),
li:nth-child(3):nth-last-child(1) {
    width: 33.3333%;
}