纯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