响应地包装和解包div [英] Wrap and unwrap divs responsively

查看:40
本文介绍了响应地包装和解包div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组6个DIV,我想根据浏览器的屏幕宽度将每个X div包装在一个新的div中。

I have a set of 6 DIVs which I want to wrap in a new div every X divs depending on the screenwidth of the browser.

所以开始我有

<div class="blogItem"></div>
<div class="blogItem"></div>
<div class="blogItem"></div>
<div class="blogItem"></div>
<div class="blogItem"></div>
<div class="blogItem"></div>

所以在980px以上我要添加一个新的DIV,风格=display:table-row ;到每3个DIV - 从而制作:

So at 980px an above I want to add a new DIV with style="display: table-row;" to every 3 DIVs - thus making:

<div style="display:table-row;">
<div class="blogItem"></div>
<div class="blogItem"></div>
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
<div class="blogItem"></div>
<div class="blogItem"></div>
</div>

然后在400px和979px之间我希望它包装每个第二个div,所以它变为:

Then at between 400px and 979px I want it to wrap every 2nd div so it becomes:

<div style="display:table-row;">
<div class="blogItem"></div>
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
<div class="blogItem"></div>
</div>

然后每1 DIV低于399px,所以它变为:

And then below 399px every 1 DIV, so it becomes:

<div style="display:table-row;">
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
</div>
<div style="display:table-row;">
<div class="blogItem"></div>
</div>

我该怎么做?

我工作的解决方案在页面加载时运行良好,但在更改浏览器大小时不会更新:

The solution I have worked which works well on page load but does not update when you change the browser size is:

对于980px及以上

var divs = $(".blogItem");
for(var i = 0; i < divs.length; i+=3) {
  divs.slice(i, i+3).wrapAll("<div id='wrapper' style='display:table-row'></div>");
}

400 - 979

For 400 - 979

var divs = $(".blogItem");
for(var i = 0; i < divs.length; i+=2) {
  divs.slice(i, i+2).wrapAll("<div id='wrapper' style='display:table-row'></div>");
}

低于399

var divs = $(".blogItem");
for(var i = 0; i < divs.length; i+=1) {
  divs.slice(i, i+1).wrapAll("<div id='wrapper' style='display:table-row'></div>");
}

所有这些一起被称为:

function blogPadders () {

// read window size
var windowSize = $(window).width();
// set div var for wrapping in rows
var divs = $(".blogItem");

if (windowSize >= 746) {
for(var i = 0; i < divs.length; i+=3) {
  divs.slice(i, i+3).wrapAll("<div id='wrapper' style='display:table-row'></div>");
}

}

else if (windowSize >= 371 && windowSize <= 745) {
for(var i = 0; i < divs.length; i+=2) {
  divs.slice(i, i+2).wrapAll("<div id='wrapper' style='display:table-row'></div>");
}

}

else if (windowSize <= 370) {
for(var i = 0; i < divs.length; i+=1) {
  divs.slice(i, i+1).wrapAll("<div id='wrapper' style='display:table-row'></div>");
}

}

}

blogPadders();

$(document).ready(blogPadders);
$(window).load(blogPadders);
$(window).resize(blogPadders);


推荐答案

你可以使用循环:

var $div= $('#your_id div'),
    length = $div.length;
for (var i = 0; i < length; i = i + 3) {
    $div.slice(i, i + 3).wrapAll('<div class="group" style="display:table-row" />')
}

喜欢这个为不同的分辨率应用不同的脚本。

Like this apply the different script for different resolutions.

示例:

if($(window).width <= 768){
var $div= $('#your_id div'),
        length = $div.length;
    for (var i = 0; i < length; i = i + 2) {
        $div.slice(i, i + 2).wrapAll('<div class="group" style="display:table-row" />')
    }
}

但我建议你通过引导来建立你的网站响应。 http://getbootstrap.com/

But I suggest you go through the bootstrap to build your website responsive. http://getbootstrap.com/

更新:在调整大小时解包:

$(window).on('resize',function() {
  //to unwrap 
  $('.group').contents().unwrap();
  //now use other codes here to wrap
});

这篇关于响应地包装和解包div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆