如何围绕div包装多个div

时间:2015-06-28 19:05:16

标签: javascript c# css asp.net grid-layout

我有一个div(Slideshow),我想用它包围小div(Items)。 Slideshow div将是静态的,Items将使用Repeater Control自动呈现。

我制作了这张图片,以便更好地说明我需要实现的目标。

enter image description here

我看到了这个Question,我认为我可以使用相同的逻辑,让Repeater项正常呈现,然后使用JavaScript更改标记并使用某种CSS网格布局来设置样式例如左边和右边的前4个项目,其余的将在它们之下,但我不知道如何做到这一点加上如果有一个更简单的解决方案我认为它可能比使用我在我提到的问题。

Update1 :更改了图片以显示确切的所需输出

2 个答案:

答案 0 :(得分:0)

您可以生成Masonary布局。这个插件可能会有帮助,https://github.com/desandro/masonry

您也可以使用bootstrap列执行此操作。对于第一行,使用幻灯片显示,您有3列。左外侧和右侧列将具有2个嵌套行。 http://getbootstrap.com/examples/grid/。这是我最熟悉的,所以我将向您展示如何为第一行实现解决方案以及如何实现第4行的第二行。

<div class="row">

    <!-- Outer Left Column -->
    <div class="col-xs-4">
        <div class="row">
            <div class="col-xs-12">
                Item
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12">
                Item
            </div>
        </div>
    </div>

    <div class="col-xs-12">
        Slide Show
    </div>

    <!-- Outer Right Column -->
    <div class="col-xs-4">
        <div class="row">
            <div class="col-xs-12">
                Item
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12">
                Item
            </div>
        </div>
    </div>

</div>

<!-- Row With Four Items -->
<div class="row">
    <div class="col-xs-3">
        Item
    </div>
    <div class="col-xs-3">
        Item
    </div>
    <div class="col-xs-3">
        Item
    </div>
    <div class="col-xs-3">
        Item
    </div>
</div>

检查角度材料布局系统。这将更难实现,因为它需要Angular。 https://material.angularjs.org/latest/#/layout/grid

答案 1 :(得分:0)

检查此解决方案,看看是否可以将其用于您的项目:http://jsfiddle.net/1b0hoked/

HTML:

<div id = "wrapper">
    <div id = "slideshow"></div>
</div>

CSS:

*, :before, :after {
    margin: 0;
    padding: 0;
    border: 0;
    box-sizing: border-box;
}

body {
    padding: 10px;
}

#wrapper {
    counter-reset: item-counter;
    text-align: right;
    margin: 0 auto;
    display: table;
    outline: 1px solid gray;
    position: relative;
}

#slideshow {
    width: 210px;
    height: 210px;
    line-height: 210px;
    text-align: center;
    border: 2px solid red;
    position: absolute;
    top: 5px;
    left: 50%;
    margin-left: -105px;
}

#slideshow:before {
    content: "Slide Show";
    vertical-align: middle;
    font: bold 16px/1 Sans-Serif;
    color: red;
}

.item {
    height: 100px;
    width: 100px;
    text-align: center;
    line-height:  96px;
    border: 2px solid #aaa;
}

.item:before {
    counter-increment: item-counter;
    content: "item " counter(item-counter);
    vertical-align: middle;
    font: bold 12px/1 Sans-Serif;
    color: #aaa;
}

.item {
    float: left;
    margin: 5px;
}

.item:nth-of-type(4n + 1) {
    clear: left;
}

.item:nth-of-type(3) {
    float: right;
    margin-top: -105px;
}

.item:nth-of-type(4) {
    float: right;
    clear: right;
    margin-left: -105px;
}

.item:nth-of-type(2) {
    clear: left;
}

JS / jQuery的:

$(function() {
    var numToAdd = 50;
    while(--numToAdd >= 0) {
        $("</p>").addClass("item").appendTo("#wrapper");    
    }
});