Я работаю над приложением html5, где у меня есть фиксированный заголовок и фиксированный нижний колонтитул.
Когда я нажимаю на нижний колонтитул, он должен выдвигаться вверх, пока он не окажется на расстоянии 10 пикселей от заголовка.
То же самое должно произойти и для заголовка.
<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>
CSS для макета по умолчанию прост: я просто использую абсолютное позиционирование сверху и снизу.
.header, .footer {
min-height:25px;
background:grey;
position:absolute;
left:0;
z-index:5;
/** transition **/
transition: all 1s;
}
.header {
top:0;
background:red;
}
.footer {
bottom:0;
background:yellow;
}
.header.max {
bottom:35px;
}
.footer.max {
top:35px;
}
Это не касается части анимации. Я не хочу использовать анимацию Javascript! ТОЛЬКО CSS! Если вы нажмете на верхний или нижний колонтитул, я просто добавлю класс max
в элемент:
$(".header, .footer, .content").on("click", function () {
$(".max").removeClass("max");
$(this).addClass("max");
});
Анимация должна выглядеть так, как нижний колонтитул расширяется снизу.
Я создал JS-Fiddle. Вы можете видеть, что проблема связана с верхним и нижним позиционированием нижнего колонтитула/заголовка.
Кто-нибудь знает, как это исправить, чтобы анимация выглядела так, как нижний колонтитул расширяется со дна?
Благодарю!
Элементы перехода должны быть установлены на высоту для более плавных эффектов анимации. В моем примере у меня есть анимация заголовка и нижнего колонтитула, установленная на 300 пикселей, вам нужно изменить это с помощью JS для обновления класса = "max" с помощью window.height() или чего-то подобного.
Одним из способов решения вашего требования 10px является onload get window.height() минус 10px, а затем обновить class= "max" с конечным результатом.
Что я изменил в CSS:
.header, .footer {
min-height:25px;
background:grey;
position:absolute;
left:0;
z-index:5;
/** transition **/
transition:height 2s;
-webkit-transition:height 2s; /* Safari */
}
.header.max {
height:300px;
}
.footer.max {
height:300px;
}