流动布局中浏览器大小改变时通过js动态计算和放置相同大小的div块

**问题:**html页面里高500px,宽100%的div中有10个高度为120px,宽度为250px的div块。采用流动布局的方式,当浏览器变大或者变小的时候,这10个块都可以等间距的排成1~10行(最少1行排10个,最多每行一个排10行),每行的块的数量相等。
css布局:

<style type="text/css">
#main{
    width:100%;
    height:500px;
    overflow-y:atuo;
}
.mydiv{
    width:250px;
    height:120px;
    float:left;
    backgroud-color:red;
}
</style>

html页面:

<html>
    <body>
        <div id="main">
            <div id="mydiv1" class="mydiv"></div>
            <div id="mydiv2" class="mydiv"></div>
            <div id="mydiv3" class="mydiv"></div>
            <div id="mydiv4" class="mydiv"></div>
            <div id="mydiv5" class="mydiv"></div>
            <div id="mydiv6" class="mydiv"></div>
            <div id="mydiv7" class="mydiv"></div>
            <div id="mydiv8" class="mydiv"></div>
            <div id="mydiv9" class="mydiv"></div>
            <div id="mydiv10" class="mydiv"></div>
        </div>
    </body>
</html>

js部分控制页面动态布局:

<script type="text/javascript">
window.onload=setdivblock;//加载时计算
window.onresize=setdivblock;//浏览器大小改变时重新计算
function setdivblock(){
        var mainwidth = parseInt($("#main").css("width"));
        //判断是否出现滚动条,由于滚动条有20px左右的宽度,所以如果出现滚动条需要减去这部分
        if (document.getElementById("main").clientWidth < document.getElementById("main").offsetWidth - 4)
        {
            mainwidth = mainwidth - 20;
        }
        //每个div元素块的宽度是250px,如果最小间距为20px
        var surpluswidth = mainwidth % 270;//计算以270平铺元素块后的剩余宽度
        var count =parseInt( mainwidth / 270);//计算以270平铺可以放置的元素块个数
        if (surpluswidth < 250) {
        //如果剩余宽度小于元素块的宽度,说明剩下的部分无法放置一个完整的元素块,一行最多放置count个块。若每行有n个块,则有n-1个间隔。
            var tempmarginright = parseInt((botdivwidth - count * 250) / (count - 1));//间距计算
        }
        else {
        //如果剩余宽度大于元素块宽度,说明剩下的部分还能放置一个块而又结余,则一行最多可以放置count+1个块
            var tempmarginright = parseInt((botdivwidth - (count+1) * 250) / count);
            count = count + 1;
        }
        //设置每个div块的间距
        for (var i = 1; i <= 10; i++) {
            if (i % count == 0) {//判读是否为每行的最后一个元素
                $("#mydiv"+i).css("margin-right", "0px");
            }
            else {
                $("#mydiv"+i).css("margin-right", tempmarginright + "px");
            }
        }
    }
</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章