【发布时间】:2016-04-01 22:50:46
【问题描述】:
我正在构建一个带有图像网格的网页,当用户单击图像时,一个透明层会向上滑动,其中包含有关图像的一些信息的动画。这适用于我在下面制作的脚本。
但我需要改进它,因为当用户点击第二张图片时,前一个透明层应该向下滑动,这也可以,但如果用户点击同一层,动画只会向上滑动然后向下滑动。我的问题是是否可以改进我的脚本来处理这个问题。
我的第二个问题是,如果任何图层已经打开,脚本会从向下滑动开始,但这会影响所有 div 标签还是只影响打开的那个?我想如果我有一个大网格并且脚本从所有层滑下,尽管只有一个可见,我想会有一些性能问题!?我的代码是否正常,或者是否有任何可以改进的缺陷?
JQuery:
$(document).ready(function(){
$(".outer").click(function(){
$(".inner").animate({height:'-=100%'},250);
$(this).children(".inner").animate({height:'+=100%'},250);
});
});
HTML:
<div class='outer'>
<img src="image-1.png" class="click">
<div class='inner'><h1>Cover 1</h1></div>
</div>
<div class='outer'>
<img src="image-2.png" class="click">
<div class='inner'><h1>Cover 2</h1></div>
</div>
<div class='outer'>
<img src="image-3.png" class="click">
<div class='inner'><h1>Cover 3</h1></div>
</div>
CSS:
.outer {
height: auto;
background: yellow;
position:relative;
width: 300px;
}
.outer img {
display: block;
}
.inner {
position: absolute;
bottom: 0;
height:0;
width: 100%;
background:rgba(0, 0, 0, 0.5);
}
【问题讨论】:
-
为什么不设置一个额外的类并在单击另一个元素时将其删除?通过这种方式,您可以在 CSS 中的额外类上设置过渡,并保持您的 HTML/CSS/JS 干净(er)。
-
@Roy 感谢您的评论!那么它将是纯 CSS3 动画而不是 jQuery 吗?你有时间做一个简单的回答来帮助我理解你的意思吗?
标签: jquery css jquery-animate