2017-02-22 71 views
0

这可能看起来像一个非常基本的问题,但我被卡住时动画的高度div。有多个div与css float:left。当我click特殊div的高度应该增加。但既然它的高度在增加,其他div的位置也在变化。我不希望它们改变它们的位置。我想要的是,div下方的div应该向下移动而不会影响其他div。动画高度onclick内嵌div

Fiddle

这里是代码。

$("div").click(function() { 
 
    if ($(this).height() != 100) 
 
    $(this).animate({ 
 
     height: 100 
 
    }, 1000); 
 
    else 
 
    $(this).animate({ 
 
     height: 150 
 
    }, 1000); 
 
});
div { 
 
    height: 100px; 
 
    width: 100px; 
 
    border: 2px solid; 
 
    float: left; 
 
    margin: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    HELLO WORLD 1 
 
</div> 
 
<div> 
 
    HELLO WORLD 2 
 
</div> 
 
<div> 
 
    HELLO WORLD 3 
 
</div> 
 
<div> 
 
    HELLO WORLD 4 
 
</div> 
 
<div> 
 
    HELLO WORLD 5 
 
</div> 
 
<div> 
 
    HELLO WORLD 6 
 
</div> 
 
<div> 
 
    HELLO WORLD 7 
 
</div> 
 
<div> 
 
    HELLO WORLD 8 
 
</div> 
 
<div> 
 
    HELLO WORLD 9 
 
</div> 
 
<div> 
 
    HELLO WORLD 10 
 
</div>

+0

我看见了,会随着你使用花车告诉,在HTML组内容更好地列inyto一个格一列 –

回答

0

嗯,我想你可以通过内部添加另一个DIV做到这一点,并扩展该分区的大小,而不是:

$(".inner-div").click(function() { 
 
    if ($(this).height() != 100) 
 
    $(this).animate({ 
 
     height: 100 
 
    }, 1000); 
 
    else 
 
    $(this).animate({ 
 
     height: 150 
 
    }, 1000); 
 
});
div { 
 
    height: 100px; 
 
    width: 100px; 
 
} 
 

 
.outter-div{ 
 
    float: left; 
 
    margin: 10px; 
 
    overflow: visible; 
 
} 
 

 
.inner-div{ 
 
    border: 2px solid; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 1 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 2 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 3 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 4 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 5 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 6 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 7 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 8 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 9 
 
    </div> 
 
</div> 
 
<div class="outter-div"> 
 
    <div class="inner-div"> 
 
    HELLO WORLD 10 
 
    </div> 
 
</div>

+0

感谢您的答复但问题是当高度增加时divs重叠。我希望目标div下面的div下移不要重叠。 –

+0

我明白了,所以我建议你使用http://masonry.desandro.com/作为pinterest般的布局。 – AVAVT

+0

我试图避免任何插件。我只是在寻找一个更好的CSS来解决这个问题。 –

1

我认为这正是这你所期望的几乎是不可能的,但如果是这样,它可能很难实现。但是如果您使用flexboxjQuerycss转换,您将在每个屏幕尺寸上获得完全响应方案。

Jsfiddle example

$(".container").find('div').click(function() { 
 
    $(this).toggleClass('show'); 
 
});
.container div { 
 
    height: 100px; 
 
    width: 100px; 
 
    border: 2px solid; 
 
    margin: 10px; 
 
    transition: .5s ease height; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: row; 
 
    flex-wrap: wrap; 
 
    justify-content: flex-start; 
 
    align-content: flex-start; 
 
    align-items: flex-start; 
 
} 
 

 
.show { 
 
    height: 150px !important; 
 
    transition: .5s ease height; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='container'> 
 
    <div> 
 
    HELLO WORLD 1 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 2 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 3 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 4 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 5 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 6 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 7 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 8 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 9 
 
    </div> 
 
    <div> 
 
    HELLO WORLD 10 
 
    </div> 
 
</div>

+0

这几乎是相似的,但问题是所有下面的divs不仅移动目标div下面的div。 –

+0

@shubhamagrawal我知道我的朋友,但正如我上面所说,这将是非常难以实现的,因为脚本将不得不检查哪些div完全在他身下,并且它打赌它将是静态方法而不可能与全面负责任的网页设计尽量缩小窗口到最大,它仍然可以正常工作。 –

+0

感谢您的回复,现在我甚至已经意识到这不是那么容易实现,但问题在于它是项目需求,我必须按照给我的指示去做。我还在寻找任何替代方案做这个。 –