gsap实现消息纸张滚动卷起动画效果代码

代码语言:html

所属分类:加载滚动

代码描述:gsap实现消息纸张滚动卷起动画效果代码

代码标签: 纸张 滚动 卷起 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/reset.min.css">

<link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=DM+Serif+Display&amp;family=Poppins:wght@400;500;600;700&amp;display=swap'>
<style>
    #phone {
  --c-frame: black;
  --c-interface: black;
  --c-headline: black;
  --c-screen: #e4e2e2;
  --c-letter: #fff;
  --c-date: black;
  --c-subline: #898989;
  --c-text: #A7A7A7;
  --empty-mask: 100%;
  --headline-y: 0;
  position: relative;
  font-family: -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 14px;
  width: 375px;
  color: var(--c-interface);
}
@media (min-width: 501px) {
  #phone {
    border-radius: 9.6%/4.43%;
    box-shadow: 0 0 0 10px var(--c-frame);
  }
  #phone:before {
    content: "";
    position: absolute;
    z-index: 1;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    height: 30px;
    width: 200px;
    border-radius: 0 0 16px 16px;
    background: var(--c-frame);
  }
}
#phone .time,
#phone .battery,
#phone .cellular,
#phone .wifi {
  position: absolute;
  top: 17px;
}
@media (max-width: 500px) {
  #phone .time,
#phone .battery,
#phone .cellular,
#phone .wifi {
    display: none;
  }
}
#phone .time {
  left: 21px;
  top: 15px;
  font-size: 100%;
  font-weight: 600;
}
#phone .battery {
  right: 15px;
  width: 25px;
  height: 12px;
}
#phone .cellular {
  right: 64px;
  width: 18px;
  height: 12px;
}
#phone .wifi {
  right: 44px;
  width: 16px;
  height: 12px;
}
#phone .screen {
  position: relative;
  width: 100%;
}
@media (min-width: 501px) {
  #phone .screen {
    padding-bottom: 216.533333333%;
    background: var(--c-screen);
    transform: translateZ(0);
    border-radius: 36px;
    overflow: hidden;
    -webkit-mask-image: -webkit-radial-gradient(white, black);
  }
}
@media (max-width: 500px) {
  #phone .screen {
    height: 100vh;
  }
}
#phone .screen h1 {
  font-size: 30px;
  font-family: "DM Serif Display", serif;
  font-weight: normal;
  color: var(--c-headline);
  text-align: center;
  margin: 0;
  position: absolute;
  top: 92px;
  left: 0;
  right: 0;
  transform: translateY(var(--headline-y)) translateZ(0);
}
#phone .screen .empty {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  text-align: center;
  color: var(--c-text);
  -webkit-mask-image: linear-gradient(to left, transparent var(--empty-mask), black calc(var(--empty-mask) + 10%));
  mask-image: linear-gradient(to left, transparent var(--empty-mask), black calc(var(--empty-mask) + 10%));
}
#phone .screen .empty svg {
  display: block;
  width: 48px;
  height: 48px;
  margin: 0 auto 12px auto;
}
#phone .screen .empty span {
  display: block;
  font-size: 20px;
  font-family: "DM Serif Display", serif;
}
#phone .screen .content {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  overflow-y: scroll;
  overflow-x: hidden;
  -ms-overflow-style: none;
  scrollbar-width: none;
}
#phone .screen .content::-webkit-scrollbar {
  display: none;
}
#phone .screen .content .entries article {
  --clip: 0px;
  --compact-s: 0;
  --spacing: 32px;
  --border-radius-h: 0px;
  --border-radius-v: 0px;
  --article-r: 0deg;
  --article-x: 0;
  --article-y: 0;
  --to-article-r: -4deg;
  --to-article-x: -4px;
  --to-article-y: -44px;
  --compact-o: 0;
  margin-top: var(--spacing);
  margin-left: 20px;
  margin-right: 20px;
  margin-bottom: 0;
  position: -webkit-sticky;
  position: sticky;
  top: 184px;
  transform-origin: 50% 12px;
  transform: translate(var(--article-x), var(--article-y)) rotate(var(--article-r)) translateZ(0);
  border-radius: var(--border-radius-h) 0px 0px 0px/var(--border-radius-v) 0px 0px 0px;
}
#phone .screen .content .entries article:first-of-type {
  --spacing: 184px;
}
#phone .screen .content .entries article:nth-child(2) {
  --to-article-r: -3deg;
  --to-article-x: -2px;
  --to-article-y: -36px;
}
#phone .screen .content .entries article:nth-child(3) {
  --to-article-r: 1deg;
  --to-article-y: -8px;
}
#phone .screen .content .entries article .compact {
  position: absolute;
  left: 0;
  right: 0;
  transform-origin: 50% 0;
  transform: scaleY(var(--compact-s));
  z-index: 1;
}
#phone .screen .content .entries article .compact:before, #phone .screen .content .entries article .compact:after {
  content: "";
}
#phone .screen .content .entries article .compact:before {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 60px;
  filter: blur(3px);
  background: linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0));
  opacity: var(--compact-o);
}
#phone .screen .content .entries article .compact:after {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 24px;
  background: linear-gradient(#d5d5d5, #ffffff 65%, #dddddd);
  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.08);
}
#phone .screen .content .entries article .inner {
  transform: translateY(calc(var(--clip) * -1));
  -webkit-clip-path: polygon(0 var(--clip), 100% var(--clip), 100% 100%, 0% 100%);
          clip-path: polygon(0 var(--clip), 100% var(--clip), 100% 100%, 0% 100%);
  background: var(--c-letter);
}
#phone .screen .content .entries article .inner .info {
  padding: 24px;
  border-bottom: 1px solid var(--c-screen);
}
#phone .screen .content .entries article .inner .info strong {
  color: var(--c-date);
  display: block;
  font-family: "DM Serif Display", serif;
  font-size: 21px;
  margin-bottom: 4px;
}
#phone .screen .content .entries article .inner .info small {
  color: var(--c-subline);
  display: block;
  font-size: 14px;
  font-family: "Poppins";
  font-weight: 500;
}
#phone .screen .content .entries article .inner .text {
  padding: 24px;
  color: var(--c-text);
  font-family: "Poppins";
  font-size: 14px;
  line-height: 1.6;
}
#phone .screen .content .entries article .inner .text p {
  margin: 0;
}
#phone .screen .content .entries article .inner .text p:not(:last-child) {
  margin-bottom: 16px;
}

html {
  box-sizing: border-box;
  -webkit-font-smoothing: antialiased;
}

* {
  box-sizing: inherit;
}
*:before, *:after {
  box-sizing: inherit;
}

body {
  min-height: 100vh;
  display: flex;
  font-family: "Inter", Arial;
  justify-content: center;
  align-items: center;
  background: #F0F0F0;
}
@media (min-width: 501px) {
  body {
    padding: 24px;
  }
}
body .dribbble {
  position: fixed;
  display: block;
  right: 20px;
  bottom: 20px;
}
body .dribbble img {
  display: block;
  height: 28px;
}
body .twitter {
  position: fixed;
  display: block;
  right: 64px;
  bottom: 14px;
}
body .twitter svg {
  width: 32px;
  height: 32px;
  fill: #1da1f2;
}
</style>

</head>
<body>

<div id="phone">
    <div class="screen">
        <h1>历史信件</h1>
        <div class="empty">
            <svg viewBox="0 0 48 48">
                <path d="M47.3296 9.02336C46.9238 8.85514 46.4566 8.94821 4.........完整代码请登录后点击上方下载按钮下载查看

网友评论0