css布局实现一个可爱的章鱼跟随鼠标行走动画效果代码
代码语言:html
所属分类:动画
代码描述:css布局实现一个可爱的章鱼跟随鼠标行走动画效果代码
代码标签: 一个 可 爱的 章鱼 跟随 鼠标 行走 动画 效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { display: flex; justify-content: center; align-items: center; height: 100vh; width: 100vw; overflow: hidden; --squigs1:"M 400 810 C 280 660 480 670 290 470 Q 240 380 260 260"; --squigs2:"M 400 810 C 280 660 480 670 290 470 Q 240 380 260 260"; --directionX:0%; --directionY:0%; --scale: 1; --angle: 20; cursor: pointer; } body:after { content: "click 4 squid"; position: absolute; z-index: 99; bottom: 10px; width: 100%; left: 0; text-align: center; font-family: Futura; font-size: 10px; color: #1d5663; } body.squid { --scale: 0.5; --angle: 60; } body.squid #octo:before { transform: scaleY(1); transition-delay: 0.125s; } body.squid #octo .head { transform: scale(0.5) translateY(50px); transition-delay: 0s; filter: hue-rotate(200deg); } body.squid #octo .head:before { left: 5px; box-shadow: 80px 0 0 #414380; top: 70px; } body.squid #octo .head:after { background-position: 50% 50%; bottom: 5px; } body.squid #octo .wrap { filter: hue-rotate(200deg); transition-delay: 0s; } body:before { content: ""; position: absolute; width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 10; box-shadow: inset 0 0 50px 50px #76c5d6; } body #water { position: absolute; width: 300vw; height: 300vh; left: 50%; top: 50%; transform: translate(-50%, -50%); background: repeating-linear-gradient(-12deg, #62bdd0 2px, transparent 3px, transparent 20px, #76c5d6 22px), repeating-linear-gradient(22deg, transparent 50px, #76c5d6 100px, transparent 250px), repeating-linear-gradient(-22deg, #9dd6e2 50px, #76c5d6 100px, #9dd6e2 250px); -webkit-animation: waving 10s linear infinite; animation: waving 10s linear infinite; background-size: 25vw 100%; } @-webkit-keyframes waving { from { background-position: 0vw 0vh; } to { background-position: 100vw 50%; } } @keyframes waving { from { background-position: 0vw 0vh; } to { background-position: 100vw 50%; } } body #water:before { content: ""; position: absolute; width: 100%; height: 100%; -webkit-backdrop-filter: url(#waves); backdrop-filter: url(#waves); z-index: 9; } body #octo { position: absolute; z-index: 9; width: 800px; height: 800px; transform: translate(calc(var(--directionX)/10), calc(var(--directionY)/10)) rotate(var(--rotation)); transform-origin: 50% calc(50% + 125px); cursor: pointer; } body #octo:before { content: ""; position: absolute; width: 50px; height: 125px; top: calc(50% - 150px); left: calc(50% - 25px); z-index: 11; background: repeating-linear-gradient(4deg, #fce8d6 20px, #fadbbe 26px, #fadbbe 27px, #fce8d6 34px, #fce8d6 50px); border-radius: 100px 100px 50px 50px/200px 200px 50px 50px; transition: 200ms cubic-bezier(0.275, 0.885, 0.32, 1); transition-delay: 0s; transform-origin: bottom; transform: scaleY(0); } body #octo .head { position: absolute; width: 100px; height: 90px; background: #c5c6e2; border-radius: 200%; left: calc(50% - 50px); top: calc(50% - 85px); z-index: 10; box-shadow: inset 0 10px 20px -10px #9294c8; -webkit-mask: linear-gradient(to bottom, #000 80px, transparent); mask: linear-gradient(to bottom, #000 80px, transparent); transition: 0.25s ease-in-out; transition-delay: 0.1s; } body #octo .head:before { content: ""; position: absolute; width: 10px; height: 10px; background: #414380; border-radius: 100px; top: 50px; left: 25px; box-shadow: 40px 0 0 #414380, -10px 17.5px 0 5px #b4b5d9, 50px 17.5px 0 5px #b4b5d9; transform: translate(calc((var(--directionX) * 3)), calc((var(--directionY) * 3) - 10px)) scale(0.9); transition: left 0.3s ease-in-out, box-shadow 0.3s ease-in-out, top 0.3s ease-in-out; } body #octo .head:after { content: ""; position: absolute; width: 10px; height: 10px; border-radius: 100px; bottom: 15px; left: calc(50% - 5px); border: 2px solid; box-sizing: border-box; border-color: transparent #414380 #414380 transparent; transform: translate(calc((var(--directionX) * 3)), calc((var(--directionY) * 3) - 10px)) scale(1.5) rotate(45deg); background: linear-gradient(135deg, transparent 50%, #414380 50%) calc(50% + 100px) 50%/100% 100% no-repeat; transition: background-position 0.3s ease-in-out, bottom 0.3s ease-in-out; } body .wrap { position: absolute; z-index: 9; width: 800px; height: 800px; top: calc(50% - 800px); transform-origin: bottom; transition-delay: 0.3s; } body .wrap:nth-of-type(3n) .inner { transform: scaleX(1); } body .wrap:nth-of-type(3n) .inner .pod { offset-path: path(var(--squigs2)); } body .wrap .inner { position: absolute; width: 100%; height: 100%; left: 0; top: 0; transform: scaleX(-1); } body .wrap:nth-of-type(1) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 1deg + 100deg)); -webkit-animation: waving1 3s ease-in-out infinite alternate; animation: waving1 3s ease-in-out infinite alternate; -webkit-animation-delay: -0.6666666667s; animation-delay: -0.6666666667s; } @-webkit-keyframes waving1 { to { transform: scale(0.25) rotate(138deg); } } @keyframes waving1 { to { transform: scale(0.25) rotate(138deg); } } body .wrap:nth-of-type(1):nth-of-type(even) { z-index: -1; transform: scale(0.135) rotate(88deg) scaleX(-1); -webkit-animation: waving21 2s ease-in-out infinite alternate; animation: waving21 2s ease-in-out infinite alternate; -webkit-animation-delay: -1.5s; animation-delay: -1.5s; } body .wrap:nth-of-type(1):nth-of-type(even) .pod { offset-path: path(var(--squigs2)); background: linear-gradient(45deg, #9294c8 25%, #8183bf 75%); } @-webkit-keyframes waving21 { to { transform: scale(0.25) rotate(108deg) scaleX(-1); } } @keyframes waving21 { to { transform: scale(0.25) rotate(108deg) scaleX(-1); } } body .wrap:nth-of-type(2) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 2deg + 100deg)); -webkit-animation: waving2 3s ease-in-out infinite alternate; animation: waving2 3s ease-in-out infinite alternate; -webkit-animation-delay: -1.3333333333s; animation-delay: -1.3333333333s; } @-webkit-keyframes waving2 { to { transform: scale(0.25) rotate(156deg); } } @keyframes waving2 { to { transform: scale(0.25) rotate(156deg); } } body .wrap:nth-of-type(2):nth-of-type(even) { z-index: -1; transform: scale(0.135) rotate(106deg) scaleX(-1); -webkit-animation: waving22 2s ease-in-out infinite alternate; animation: waving22 2s ease-in-out infinite alternate; -webkit-animation-delay: -2s; animation-delay: -2s; } body .wrap:nth-of-type(2):nth-of-type(even) .pod { offset-path: path(var(--squigs2)); background: linear-gradient(45deg, #9294c8 25%, #8183bf 75%); } @-webkit-keyframes waving22 { to { transform: scale(0.25) rotate(126deg) scaleX(-1); } } @keyframes waving22 { to { transform: scale(0.25) rotate(126deg) scaleX(-1); } } body .wrap:nth-of-type(3) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 3deg + 100deg)); -webkit-animation: waving3 3s ease-in-out infinite alternate; animation: waving3 3s ease-in-out infinite alternate; -webkit-animation-delay: -2s; animation-delay: -2s; } @-webkit-keyframes waving3 { to { transform: scale(0.25) rotate(174deg); } } @keyframes waving3 { to { transform: scale(0.25) rotate(174deg); } } body .wrap:nth-of-type(3):nth-of-type(even) { z-index: -1; transform: scale(0.135) rotate(124deg) scaleX(-1); -webkit-animation: waving23 2s ease-in-out infinite alternate; animation: waving23 2s ease-in-out infinite alternate; -webkit-animation-delay: -2.5s; animation-delay: -2.5s; } body .wrap:nth-of-type(3):nth-of-type(even) .pod { offset-path: path(var(--squigs2)); background: linear-gradient(45deg, #9294c8 25%, #8183bf 75%); } @-webkit-keyframes waving23 { to { transform: scale(0.25) rotate(144deg) scaleX(-1); } } @keyframes waving23 { to { transform: scale(0.25) rotate(144deg) scaleX(-1); } } body .wrap:nth-of-type(4) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 4deg + 100deg)); -webkit-animation: waving4 3s ease-in-out infinite alternate; animation: waving4 3s ease-in-out infinite alternate; -webkit-animation-delay: -2.6666666667s; animation-delay: -2.6666666667s; } @-webkit-keyframes waving4 { to { transform: scale(0.25) rotate(192deg); } } @keyframes waving4 { to { transform: scale(0.25) rotate(192deg); } } body .wrap:nth-of-type(4):nth-of-type(even) { z-index: -1; transform: scale(0.135) rotate(142deg) scaleX(-1); -webkit-animation: waving24 2s ease-in-out infinite alternate; animation: waving24 2s ease-in-out infinite alternate; -webkit-animation-delay: -3s; animation-delay: -3s; } body .wrap:nth-of-type(4):nth-of-type(even) .pod { offset-path: path(var(--squigs2)); background: linear-gradient(45deg, #9294c8 25%, #8183bf 75%); } @-webkit-keyframes waving24 { to { transform: scale(0.25) rotate(162deg) scaleX(-1); } } @keyframes waving24 { to { transform: scale(0.25) rotate(162deg) scaleX(-1); } } body .wrap:nth-of-type(5) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 5deg + 100deg)); -webkit-animation: waving5 3s ease-in-out infinite alternate; animation: waving5 3s ease-in-out infinite alternate; -webkit-animation-delay: -3.3333333333s; animation-delay: -3.3333333333s; } @-webkit-keyframes waving5 { to { transform: scale(0.25) rotate(210deg); } } @keyframes waving5 { to { transform: scale(0.25) rotate(210deg); } } body .wrap:nth-of-type(5):nth-of-type(even) { z-index: -1; transform: scale(0.135) rotate(160deg) scaleX(-1); -webkit-animation: waving25 2s ease-in-out infinite alternate; animation: waving25 2s ease-in-out infinite alternate; -webkit-animation-delay: -3.5s; animation-delay: -3.5s; } body .wrap:nth-of-type(5):nth-of-type(even) .pod { offset-path: path(var(--squigs2)); background: linear-gradient(45deg, #9294c8 25%, #8183bf 75%); } @-webkit-keyframes waving25 { to { transform: scale(0.25) rotate(180deg) scaleX(-1); } } @keyframes waving25 { to { transform: scale(0.25) rotate(180deg) scaleX(-1); } } body .wrap:nth-of-type(6) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 6deg + 100deg)); -webkit-animation: waving6 3s ease-in-out infinite alternate; animation: waving6 3s ease-in-out infinite alternate; -webkit-animation-delay: -4s; animation-delay: -4s; } @-webkit-keyframes waving6 { to { transform: scale(0.25) rotate(228deg); } } @keyframes waving6 { to { transform: scale(0.25) rotate(228deg); } } body .wrap:nth-of-type(6):nth-of-type(even) { z-index: -1; transform: scale(0.135) rotate(178deg) scaleX(-1); -webkit-animation: waving26 2s ease-in-out infinite alternate; animation: waving26 2s ease-in-out infinite alternate; -webkit-animation-delay: -4s; animation-delay: -4s; } body .wrap:nth-of-type(6):nth-of-type(even) .pod { offset-path: path(var(--squigs2)); background: linear-gradient(45deg, #9294c8 25%, #8183bf 75%); } @-webkit-keyframes waving26 { to { transform: scale(0.25) rotate(198deg) scaleX(-1); } } @keyframes waving26 { to { transform: scale(0.25) rotate(198deg) scaleX(-1); } } body .wrap:nth-of-type(7) { z-index: 2; transform: scale(0.25) rotate(calc((360/var(--angle)) * 7deg + 100deg)); -webkit-animation: waving7 3s ease-in-out infinite alternate; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0