gsap ScrollTrigger实现滚动翻书动画效果
代码语言:html
所属分类:动画
代码描述:gsap ScrollTrigger实现滚动翻书动画效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
* {
box-sizing: border-box;
}
:root {
--page-count: 20;
--page-scroll: 25;
--underline: rgba(64,64,64,0.4);
--spine: #000;
--cover: #1a1a1a;
--bg: #4d4d4d;
--insert: #d9d9d9;
--page: #e6e6e6;
}
body {
width: 100vw;
height: calc(((var(--page-count) + 2) * var(--page-scroll)) * 1vh);
background: var(--bg);
overflow-x: hidden;
}
h1 {
text-align: center;
font-size: 1rem;
margin: 0;
padding: 0;
}
.page {
height: 100%;
width: 100%;
position: relative;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.page .page__number {
position: absolute;
color: #808080;
bottom: 1rem;
font-size: 1vmin;
}
.page__half--front .page__number {
right: 1rem;
}
.page__half--back .page__number {
left: 1rem;
}
.page__half {
display: -webkit-box;
display: flex;
-webkit-box-align: center;
align-items: center;
-webkit-box-pack: center;
justify-content: center;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
-webkit-transform: rotateY(calc(var(--rotation) * 1deg)) translate3d(0, 0, calc((0.5 * var(--coefficient)) * 1px));
transform: rotateY(calc(var(--rotation) * 1deg)) translate3d(0, 0, calc((0.5 * var(--coefficient)) * 1px));
-webkit-clip-path: inset(0 0.5% 0 0.5%);
clip-path: inset(0 0.5% 0 0.5%);
}
.page__half--front {
--rotation: 0;
--coefficient: 0;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 0 5% 5% 0;
}
.page__half--back {
--rotation: 180;
--coefficient: 2;
border-radius: 5% 0 0 5%;
}
.book {
height: 40vmin;
position: fixed;
width: 30vmin;
min-width: 150px;
min-height: 200px;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%) scale(0.5);
transform: translate(-50%, -50%) scale(0.5);
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-perspective: 1200px;
perspective: 1200px;
}
.book__insert {
content: '';
position: absolute;
height: 94%;
width: 94%;
background: var(--insert);
top: 50%;
right: -1rem;
-webkit-transform: translate(0, -50%);
transform: translate(0, -50%);
border-radius: 5% 0 0 5%;
}
.book__spine {
height: 100%;
left: 0;
top: 0;
position: absolute;
background: var(--spine);
-webkit-transform-origin: 0 50%;
transform-origin: 0 50%;
width: 12px;
-webkit-transform: translate3d(0, 0, -13px) scaleX(1) rotateY(0deg);
transform: translate3d(0, 0, -13px) scaleX(1) rotateY(0deg);
}
.book__page {
position: absolute;
left: 2%;
top: 50%;
border-radius: 0 5% 5% 0;
-webkit-transform: translate(0, -50%);
transform: translate(0, -50%);
height: 94%;
width: 94%;
z-index: calc(((var(--page-count) + 2) - var(--page-index)) * 2);
-webkit-transform-origin: 0% 50%;
transform-origin: 0% 50%;
}
.book__cover {
border-radius: 0 5% 5% 0;
height: 100%;
width: 100%;
position: absolute;
top: 50%;
left: 0;
background: var(--cover);
}
.book__cover--front {
-webkit-transform-origin: 0 50%;
transform-origin: 0 50%;
}
.book__cover--front .page__half--back {
border-right: 1rem solid var(--s.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0