Я создал 3D-застолье. Он размещает содержимое в горизонтальном круге, который вращается по оси Y, применяя transform: rotateY
и translate
к родителю.
Проблема в том, что источник преобразования кажется смещающимся, но только при первом переходе. При последующих поворотах начало координат остается в центре, как и должно быть.
Воспроизведено в:
- Хром 38 ОС X
- Хром 38 Win7
- Файрфокс 30 ОСХ
- Сафари 7.0.6 OSX
В IE 10 (Win7) есть другая ошибка: он вращается вокруг оси x при первом переходе.
Ручка: http://codepen.io/tricki/full/BGuwo.
Нажмите «Повернуть»: исходная точка перемещается во время перехода. Нажмите «Повернуть еще раз»: исходная точка не перемещается. Нажмите «Повернуть» еще раз: исходная точка не перемещается.
Сначала я подумал, что это ошибка браузера, но тот факт, что у Firefox такая же проблема, заставил меня скептически отнестись к этому. Может ли кто-нибудь увидеть ошибку, которую я сделал, или подтвердить, что это на самом деле ошибка браузера?
HTML:
<div id="parent">
<div class="card card-1"></div>
<div class="card card-2"></div>
<div class="card card-3"></div>
<div class="card card-4"></div>
<div class="card card-5"></div>
<div class="card card-6"></div>
<div class="card card-7"></div>
<div class="card card-8"></div>
<div class="card card-9"></div>
<div class="card card-10"></div>
</div>
CSS:
#parent {
background: red;
height: 300px;
width: 300px;
margin: auto;
transform-style: preserve-3d;
transform-origin: center center -461px;
transform: translate3d(0, 0, -461px);
}
#parent.active {
transition: transform 5s linear;
transform:rotateY(-144deg) translate3d(0px, 0px, -461px);
}
#parent.active2 {
transition: transform 5s linear;
transform:rotateY(-288deg) translate3d(0px, 0px, -461px);
}
.card {
background: blue;
border: 1px solid green;
position: absolute;
backface-visibility: hidden;
opacity: .5;
height: 100%;
width: 100%;
}
.card-1 { transform: rotateY( 0deg ) translate3d(0, 0, 461px ); }
.card-2 { transform: rotateY( 36deg ) translate3d(0, 0, 461px ); }
.card-3 { transform: rotateY( 72deg ) translate3d(0, 0, 461px ); }
.card-4 { transform: rotateY( 108deg ) translate3d(0, 0, 461px ); }
.card-5 { transform: rotateY( 144deg ) translate3d(0, 0, 461px ); }
.card-6 { transform: rotateY( 180deg ) translate3d(0, 0, 461px ); }
.card-7 { transform: rotateY( 216deg ) translate3d(0, 0, 461px ); }
.card-8 { transform: rotateY( 252deg ) translate3d(0, 0, 461px ); }
.card-9 { transform: rotateY( 288deg ) translate3d(0, 0, 461px ); }
.card-10 { transform: rotateY( 324deg ) translate3d(0, 0, 461px ); }