纯css布局实现奔跑的厕纸卫生纸动画效果

代码语言:html

所属分类:动画

代码描述:纯css布局实现奔跑的厕纸卫生纸动画效果

代码标签: 实现 奔跑 厕纸 卫生纸 动画 效果

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

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
html {
  font-size: 2.9vmin;
}

body {
  display: -webkit-box;
  display: flex;
  -webkit-box-pack: center;
          justify-content: center;
  -webkit-box-align: center;
          align-items: center;
  height: 100vh;
  overflow: hidden;
  background: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #19b6ff), color-stop(50%, #222), color-stop(#222), to(#ccc));
  background: linear-gradient(to bottom, #19b6ff 50%, #222 50%, #222 calc(50% + 0.25rem), #ccc calc(50% + 0.25rem));
  -webkit-perspective: 3rem;
          perspective: 3rem;
}
body * {
  box-sizing: border-box;
}
body #sidewalk {
  position: absolute;
  width: 400vw;
  height: 100vh;
  top: calc(50% + 0.25rem);
  background: repeating-linear-gradient(to right, #222, #222 0.15rem, transparent 0.15rem, transparent 10rem);
  z-index: 0;
  left: -100%;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform: translateX(0) rotateX(10deg);
          transform: translateX(0) rotateX(10deg);
  -webkit-transform-origin: top;
          transform-origin: top;
  -webkit-animation: sidewalk 0.5s linear infinite;
          animation: sidewalk 0.5s linear infinite;
}
@-webkit-keyframes sidewalk {
  to {
    -webkit-transform: translateX(10rem) rotateX(10deg);
            transform: translateX(10rem) rotateX(10deg);
  }
}
@keyframes sidewalk {
  to {
    -webkit-transform: translateX(10rem) rotateX(10deg);
            transform: translateX(10rem) rotateX(10deg);
  }
}
body #sidewalk:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 10%;
  top: calc(-10% - 0.25rem);
  left: 0;
  -webkit-transform: rotateX(-10deg);
          transform: rotateX(-10deg);
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  background: -webkit-gradient(linear, left top, left bottom, from(#222), color-stop(0.15rem, #222), color-stop(0.15rem, #60d54a));
  background: linear-gradient(to bottom, #222, #222 0.15rem, #60d54a 0.15rem);
}
body .wrap {
  width: 10rem;
  height: 10rem;
  z-index: 2;
  position: absolute;
}
body .wrap:nth-of-type(2) {
  top: calc(50% + 10rem);
  -webkit-transform: scaleY(-1) skewX(-40deg) translateX(5rem);
          transform: scaleY(-1) skewX(-40deg) translateX(5rem);
  -webkit-filter: brightness(0) blur(3px);
          filter: brightness(0) blur(3px);
  opacity: 0.05;
}
body .wrap:nth-of-type(2) .roll {
  -webkit-animation: charge3 2s ease-in-out infinite alternate, charge4 1s ease-in-out infinite alternate;
          animation: charge3 2s ease-in-out infinite alternate, charge4 1s ease-in-out infinite alternate;
}
@-webkit-keyframes charge3 {
  to {
    -webkit-transform: translateX(-3rem) scale(0.9) skewX(5deg) scaleY(1.2);
            transform: translateX(-3rem) scale(0.9) skewX(5deg) scaleY(1.2);
  }
}
@keyframes charge3 {
  to {
    -webkit-transform: translateX(-3rem) scale(0.9) skewX(5deg) scaleY(1.2);
            transform: translateX(-3rem) scale(0.9) skewX(5deg) scaleY(1.2);
  }
}
@-webkit-keyframes charge4 {
  to {
    left: calc(50% - 10rem);
    top: calc(50% - 6.5rem);
  }
}
@keyframes charge4 {
  to {
    left: calc(50% - 10rem);
    top: calc(50% - 6.5rem);
  }
}
body .wrap .roll {
  width: 7rem;
  height: 7rem;
  top: calc(50% - 3.5rem);
  position: absolute;
  left: calc(50% - 5rem);
  -webkit-animation: charge 2s ease-in-out infinite alternate, charge2 1s ease-in-out infinite alternate;
          animation: charge 2s ease-in-out infinite alternate, charge2 1s ease-in-out infinite alternate;
}
@-webkit-keyframes charge {
  to {
    -webkit-transform: translateX(-3rem) scale(0.9) skewX(5deg);
            transform: translateX(-3rem) scale(0.9) skewX(5deg);
  }
}
@keyframes charge {
  to {
    -webkit-transform: translateX(-3rem) scale(0.9) skewX(5deg);
            transform: translateX(-3rem) scale(0.9) skewX(5deg);
  }
}
@-webkit-keyframes charge2 {
  to {
    left: calc(50% - 10rem);
    top: calc(50% - 0.5rem);
  }
}
@keyframes charge2 {
  to {
    left: calc(50% - 10rem);
    top: calc(50% - 0.5rem);
  }
}
body .wrap .roll .body {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  box-shadow: -0.25rem 0 0 0 #222, 0.25rem 0 0 #fff;
  background: #fff;
  -webkit-animation: bounce 0.125s ease-in-out infinite alternate;
          animation: bounce 0.125s ease-in-out infinite alternate;
}
@-webkit-keyframes bounce {
  from {
    -webkit-transform: rotate(-2.5deg) translateY(0rem);
            transform: rotate(-2.5deg) translateY(0rem);
  }
  to {
    -webkit-transform: rotate(2.5deg) translateY(0.25rem);
            transform: rotate(2.5deg) translateY(0.25rem);
  }
}
@keyframes bounce {
  from {
    -webkit-transform: rotate(-2.5deg) translateY(0rem);
            transform: rotate(-2.5deg) translateY(0rem);
  }
  to {
    -webkit-transform: rotate(2.5deg) translateY(0.25rem);
            transform: rotate(2.5deg) translateY(0.25rem);
  }
}
body .wrap .roll .body:before, body .wrap .roll .body:after {
  content: '';
  height: 4rem;
  width: 7rem;
  border-radius: 350rem / 200rem;
  position: absolute;
  box-shadow: 0 0 0 0.25rem #222;
  left: 0;
  top: -2rem;
}
body .wrap .roll .body:before {
  background: radial-gradient(ellipse at center, #222 1rem, #fff 1rem);
}
body .wrap .roll .body:after {
  border: 0.25rem solid #222;
  border-color: transparent #222 #222 #222;
  box-shadow: none;
  left: -.........完整代码请登录后点击上方下载按钮下载查看

网友评论0