Я строю веб-страницу с сеткой изображений, и когда пользователь нажимает на изображение, прозрачный слой скользит вверх с анимацией с некоторой информацией об изображении. Это отлично работает со сценарием, который я сделал ниже.jQuery анимировать вверх и вниз
Но мне нужно улучшить его, потому что, когда пользователь нажимает на второе изображение, слой прозрачности prevoius должен скользить назад, и это также работает, но если пользователь нажмет на один слой, анимация просто сдвинется а затем сдвиньте вниз. Мой вопрос в том, можно ли улучшить мой скрипт, чтобы справиться с этим.
Мой второй вопрос заключается в том, что скрипт начинается с слайда вниз, если какой-либо слой уже открыт, но влияет ли это на теги 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 clean (er). – Roy
@Roy Спасибо за ваш комментарий! Тогда это будет чистая анимация CSS3, а не jQuery? У вас есть время, чтобы сделать простой ответ, чтобы помочь мне понять, что вы имеете в виду? –