У меня есть два div, и я хочу переместить их оба одновременно: один влево, а другой вверх.
Я сделал это с помощью свойства transfom CSS и установил translateX и translateY в пикселях .
Как я могу добиться того же эффекта, если я не знаю высоту первого div? Он адаптивен в зависимости от своего содержимого.
В моем реальном проекте используется Angular, и я хочу избежать использования чистого JQuery (чистое CSS решение будет отличным!).
EDIT :
Я использую приведенный выше класс для анимации моего второго div:
.to-up {
transition-delay: .2s;
transform: translateY(-127px);
}
Я пришел к этому значению 127 пикселей с помощью этого вычисления:
div1 height + div1 margin-bottom + div1 границы.
В моем реальном случае высота div1 зависит от его содержимого, поэтому я не знаю, как анимировать div2 в верхней части его родительского элемента. Как я могу это сделать?
Вот мой HTML:
<div class="container">
<div id="item1" class="item">Test1</div>
<div id="item2" class="item">Test2</div>
</div>
Мой CSS:
.container {
width: 100%;
}
#item1 {
height: 120px;
}
#item2 {
height: 80px;
}
.item {
width: 100px;
border: 1px solid black;
margin: 5px;
transition: all .3s ease-in-out;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
}
.to-right {
transform: translateX(-107%);
}
.to-up {
transition-delay: .2s;
transform: translateY(-127px);
}
И JQuery:
$('.item').on('click', function() {
$('#item1').toggleClass('to-right');
$('#item2').toggleClass('to-up');
});
Наконец, есть код, работающий с пикселями на Jsfiddle .
Большое спасибо!