#javascript #html #css #safari #mobile-safari
Вопрос:
Идея, которую я хочу, состоит в том, чтобы кнопка была смещена от родительской, чтобы при ее нажатии карта переворачивалась. Я сделал анимацию «откидной карты» работающей в Chrome, но в Safari(Мобильная IOS), похоже, произошел «сбой» с анимацией, когда кнопка на мгновение «отключается», что делает анимацию не такой, как я хочу (работает так, как задумано в Chrome). Я добавил префикс «—webkit-» к правилам CSS, благодаря которым анимация несколько заработала. Что-нибудь я пропустил?
window.onload = function() {
FlipperBtns = document.getElementsByClassName('flipper');
Array.from(FlipperBtns).forEach(function(element) {
element.addEventListener('click', function() {
element.parentNode.getElementsByClassName('flip-container')[0].classList.toggle('is-flipped');
}, false);
});
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body,
html {
height: 100%;
}
.flipping-frame-container {
position: relative;
margin: auto;
margin-bottom: 15px;
width: 300px;
height: 300px;
background-color: pink;
border: orange solid 2px;
}
.flipper {
width: 60px;
height: 60px;
background-color: blue;
border-radius: 50%;
position: absolute;
bottom: -30px;
right: -30px;
border: orange solid 2px;
z-index: 4;
}
.flip-container {
display: inline-block;
width: 100%;
height: 100%;
perspective: 1000;
-webkit-perspective: 1000;
transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
transition: 0.6s;
-webkit-transition-delay: 60ms;
position: relative;
}
.is-flipped .front {
transform: rotateY(180deg);
--webkit-transform: rotateY(180deg);
backface-visibility: hidden;
--webkit-backface-visibility: hidden;
}
.is-flipped .back {
transform: rotateY(0deg);
--webkit-transform: rotateY(0deg);
}
.front,
.back {
width: 100%;
height: 100%;
background-color: white;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transition: 0.6s;
transition: 0.6s;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
position: absolute;
top: 0;
left: 0;
}
.front {
z-index: 2;
-webkit-transform: rotateY(0deg);
transform: rotateY(0deg);
}
.back {
-webkit-transform: rotateY(-180deg);
transform: rotateY(-180deg);
}
<div class="flipping-frame-container">
<div class="flipper"></div>
<div class="flip-container">
<div class="front">Front</div>
<div class="back">Back</div>
</div>
</div>
Комментарии:
1. В двух ваших классах css вы использовали —webkit вместо-webkit. В этом может быть проблема. пожалуйста, проверьте. У меня есть только chrome, поэтому я не могу это подтвердить, потому что он отлично работает для меня.
2. Я думаю, что также перспектива нуждается в настройке единицы измерения, но исправление обоих из них не устраняет проблему.
3. @AHaworth спасибо, что поймали их. Я все еще пытаюсь отладить. Я исправил обе проблемы, а также нашел третью «—webkit», но она все еще не решена.