Я пытаюсь создать div, который будет выглядеть как поле, а затем автоматически поворачивается, чтобы отображать в нем разные тексты.CSS 3D Box rotation
эффект в вопросе, как показано в «Рататуй», «вялость», кнопки «журчащий», палимпсест»&„Сборки“на странице: http://tympanus.net/Development/CreativeLinkEffects/
я использовать код из предыдущего проект написан кем-то другим (автор неизвестен).
У меня есть куб DIV, с 4-мя панелями в нем, и первые 2 панели отмечены начальную панель и следующую панель
<div class="cube flip-to-bottom">
<div class="initialpanel"><span>1st Panel</span></div>
<div class="nextpanel"><span>2nd Panel</span></div>
<div><span>3rd Panel</span></div>
<div><span>4th Panel</span></div>
</div>
как стилизованную
.initialpanel {
-webkit-transform: translateZ(25px);
-moz-transform: translateZ(25px);
-o-transform: translateZ(25px);
-ms-transform: translateZ(25px);
transform: translateZ(25px);
}
.nextpanel {
-webkit-transform: rotateX(-90deg) translateZ(-25px);
-moz-transform: rotateX(-90deg) translateZ(-25px);
-o-transform: rotateX(-90deg) translateZ(-25px);
-ms-transform: rotateX(-90deg) translateZ(-25px);
transform: rotateX(-90deg) translateZ(-25px);
}
и, наконец, класс, который позволяет переворачивать на куб div
.flipNow {
-webkit-transform: rotateX(89deg);
-moz-transform: rotateX(89deg);
-o-transform: rotateX(89deg);
-ms-transform: rotateX(89deg);
transform: rotateX(89deg);
}
Связывание этих двух вместе - это мой javascript, который будет проходить через куб e's children div, переименование каждой итерации для анимации с использованием CSS.
function startRotating(currentIndex) {
current = $(".cube >div.initialpanel");
nextCurrent = current.next();
next = $(".cube >div.nextpanel");
nextNext = next.next();
var flipNow = setTimeout(function(){
$(".cube").addClass("flipNow");
}, 2000);
var stopFlip = setTimeout(function(){
$(".cube").removeClass("flipNow");
current.removeClass("initialpanel");
next.addClass("initialpanel");
next.removeClass("nextpanel");
nextNext.addClass("nextpanel");
}, 3000);
setTimeout(function(){
if(nextNext.length ===1){
startRotating($("div.initialpanel"));
}
},4000);
}
Этот код должен повернуть панель 1 и шоу-панель 2, и вращать панель 2 и показать панель 3, и вращать панель 3 и показать панель 4 и остановки после того, как панель 4, как нет больше панелей.
Вращение и откровения происходят так, как ожидалось, но из-за удаления класса flipNow и переименования дочерних классов div флип возвращается в исходное положение и затем поворачивается в новое положение. Это ссылка, в которой находится рабочая копия моей проблемы: http://jsfiddle.net/fatgamer85/m71osbLt/4/
Любая помощь будет оценена, которая поможет мне остановить двойное вращение на каждой панели.
Благодаря
Привет Раду, спасибо за решение. Я начал делать анимацию Nsided, но потерялся по линиям. Из кода я вижу, что каждый div уже на -90deg изначально, а когда нормализуется, он перемещается до 0дега, который является анимацией для переключения; и когда верхний слой добавляется, он далее вращается на 90 градусов? Я не знаю, как это работает, но это так. Спасибо за ответ, простой и в то же время блестящий! – rand0m
@ rand0m Да, вы хорошо поняли - есть 3 этапа: -90,0,90 (кроме начального слоя, который имеет только два 0,90). Мысль за этим соглашением заключалась в том, что я понятия не имел, хотите ли вы использовать его для куба или что-то похожее на стек с несколькими слоями, где вы хотели эмулировать вращение куба. Надеюсь, это вам помогло. –