<div class="scene">
<div class="level level-1 active">
<div class="rotater">
<div class="elem active">
<div class="inner inner-1">
<img class="bg1-top"
src="https://static.tildacdn.com/tild6362-3366-4036-b832-353462353436/Rectangle_298.png"
alt="img">
<div class="bg1-color">
<h2 class="h2-slide">Цифровизация <br>пространств</h2>
<h3 class="h3-slide">Высокотехнологичные<br>решения в традиционных<br>отраслях бизнеса</h3>
<img class="absolute-img"
src="https://static.tildacdn.com/tild6562-6163-4734-b261-376138313432/Mask_group_4.svg"
alt="img">
</div>
</div>
</div>
<div class="elem">
<div class="inner inner-2">
<img class="bg1-top2"
src="https://static.tildacdn.com/tild3664-6662-4034-b734-373965616630/KIM_4768.jpg"
alt="img">
<div class="bg1-color2">
<h2 class="h2-slide2">Инновационные<br>технологии</h2>
<h3 class="h3-slide2">Только самые передовые<br>и новые технологические<br>решения для
вашего
бизнеса</h3>
</div>
</div>
</div>
<div class="elem">
<div class="inner inner-3">
<img class="bg1-top"
src="https://static.tildacdn.com/tild6139-3665-4830-a561-643465646431/KIM_4688.jpg"
alt="img">
<div class="bg1-color">
<h2 class="h2-slide">Интерактивное<br>взаимодействие</h2>
<h3 class="h3-slide">Новшества, позволяющие<br>прочувствовать пространство<br>в
полноразмерном масштабе</h3>
</div>
</div>
</div>
<div class="elem">
<div class="inner inner-4">
<img class="bg1-top2" id="bg1-top"
src="https://static.tildacdn.com/tild3831-3830-4435-a436-626265616232/IMG_9698.jpg"
alt="img">
<div class="bg1-color2">
<h2 class="h2-slide2">За цифровизацией<br>стоит будущее</h2>
<h3 class="h3-slide2">Мы идем в ногу со временем<br>и одни из первых применяем<br>современные технологии</h3>
</div>
</div>
</div>
</div>
</div>
</div>
<img id=flower class="move1" src="https://static.tildacdn.com/tild3864-3566-4163-b434-653562613061/-_1.png" alt="img">
<a href="http://art-space.pro/projects" class="btn-slide" target="_blank">Смотреть проекты</a>
<div class="nav-bot">
<span class="nav-bot__btn left" id="left"></span>
<span class="nav-bot__btn right"></span>
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/main.js"></script>
/*
* Prefixed by https://autoprefixer.github.io
* PostCSS: v8.4.14,
* Autoprefixer: v10.4.7
* Browsers: last 4 version
*/
/*
* Prefixed by https://autoprefixer.github.io
* PostCSS: v8.4.14,
* Autoprefixer: v10.4.7
* Browsers: last 4 version
*/
@font-face {
font-family: 'Micra';
src: url('https://static.tildacdn.com/tild3462-6536-4262-b330-383763663761/Micra.woff') format('woff');
font-weight: 800;
font-style: normal
}
@font-face {
font-family: 'Geometria';
src: url('https://static.tildacdn.com/tild3135-3831-4438-b730-336232613165/GeometriaRegular.woff') format('woff');
font-weight: 400;
font-style: normal
}
*,
*:before,
*:after {
box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: 'Micra', arial;
}
html,
body {
height: 100%;
overflow: hidden;
}
a{
text-decoration: none;
}
@media (max-width: 992px) {
html,
body {
font-size: 50%;
}
}
body {
background-image: url("https://static.tildacdn.com/tild6465-3261-4639-a461-336263303666/Group_8.svg");
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
}
.shake {
animation: shake 0.5s infinite;
animation: shake 0.5s infinite;
}
.instant-transition {
transition: 0s 0s !important;
transition: 0s 0s !important;
transition: 0s 0s !important;
}
.scene {
z-index: 1;
position: relative;
height: 100%;
perspective: 100vw;
perspective: 100vw;
}
.scene.content-visible {
z-index: 11;
}
.level {
z-index: 2;
position: absolute;
left: 0;
width: 100%;
height: 100%;
transition: transform 0.8s;
transition: transform 0.8s;
transition: transform 0.8s;
transition: transform 0.8s;
transition: transform 0.8s, transform 0.8s;
transform-style: preserve-3d;
transform-style: preserve-3d;
}
.level.level-1 {
top: 0%;
}
/*
originally .rotater was 80% width and 100% height and all was ok
until i checked demo in FF...
i even tried SO http://stackoverflow.com/questions/28751990/firefox-bug-with-multiple-nested-z-index-elements-and-preserve-3d
but then i came up with hack. I made .rotater 2px width/height and placed child element with vw/vh units and negative left/top. At least now it works in FF
*/
.rotater {
z-index: 3;
position: absolute;
top: 50%;
left: 50%;
width: 2px;
height: 2px;
transition: transform 1s;
transition: transform 1s;
transition: transform 1s;
transition: transform 1s;
transition: transform 1s, transform 1s;
transform-style: preserve-3d;
transform-style: preserve-3d;
}
.elem {
z-index: 4;
position: absolute;
top: calc(-50vh - 1px);
left: calc(-55vw - 1px);
width: calc(110vw + 2px);
height: calc(100vh + 2px);
transition: transform 1s;
transition: transform 1s;
transition: transform 1s;
transition: transform 1s;
transition: transform 1s, transform 1s;
backface-visibility: hidden;
backface-visibility: hidden;
font-size: 5rem;
text-align: center;
transform-style: preserve-3d;
transform-style: preserve-3d;
}
.elem.full-screen {
left: calc(-50vw - 1px);
width: calc(100vw + 2px);
}
.elem.content-visible .inner {
z-index: 20;
}
.elem.content-visible .inner .art-fullName {
transform: scale(1);
transform: scale(1);
transform: scale(1);
}
.elem:not(.active):hover {
cursor: pointer;
}
.elem:nth-child(1) {
transform: rotateY(0deg) translateZ(-90vw);
transform: rotateY(0deg) translateZ(-90vw);
}
.elem:nth-child(2) {
transform: rotateY(-60deg) translateZ(-90vw);
transform: rotateY(-60deg) translateZ(-90vw);
}
.elem:nth-child(3) {
transform: rotateY(-120deg) translateZ(-90vw);
transform: rotateY(-120deg) translateZ(-90vw);
}
.elem:nth-child(4) {
transform: rotateY(-180deg) translateZ(-90vw);
transform: rotateY(-180deg) translateZ(-90vw);
}
.elem:nth-child(5) {
transform: rotateY(-240deg) translateZ(-90vw);
transform: rotateY(-240deg) translateZ(-90vw);
}
.elem:nth-child(6) {
transform: rotateY(-300deg) translateZ(-90vw);
transform: rotateY(-300deg) translateZ(-90vw);
}
.inner {
z-index: 5;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #EEEEEE;
transition: transform 0.3s;
transition: transform 0.3s;
transition: transform 0.3s;
transition: transform 0.3s;
transition: transform 0.3s, transform 0.3s;
box-shadow: 1.2rem 2rem 2rem rgba(0, 0, 0, 0.3);
box-shadow: 1.2rem 2rem 2rem rgba(0, 0, 0, 0.3);
}
.inner.inner-1 {
background-image: url("https://static.tildacdn.com/tild3239-3964-4161-a337-336465663833/AdobeStock_367775956.jpeg");
background-size: contain;
background-repeat: no-repeat;
background-position: center right;
}
.inner.inner-2 {
background-image: url("https://static.tildacdn.com/tild6333-3630-4534-a231-666262656533/KIM_4757.jpg");
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
}
.inner.inner-3 {
background-image: url("https://static.tildacdn.com/tild3637-3466-4139-b637-626163613831/KIM_4729-0.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
}
.inner.inner-4 {
background-image: url("https://static.tildacdn.com/tild6562-6634-4338-b166-663062653066/noroot_3_2.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
}
.bg1-top {
position: absolute;
width: 50%;
height: 35vh;
top: -1px;
left: 0;
opacity: 0;
}
.bg1-top2 {
position: absolute;
width: 50%;
height: 35vh;
top: -1px;
right: 0;
opacity: 1;
}
.bg1-color2 {
background-color: #197E73;
width: 50%;
height: 67vh;
position: absolute;
bottom: -0.5px;
right: 0;
z-index: 10000;
opacity: 1;
}
.bg1-color {
background-color: #37AFA1;
width: 50%;
height: 67vh;
position: absolute;
bottom: -0.5px;
left: 0;
z-index: 10000;
opacity: 0;
}
.h2-slide {
position: absolute;
left: 12vw;
top: 45px;
font-family: 'Micra', arial;
width: 320px;
font-weight: 400;
font-size: 32px;
line-height: 140%;
text-transform: uppercase;
color: #FFFFFF;
}
.h3-slide {
position: absolute;
left: 17vw;
top: 150px;
font-family: 'Geometria', arial;
font-style: normal;
font-weight: 400;
font-size: 22px;
line-height: 29px;
color: #FFFFFF;
text-align: left;
}
.h2-slide2 {
position: absolute;
right: 12vw;
top: 45px;
font-family: 'Micra', arial;
width: 500px;
font-weight: 400;
font-size: 32px;
line-height: 140%;
text-transform: uppercase;
color: #FFFFFF;
text-align: left;
}
.h3-slide2 {
position: absolute;
right: 20.5vw;
top: 150px;
font-family: 'Geometria', arial;
font-style: normal;
font-weight: 400;
font-size: 22px;
line-height: 29px;
color: #FFFFFF;
text-align: left;
}
@-webkit-keyframes elem {
from {
top: -30vh;
}
20% {
top: -20vh;
}
40% {
top: -15vh;
}
60% {
top: -15vh;
}
80% {
top: -20vh;
}
to {
top: -30vh;
}
}
@keyframes elem {
from {
top: -30vh;
}
20% {
top: -20vh;
}
40% {
top: -15vh;
}
60% {
top: -15vh;
}
80% {
top: -20vh;
}
to {
top: -30vh;
}
}
@-webkit-keyframes move {
100% {
transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes move {
100% {
transform: rotate(360deg);
transform: rotate(360deg);
}
}
.absolute-img {
position: absolute;
top: 0vh;
left: 70vw;
animation: elem 15s infinite linear, move 10s infinite linear;
animation: elem 15s infinite linear, move 10s infinite linear;
transition: 0.2s all;
transition: 0.2s all;
transition: 0.2s all;
}
@-webkit-keyframes slideInLeft {
0% {
transform: translateX(-100%);
transform: translateX(-100%);
opacity: 0;
}
50% {
transform: translateX(-50%);
transform: translateX(-50%);
opacity: 0;
}
100% {
transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
}
@keyframes slideInLeft {
0% {
transform: translateX(-100%);
transform: translateX(-100%);
opacity: 0;
}
50% {
transform: translateX(-50%);
transform: translateX(-50%);
opacity: 0;
}
100% {
transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
}
@-webkit-keyframes slideInRight {
0% {
transform: translateX(100%);
transform: translateX(100%);
opacity: 0;
}
50% {
transform: translateX(50%);
transform: translateX(50%);
opacity: 0;
}
100% {
transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
}
@keyframes slideInRight {
0% {
transform: translateX(100%);
transform: translateX(100%);
opacity: 0;
}
50% {
transform: translateX(50%);
transform: translateX(50%);
opacity: 0;
}
100% {
transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
}
@-webkit-keyframes slideInLeft1 {
0% {
transform: translateX(-180%);
transform: translateX(-180%);
}
100% {
transform: translateX(0);
transform: translateX(0);
}
}
@keyframes slideInLeft1 {
0% {
transform: translateX(-180%);
transform: translateX(-180%);
}
100% {
transform: translateX(0);
transform: translateX(0);
}
}
@-webkit-keyframes slideInRight1 {
0% {
transform: translateX(180%);
transform: translateX(180%);
}
100% {
transform: translateX(0);
transform: translateX(0);
}
}
@keyframes slideInRight1 {
0% {
transform: translateX(180%);
transform: translateX(180%);
}
100% {
transform: translateX(0);
transform: translateX(0);
}
}
.move1 {
position: absolute;
z-index: 40;
width: 300px;
bottom: 5vh;
right: 15vw;
animation-name: slideInRight1;
animation-name: slideInRight1;
animation-delay: 1s;
animation-delay: 1s;
animation-duration: 2s;
animation-duration: 2s;
animation-fill-mode: both;
animation-fill-mode: both;
}
.move {
position: absolute;
z-index: 40;
width: 300px;
bottom: 5vh;
left: 15vw;
transition: 2s;
transition: 2s;
transition: 2s;
animation-name: slideInLeft1;
animation-name: slideInLeft1;
animation-delay: 1s;
animation-delay: 1s;
animation-duration: 2s;
animation-duration: 2s;
animation-fill-mode: both;
animation-fill-mode: both;
}
.btn-slide {
display: block;
position: absolute;
bottom: 28vh;
left: 25vw;
width: 260px;
height: 65px;
border: 2px solid #FFFFFF;
background-color: none;
border-radius: 9px;
font-family: 'Geometria', sans-serif;
font-size: 14px;
letter-spacing: 0.055em;
font-weight: 600;
text-align: center;
color: #FFFFFF;
text-transform: uppercase;
padding-top: 22px;
transition: 0.2s all;
transition: 0.2s all;
transition: 0.2s all;
cursor: pointer;
z-index: 30;
box-sizing: border-box;
box-sizing: border-box;
transition: 0.3s all;
transition: 0.3s all;
transition: 0.3s all;
animation-name: slideInLeft;
animation-name: slideInLeft;
animation-duration: 2s;
animation-duration: 2s;
animation-fill-mode: both;
animation-fill-mode: both;
}
.btn-slide1 {
display: block;
position: absolute;
bottom: 28vh;
left: auto;
right: 24vw;
width: 260px;
height: 65px;
border: 2px solid #fff;
background-color: none;
border-radius: 9px;
font-family: 'Geometria', sans-serif;
font-size: 14px;
letter-spacing: 0.055em;
font-weight: 600;
text-align: center;
color: #FFFFFF;
text-transform: uppercase;
padding-top: 22px;
transition: 0.2s all;
transition: 0.2s all;
transition: 0.2s all;
cursor: pointer;
z-index: 30;
box-sizing: border-box;
box-sizing: border-box;
transition: 0.3s all;
transition: 0.3s all;
transition: 0.3s all;
animation-name: slideInRight;
animation-name: slideInRight;
animation-duration: 2s;
animation-duration: 2s;
animation-fill-mode: both;
animation-fill-mode: both;
}
.btn-slide:hover {
cursor: pointer;
background-color: #197E73;
border: 2px solid #197E73;
transition: 0.2s all;
transition: 0.2s all;
transition: 0.2s all;
}
.btn-slide1:hover {
cursor: pointer;
background-color: #37AFA1;
border: 2px solid #37AFA1;
transition: 0.2s all;
transition: 0.2s all;
transition: 0.2s all;
}
.inner.clicked {
transform: translateZ(15vw);
transform: translateZ(15vw);
}
.inner.clicked .art-heading {
transform: scale(0.01);
transform: scale(0.01);
transform: scale(0.01);
}
.inner.clicked .art-btn {
transform: translateX(-50%) translateY(-50%) scale(0.01);
transform: translateX(-50%) translateY(-50%) scale(0.01);
transform: translateX(-50%) translateY(-50%) scale(0.01);
}
.nav-bot {
z-index: 10;
position: fixed;
width: 100%;
bottom: 5rem;
left: 0;
transition: transform 0.2s cubic-bezier(0.72, 0.17, 0.68, 1.46);
transition: transform 0.2s cubic-bezier(0.72, 0.17, 0.68, 1.46);
transition: transform 0.2s cubic-bezier(0.72, 0.17, 0.68, 1.46);
transition: transform 0.2s cubic-bezier(0.72, 0.17, 0.68, 1.46);
transition: transform 0.2s cubic-bezier(0.72, 0.17, 0.68, 1.46), transform 0.2s cubic-bezier(0.72, 0.17, 0.68, 1.46);
text-align: center;
}
@media (max-width: 992px) {
.nav-bot {
bottom: 0.2rem;
}
}
.nav-bot.inactive {
transform: scale(0.01);
transform: scale(0.01);
transform: scale(0.01);
}
.nav-bot span {
display: inline-block;
}
.nav-bot__btn {
position: absolute;
width: 150px;
height: 550px;
/* width: 10px;
height: 13px;
border: 0.2rem solid #fff;
border-left: none;
border-bottom: none;
-webkit-transition: border-color 0.3s;
-o-transition: border-color 0.3s;
transition: border-color 0.3s;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;*/
}
.nav-bot__btn.left {
background-image: url("https://static.tildacdn.com/tild3234-3731-4364-b866-353232383061/Frame_11.svg");
background-repeat: no-repeat;
background-size: contain;
background-position: center center;
left: 13vw;
bottom: 0;
transition: 0.4s all;
transition: 0.4s all;
transition: 0.4s all;
}
.nav-bot__btn.right {
background-image: url("https://static.tildacdn.com/tild3735-3865-4465-a662-346565353466/Frame_10.svg");
background-repeat: no-repeat;
background-size: contain;
background-position: center center;
right: 13vw;
bottom: 0;
transition: 0.4s all;
transition: 0.4s all;
transition: 0.4s all;
}
.nav-bot__btn.left:hover {
transition: 0.4s all;
transition: 0.4s all;
transition: 0.4s all;
}
.nav-bot__btn.right:hover {
transition: 0.4s all;
transition: 0.4s all;
transition: 0.4s all;
}
.nav-bot__pagi {
position: relative;
width: 2.5rem;
height: 2.5rem;
border: 4px solid #fff;
border-radius: 50%;
margin: 0 0.2rem;
transition: border-color 0.3s, background-color 0.3s;
transition: border-color 0.3s, background-color 0.3s;
transition: border-color 0.3s, background-color 0.3s;
cursor: pointer;
}
.nav-bot__pagi:hover {
border-color: #F44336;
}
.nav-bot__pagi.active {
background: #fff;
}
@-webkit-keyframes shake {
5% {
transform: translateX(-1%) translateY(1%);
transform: translateX(-1%) translateY(1%);
}
15% {
transform: translateX(1%) translateY(-1%);
transform: translateX(1%) translateY(-1%);
}
25% {
transform: translateX(-1%) translateY(-1%);
transform: translateX(-1%) translateY(-1%);
}
35% {
transform: translateX(1%) translateY(1%);
transform: translateX(1%) translateY(1%);
}
45% {
transform: translateX(-1%) translateY(1%);
transform: translateX(-1%) translateY(1%);
}
55% {
transform: translateX(1%) translateY(-1%);
transform: translateX(1%) translateY(-1%);
}
65% {
transform: translateX(-1%) translateY(-1%);
transform: translateX(-1%) translateY(-1%);
}
75% {
transform: translateX(1%) translateY(1%);
transform: translateX(1%) translateY(1%);
}
85% {
transform: translateX(-1%) translateY(1%);
transform: translateX(-1%) translateY(1%);
}
95% {
transform: translateX(1%) translateY(-1%);
transform: translateX(1%) translateY(-1%);
}
}
@keyframes shake {
5% {
transform: translateX(-1%) translateY(1%);
transform: translateX(-1%) translateY(1%);
}
15% {
transform: translateX(1%) translateY(-1%);
transform: translateX(1%) translateY(-1%);
}
25% {
transform: translateX(-1%) translateY(-1%);
transform: translateX(-1%) translateY(-1%);
}
35% {
transform: translateX(1%) translateY(1%);
transform: translateX(1%) translateY(1%);
}
45% {
transform: translateX(-1%) translateY(1%);
transform: translateX(-1%) translateY(1%);
}
55% {
transform: translateX(1%) translateY(-1%);
transform: translateX(1%) translateY(-1%);
}
65% {
transform: translateX(-1%) translateY(-1%);
transform: translateX(-1%) translateY(-1%);
}
75% {
transform: translateX(1%) translateY(1%);
transform: translateX(1%) translateY(1%);
}
85% {
transform: translateX(-1%) translateY(1%);
transform: translateX(-1%) translateY(1%);
}
95% {
transform: translateX(1%) translateY(-1%);
transform: translateX(1%) translateY(-1%);
}
}
@-webkit-keyframes shine {
to {
transform: skewX(-30deg) translateX(600%);
transform: skewX(-30deg) translateX(600%);
}
}
@keyframes shine {
to {
transform: skewX(-30deg) translateX(600%);
transform: skewX(-30deg) translateX(600%);
}
}
$(document).ready(function () {
var $levels = $(".level"),
numOfLevels = $levels.length,
curLevel = 1,
$curLevel = $(".level.active"),
$levelPagi = $(".level-pagi"),
$elems = $curLevel.find(".elem"),
numOfPages = $elems.length,
curPage = 1,
$rotater = $curLevel.find(".rotater"),
stepAngle = 360 / numOfPages,
$botPagi = $(".nav-bot__pagi"),
$navBot = $(".nav-bot"),
SCENEPERS = 200,
MULTI_Z = 13,
LEVELANIM = 1000,
SIDEANIM = 500,
animating = false;
function placeElems() {
$levels.each(function () {
var $elems = $(this).find(".elem"),
len = $elems.length,
angle = 360 / len,
ELEM_Z = len * MULTI_Z;
$(this).attr("data-elemZ", ELEM_Z);
$elems.each(function (i) {
$(this).css("transform", "rotateY(" + (0 - i * angle) + "deg) translateZ(" + (0 - ELEM_Z) + "vw)");
});
});
}
placeElems();
function recreateBottomNav() {
$(".nav-bot__pagi").remove();
var newPagi = [];
for (var i = 1; i <= numOfPages; i++) {
var $botPagiEl = $("<span class='nav-bot__pagi' data-page='" + i + "'></span>"),
activeEl = +$curLevel.attr("data-curpage") || 1;
if (i === activeEl) $botPagiEl.addClass("active");
newPagi.push($botPagiEl);
}
$(".nav-bot__btn.left").after(newPagi);
$botPagi = $(".nav-bot__pagi");
}
function redefineVars() {
$curLevel = $(".level.active");
$elems = $curLevel.find(".elem");
numOfPages = $elems.length;
curPage = $curLevel.find(".elem.active").index() + 1 || 1;
$rotater = $curLevel.find(".rotater");
stepAngle = 360 / numOfPages;
}
function changeLevel() {
$(".level").removeClass("active");
$(".level-" + curLevel).addClass("active");
$navBot.addClass("inactive");
animating = true;
setTimeout(function () {
redefineVars();
recreateBottomNav();
$levels.css("transform", "translate3d(0," + (0 - (curLevel - 1) * 150) + "%,0)");
$levelPagi.css("transform", "translate3d(0," + (0 - (curLevel - 1) * 100) + "%,0)");
setTimeout(function () {
$navBot.removeClass("inactive");
}, 600);
}, 200);
setTimeout(function () {
animating = false;
}, LEVELANIM);
}
function navigateUp() {
if (curLevel > 1) {
curLevel--;
changeLevel();
}
}
function navigateDown() {
if (curLevel < numOfLevels) {
curLevel++;
changeLevel();
}
}
function sideNavigation(directPage) {
if (directPage) {
var diff = Math.abs(directPage - curPage),
dirRight = directPage > curPage,
curAngle = +$rotater.attr("data-angle") || 0;
if (dirRight && diff > numOfPages / 2) {
dirRight = false;
diff = numOfPages - diff;
} else if (!dirRight && diff > numOfPages / 2) {
dirRight = true;
diff = numOfPages - diff;
}
var nextAngle = (dirRight) ? curAngle + stepAngle * diff : curAngle - stepAngle * diff;
curPage = directPage;
$rotater.attr("data-angle", nextAngle).css("transform", "rotateY(" + nextAngle + "deg)");
}
$elems.removeClass("active");
$elems.eq(curPage - 1).addClass("active");
$botPagi.removeClass("active");
$botPagi.eq(curPage - 1).addClass("active");
$curLevel.attr("data-curpage", curPage);
animating = true;
setTimeout(function () {
animating = false;
}, SIDEANIM);
}
function navigateLeft() {
var curAngle = +$rotater.attr("data-angle") || 0,
nextAngle = curAngle - stepAngle;
$rotater.attr("data-angle", nextAngle).css("transform", "rotateY(" + nextAngle + "deg)");
(curPage > 1) ? curPage-- : curPage = numOfPages;
sideNavigation();
}
function navigateRight() {
var curAngle = +$rotater.attr("data-angle") || 0,
nextAngle = curAngle + stepAngle;
$rotater.attr("data-angle", nextAngle).css("transform", "rotateY(" + nextAngle + "deg)");
(curPage < numOfPages) ? curPage++ : curPage = 1;
sideNavigation();
}
var winW = $(window).width(),
winH = $(window).height(),
pathD,
pathDCopy,
bigArr = [],
path,
rndArr,
$pickedElem,
pickedZ;
function range(n) {
return Array.apply(null, {
length: n
}).map(Number.call, Number);
}
function createSvg($el, points) {
var $el = $el,
points = points,
bgColor = $el.css("background-color"),
elW = $el.width(),
elH = $el.height(),
minW = (winW - elW) / 2,
maxW = winW - minW,
minH = (winH - elH) / 2,
maxH = (winH - minH),
pps = Math.round(points / 4), // POINTS PER SIDE
stepW = elW / pps,
stepH = elH / pps,
bigStepW = winW / pps,
bigStepH = winH / pps,
arr = [],
$svg = $("<svg class='svg-matter'><path fill='" + bgColor + "' /></svg>");
rndArr = range(pps * 4);
if (pps > 1) {
for (var i = 0; i < pps; i++) {
arr[i] = (minW + stepW * i) + "," + minH;
bigArr[i] = (bigStepW * i) + ",0";
arr[i + pps] = maxW + "," + (minH + stepH * i);
bigArr[i + pps] = winW + "," + (bigStepH * i);
arr[i + pps * 2] = (maxW - stepW * i) + "," + maxH;
bigArr[i + pps * 2] = (winW - bigStepW * i) + "," + winH;
arr[i + pps * 3] = minW + "," + (maxH - stepH * i);
bigArr[i + pps * 3] = "0," + (winH - bigStepH * i);
}
}
arr[0] = "M" + arr[0];
bigArr[0] = "M" + bigArr[0];
pathDCopy = arr;
pathD = arr.join(" ");
$svg.find("path").attr("d", pathD);
$("body").append($svg);
return $svg;
}
function newD(points, p) {
var arr = points.split(" ");
arr[p] = bigArr[p];
return arr.join(" ");
}
function animateLoop(elem, len, justAnimate) {
var length = $(elem).attr("d").split(" ").length,
len = len,
ast = 8,
dur = 100,
duration = Math.floor(Math.random() * dur + dur / 2),
atSameTime = Math.floor(len / ast) || 8;
if (rndArr.length) {
while (atSameTime--) {
var num = rndArr.splice(Math.floor(Math.random() * rndArr.length), 1)[0];
pathD = newD(pathD, num);
}
Snap(elem).animate({
'path': pathD
}, duration, mina.easeinout, function () {
animateLoop(elem, len, justAnimate);
});
} else {
if (justAnimate) {
$(".svg-matter").remove();
$(".inner").removeClass("clicked");
activateHandlers();
animating = false;
return;
}
$pickedElem.find(".art-content").addClass("visible");
$pickedElem.addClass("instant-transition");
$pickedElem.find(".inner").addClass("instant-transition");
$pickedElem.css("top");
$pickedElem.find(".inner").css("transform", "translateZ(" + pickedZ + "vw)");
bigArr = pathDCopy;
$(".scene").addClass("content-visible");
$pickedElem.addClass("content-visible full-screen");
}
}
function elemClick() {
if (animating) return;
var $inner = $(this).parent(),
$elem = $inner.parent(),
bgColor = $inner.css("background-color"),
innerZDiff = 15,
z = +$elem.parents(".level.active").attr("data-elemz"),
coef = SCENEPERS / (SCENEPERS + z - innerZDiff),
w = Math.ceil($elem.width() * coef) + 1,
h = Math.ceil($elem.height() * coef),
left = ($elem.width() - w) / 2 + $(window).width() / 10,
top = ($elem.height() - h) / 2;
animating = true;
removeHandlers();
$pickedElem = $elem;
pickedZ = z;
var $div = $("<div></div>");
$div.css({
"position": "absolute",
"width": w,
"height": h,
"background": bgColor,
"z-index": 15,
"top": top,
"left": left
});
$inner.addClass("clicked");
setTimeout(function () {
$curLevel.append($div);
$div.addClass("shake");
setTimeout(function () {
$div.removeClass("shake");
createSvg($div, 32);
$div.remove();
animateLoop(".svg-matter path", 32);
}, 400);
}, 300);
}
$(document).on("click", ".elem:not(.active) .art-btn", function () {
if (animating) return;
var that = this;
setTimeout(function () {
$(that).trigger("click");
}, SIDEANIM + 50);
});
$(document).on("click", ".elem.active .art-btn", elemClick);
function activateHandlers() {
$(document).on("mousewheel DOMMouseScroll", function (e) {
if (animating) return;
if (e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
navigateUp();
} else {
navigateDown();
}
});
$(document).on("keydown", function (e) {
if (animating) return;
if (e.which === 37) {
navigateLeft();
} else if (e.which === 38) {
navigateUp();
} else if (e.which === 39) {
navigateRight();
} else if (e.which === 40) {
navigateDown();
}
});
}
activateHandlers();
function removeHandlers() {
$(document).off("mousewheel DOMMouseScroll");
$(document).off("keydown");
}
$(document).on("click", ".nav-top__btn", function () {
if (animating) return;
if ($(this).hasClass("up")) {
navigateUp();
} else {
navigateDown();
}
});
$(document).on("click", ".nav-bot__btn", function () {
if (animating) return;
if ($(this).hasClass("left")) {
navigateLeft();
} else {
navigateRight();
}
});
$(document).on("click", ".nav-bot__pagi:not(.active)", function () {
if (animating) return;
sideNavigation(+$(this).attr("data-page"));
});
$(document).on("click", ".elem:not(.active)", function () {
if (animating) return;
sideNavigation(+$(this).index() + 1);
});
$(document).on("click", ".art-close", function () {
$pickedElem.removeClass("content-visible");
setTimeout(function () {
$(".svg-matter").attr("class", "svg-matter above");
$pickedElem.removeClass("full-screen instant-transition");
$pickedElem.find(".inner").attr("style", "");
$pickedElem.find(".art-content").removeClass("visible").removeClass("instant-transition");
$pickedElem.find(".inner").removeClass("instant-transition");
$pickedElem.css("top");
$(".scene").removeClass("content-visible");
rndArr = range(32);
animateLoop(".svg-matter path", 32, true);
}, 300);
});
$(window).resize(function () {
winW = $(window).width();
winH = $(window).height();
});
$(document).ready(function () {
setTimeout(function () {
$('.bg1-top').animate({
left: "0",
height: "hide"
}, 100, function () {
$('.bg1-top').animate({
opacity: 1,
left: "0",
height: "show"
}, 1000);
});
$('.bg1-color').animate({
left: "0",
height: "hide"
}, 100, function () {
$('.bg1-color').animate({
opacity: 1,
left: "0",
height: "show"
}, 1000);
});
}, 1000);
});
$('.nav-bot__btn').click(function () {
//вешаем событие на клик по кнопке
$('.bg1-top').animate({
height: "hide"
}, 200, function () {
$('.bg1-top').animate({
opacity: 1,
height: "show"
}, 1200);
});
$('.bg1-top2').animate({
height: "hide"
}, 200, function () {
$('.bg1-top2').animate({
opacity: 1,
height: "show"
}, 1200);
});
$('.bg1-color').animate({
height: "hide"
}, 100, function () {
$('.bg1-color').animate({
opacity: 1,
height: "show"
}, 1000);
});
$('.bg1-color2').animate({
height: "hide"
}, 100, function () {
$('.bg1-color2').animate({
opacity: 1,
height: "show"
}, 1000);
});
$('.btn-slide').toggleClass('btn-slide1');
$('.move1').toggleClass('move');
});
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.