Переключение анимации в других браузерах ведет себя совершенно иначе - PullRequest
2 голосов
/ 18 января 2020

В настоящее время я работаю над анимацией переворачивания некоторых div-ов.

Однако я обнаружил, что он работает неправильно и по-разному в каждом браузере, который я пробовал. Только Edge работает так, как я хочу.

Я хочу щелкнуть текст «перевернуть», чтобы перевернуть, чтобы показать .flipping-view-back div и скрыть .flipping-view-front div. Кроме того, панель инструментов с position:fixed на заднем элементе должна быть зафиксирована в верхней части страницы даже при прокрутке.

На самом деле, это работает только в некоторых браузерах.

В Edge: Это работает именно так, как я хочу. Видео

Вкл. Chrome: передний элемент переворачивается, но за ним нет видимого заднего элемента. Back div появляется только после того, как переход вращения полностью завершен. Как ни странно, прокрутка в любое время во время переворота также вызовет всплывающий задний div. Кроме того, прокрутка вниз перемещает фиксированный div вне поля зрения. Видео

Вкл. iOS Safari: Это правильно переворачивается, но прокрутка вниз смещает фиксированный div вне поля зрения. Видео

Во всех этих видеороликах я нажимал на всплывающий текст и ждал, пока анимация завершится sh. Затем я прокрутил вниз.

Как сделать правильную анимацию покадрового изображения и сохранить фиксированный div вверху во всех браузерах?

var currView = 0;
const rotatingViewElem = document.querySelector(".main");
const VIEW_FEED = 0;
const VIEW_FLIPPING_SEND = 1;

var viewFeedElem = document.querySelector(".view-positioner.feed");
var viewCreateElem = document.querySelector(".view-positioner.create");
var viewSelectRecipientsElem = document.querySelector(".view-positioner.select-recipients");
var viewFlippingSendElem = document.querySelector(".view-positioner.flipping-send");
var viewsList = [viewFlippingSendElem];

function flipView(isGoForward) {
    var flippingElem = viewsList[currView];
    var globalRotate;

    if (isGoForward) {
        globalRotate = "rotateY(180deg)";//flip around
    } else {
        globalRotate = "rotateY(0deg)";
    }
    flippingElem.style.transform = globalRotate;

}

document.querySelector(".create-send-button").addEventListener("click", function (e) { flipView(true) })
body, html{
    width:100%;
    height:100%;
    margin:0px;
    overflow:hidden;
}
.main{
    perspective: 2000px;
    height:100%;
}
.flipping-view-wrapper{
    
    transform: rotateY(0);
    transform-style: preserve-3d;
    transition: transform 5.5s;
}
body{
    height: 100%;
}
.view{
    transform-style: preserve-3d;
    position: relative;
    padding-top:1px;
    overflow-y:auto;
    height: calc(100% - 1px);
    width:100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

.view-positioner{

    position: absolute;
    left:0px;
    top:0px;
    width:100%;
    height:100%;
}

.flipping-view-front{
    background-color: pink;
    transform: rotateY(0deg);
}
.flipping-view-back{
    background-color: green;
    transform:rotateY(180deg);
}
.create-send-button{
    cursor: pointer;
}

/* begin top toolbar */
.top-toolbar{
    position:fixed;
    
    top:0px;
    left:0px;
    width:100%;
    height:55px;
    background:#FFFB00;
}
<!DOCTYPE html>
<html>

<body class="lightblue">
<div class="main">

	<div class="view-positioner flipping-send flipping-view-wrapper lightblue ">
		<div class="view-positioner view create flipping-view-front">

			<div class="create-inputs center">


				<div class="create-send-button" style="font-size: 50px;">
					flip to the backside this is long so you can see
				</div>

			</div>
		</div>
		<div class="view-positioner view select-recipients lightblue flipping-view-back">
			<div class="top-toolbar">
				fixed
			</div>
			<div style="width:10px">Long text a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
				a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a</div>
		</div>
	</div>
</div>


</body>

</html>

1 Ответ

0 голосов
/ 18 января 2020

Может иметь отношение к самим браузерам, возможно, загляните в -webkit. Существуют веб-комплекты для разных браузеров, поэтому вам может понадобиться использовать несколько веб-комплектов для разных браузеров

Что такое WebKit и как он связан с CSS?

Эта запись может дать вам больше информации

...