Javascript 将一个div的元素发送到另一个div
我有不同高度的图片,我想把它们放在一个平铺的画廊里,就像下图所示: 然而,我也希望它是压制性的,因此我的工作方法如下: 1) 我使用HTML创建了三个div,Javascript 将一个div的元素发送到另一个div,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有不同高度的图片,我想把它们放在一个平铺的画廊里,就像下图所示: 然而,我也希望它是压制性的,因此我的工作方法如下: 1) 我使用HTML创建了三个div,#grid1,#grid2和#grid3。图像被放置在另一个div中的这3个网格中,该div具有包含图像的class.gridElement <!--Grid System--> <div id="grid1"> <!--Grid 1--> <div class="gridElem
#grid1
,#grid2
和#grid3
。图像被放置在另一个div中的这3个网格中,该div具有包含图像的class.gridElement
<!--Grid System-->
<div id="grid1">
<!--Grid 1-->
<div class="gridElement">
<img alt="image" src="assets/images/image.jpg">
</div>
</div>
<div id="grid2">
<!--Grid 2-->
<div class="gridElement">
<img alt="image" src="assets/images/image.jpg">
</div>
</div>
<div id="grid3">
<!--Grid 3-->
<div class="gridElement">
<img alt="image" src="assets/images/image.jpg">
</div>
</div>
<!--/Grid System-->
及
及
及
他们的理论是:当屏幕大小大于1024px时,默认情况下会显示三个网格。但是,当屏幕大小低于1024px且高于770px时,使用CSS#grid3
将被隐藏,并使用JavaScript,我尝试将#grid3中的所有.girdelement
发送到#grid1和#grid2。当屏幕尺寸低于770px时,所有内容将恢复正常,并显示所有网格
问题出在哪里?除了JavaScript,我已经设法让所有东西都正常工作了——请任何人帮我创建一个函数,当屏幕大小低于1024px且高于770px时,将#grid3中的所有.girdelement平均发送到#grid1和#grid2?“加载和调整大小”。您可以使用以实现类似效果。它使用绝对定位,而不是固定数量的列。无论如何,它看起来都是一样的,并且适应屏幕宽度。您可以尝试以下方法:
var toggle = true;
$('#grid3').children('.gridElement').each(function (index) {
if (toggle) {
$('#grid1').append($(this));
toggle = false;
} else {
$('#grid2').append($(this));
toggle = true;
}
是JSFiddle上的一个工作示例,对网格中的元素进行排序使用jQuery这个解决方案更好,但是有一些方法可以计算元素的实际高度 首先,您应该将grid1、grid2、grid3中的每个项目标记为属于它们相应的网格,例如,通过使用类或数据。然后,一种“年表”值,用于存储每个项目的“顺序” 如果要将grid3中的所有项追加到grid1和grid2,可以应用以下算法:
为什么要重新发明轮子?使用像Modernizer这样的库。我不想使用插件,我想要一些非常简单的东西+我就快到了!我在这上面花了很多时间,但真的需要一些帮助才能让它工作!请说明这几乎奏效了,但它只将grid3的所有元素发送到grid2,而没有发送到grid1。有什么想法吗?好的!我已经对我的答案进行了修改,并提供了一个有效的JSFIDLE,祝您愉快!非常感谢。我一直试图让它在屏幕大小上自动工作,而不是在按钮切换上,所以我尝试实现if(width<1024&&width>770){},但我所有的尝试都失败了!你能给我一些建议吗?看看()。这个0.8kb的小库将允许您使用Javascript进行css媒体查询。如果网格工作正常,请接受答案。好的,Loai,我帮了你一个忙,更新了JSfiddle()-调整大小的代码在JSfiddle框架中不起作用,但我在本地机器上的Chrome和Firefox中试过,效果很好。这应该足够让你开始了。我不能使用插件。我们如何把它付诸实践呢?你能踢我一下吗?
@media screen and (max-width: 1024px) {
/*Grid System*/
#grid1,#grid2,#grid3 {
width: 50%;
}
#grid3 {
display: none;
}
}
@media screen and (max-width: 770px) {
/*Grid System*/
#grid1,#grid2,#grid3 {
width: 100%;
}
#grid1,#grid2,#grid3 {
padding: 0;
display: block;
}
#grid1 .gridElement:last-of-type,
#grid2 .gridElement:last-of-type {
margin-bottom: 30px;
}
@media screen and (max-width: 500px) {
/*Grid System*/
.gridElement {
margin-bottom: 20px;
}
#grid1 .gridElement:last-of-type,
#grid2 .gridElement:last-of-type {
margin-bottom: 20px;
}
var toggle = true;
$('#grid3').children('.gridElement').each(function (index) {
if (toggle) {
$('#grid1').append($(this));
toggle = false;
} else {
$('#grid2').append($(this));
toggle = true;
}
var grid1 = $("#grid1");
var grid2 = $("#grid2");
var grid3 = $("#grid3");
//compressing - distributing grid3 between grid1 and grid2
function compress()
{
grid3.hide();
$(".item-in-grid3").each(function(i, e){
//never assign "width:" to any grid (1, 2, 3) in css, so it can
//be dynamic and compute height and compare them on each iteration.
if (grid1.height() > grid2.height())
{
$(this).appendTo(grid2);
}
else
{
$(this).appendTo(grid1);
}
});
}
//return back the elements to grid3
function decompress()
{
$(".item-in-grid3").each(function(i, e){
$(this).appendTo(grid3);
});
grid3.show();
}