Необходимо создать эффект открытия ноутбука. Еффект открытия - закрытия крышки ноутбука
Есть 2 картинки, основа и крышка ноутбука, нужно создать анимацию открытия - закрытия крышки ноутбука, основа же остаеться неподвижной. Css или js на ваше усмотрение html можете использовать любой, я использовал:
<div class="laptop__wrapper">
<div class="top__wrapper">
<img class="top" src="images/1.png" alt="">
</div>
<div class="bottom__wrapper">
<img class="bottom" src="images/2.png" alt="">
</div>
</div>
CSS использовал:
.bottom_wrapper{
z-index:1;
}
.top__wrapper{
z-index: 2;
transform: translateY(0) rotateX(360deg) perspective(0) scaleX(1) scaleY(1);
animation: anim 5s linear infinite alternate;
}
@keyframes anim{
10%{
transform:
translateY(0)
perspective(0)
scaleX(0)
rotatex(360deg);
}
50%{
transform:
translateY(5px)
perspective(4100px)
scaleX(1.15)
rotatex(300deg);
}
100%{
transform:
translateY(300px)
perspective(5000px)
scaleX(1.15)
rotatex(260deg);
}
}
Ответы (1 шт):
Автор решения: soledar10
→ Ссылка
Пример
(function() {
'use strict';
const laptopTop = document.querySelector('.laptop__top')
function toggleLaptop() {
laptopTop.classList.toggle('laptop__top--active')
}
laptopTop.addEventListener('click', toggleLaptop)
})();
* {
box-sizing: border-box;
}
img {
max-width: 100%;
height: auto;
}
.laptop {
text-align: center;
margin: 2em auto;
perspective: 2500px;
perspective-origin: 50% 100%;
transform-style: preserve-3d;
}
.laptop__top {
max-width: 600px;
margin: 0 auto;
will-change: transform;
transition: transform .3s ease;
position: relative;
overflow: hidden;
transform-origin: center bottom;
}
.laptop__top::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
color: #fff;
font-size: .5em;
background-color: #292929;
border-radius: 16px 16px 0 0;
z-index: 1;
}
.laptop__top-img {
position: relative;
z-index: 2;
}
.laptop__bottom {
max-width: 720px;
margin: 0 auto;
}
.laptop__top-img,
.laptop__bottom-img {
display: block;
margin: 0 auto;
}
.laptop__top--active {
transform: rotateX(-100.5deg) rotateY(0deg);
}
.laptop__top--active .laptop__top-img {
opacity: 0;
}
<div class="laptop">
<div class="laptop__top">
<img class="laptop__top-img" src="https://i.ibb.co/bQ1rnm1/top.png" alt="">
</div>
<div class="laptop__bottom">
<img class="laptop__bottom-img" src="https://i.ibb.co/RprQ0Ft/bottom.png" alt="">
</div>
</div>

