gsap实现按钮悬浮扭曲动画效果代码
代码语言:html
所属分类:悬停
代码描述:gsap实现按钮悬浮扭曲动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Inter:400,500,600,700&display=swap'> <style> .button { --background: #275EFE; --background-hover: #1D4FE1; --shadow: rgba(39, 94, 254, 0.3); --shadow-hover: rgba(39, 94, 254, 0.5); --text: #fff; display: flex; align-items: center; outline: none; cursor: pointer; position: relative; border: 0; padding: 0; height: 44px; line-height: 20px; font-family: inherit; font-weight: 600; font-size: 14px; background: none; color: var(--text); filter: drop-shadow(0 2px 5px var(--s, var(--shadow))); -webkit-tap-highlight-color: transparent; transition: filter 0.4s; } .button:before, .button:after { content: ""; display: block; width: 12px; height: 44px; background: var(--b, var(--background)); transform: scaleX(1.04) scaleY(var(--scale-y, 1)); transition: background 0.4s; } .button:before { transform-origin: 0 50%; border-radius: 10px 0 0 10px; } .button:after { transform-origin: 100% 50%; border-radius: 0 10px 10px 0; } .button svg { width: calc(100% - 24px); height: 68px; display: block; position: absolute; pointer-events: none; left: 12px; right: 12px; top: -12px; fill: var(--b, var(--background)); transition: fill 0.4s; } .button div { z-index: 1; position: relative; display: flex; padding: 0 16px; } .button div span { display: block; -webkit-backface-visibility: hidden; backface-visibility: hidden; transform: translateZ(0); -webkit-animation: var(--name, none) 0.75s linear forwards; animation: var(--name, none) 0.75s linear forwards; } .button.in { --name: move; } .button.in:not(.out) { --c: var(--color-hover); --b: var(--background-hover); --s: var(--shadow-hover); } .button.in.out { --name: move-out; } .button.white { --border: #D1D6EE; --background: #fff; --background-hover: #fff; --text: #2B3044; --scale-y: 1.025; --shadow: rgba(4, 18, 104, 0.08); --shadow-hover: rgba(4, 18, 104, 0.16); } .button.white:before { border: 1px solid var(--border); border-right: 0; } .button.white:after { border: 1px solid var(--border); border-left: 0; } .button.white svg { stroke-width: 1px; stroke: var(--border); stroke-dasharray: 200 44; } @-webkit-keyframes move { 22%, 36% { transform: translateY(calc(-6px * var(--move))) translateZ(0) rotate(calc(-13deg * var(--rotate) * var(--part))); } 50% { transform: translateY(calc(3px * var(--move))) translateZ(0) rotate(calc(6deg * var(--rotate) * var(--part))); } 70% { transform: translateY(calc(-2px * var(--move))) translateZ(0) rotate(calc(-3deg * var(--rotate) * var(--part))); } } @keyframes move { 22%, 36% { transform: translateY(calc(-6px * var(--move))) translateZ(0) rotate(calc(-13deg * var(--rotate) * var(--part))); } 50% { transform: translateY(calc(3px * var(--move))) translateZ(0) rotate(calc(6deg * var(--rotate) * var(--part))); } 70% { transform: translateY(calc(-2px * var(--move))) translateZ(0) rotate(calc(-3deg * var(--rotate) * var(--part))); } } @-webkit-keyframes move-out { 22%, 36% { transform: translateY(calc(6px * var(--move))) translateZ(0) rotate(calc(13deg * var(--rotate) * var(--part))); } 50% { transform: translateY(calc(-3px * var(--move))) translateZ(0) rotate(calc(-6deg * var(--rotate) * var(--part))); } 70% { transform: translateY(calc(2px * var(--move))) translateZ(0) rotate(calc(3deg * var(--rotate) * var(--part))); } } @keyframes move-out { 22%, 36% { transform: translateY(calc(6px * var(--move))) translateZ(0) rotate(calc(13deg * var(--rotate) * var(--part))); } 50% { transform: translateY(calc(-3px * var(--move))) translateZ(0) rotate(calc(-6deg * var(--rotate) * var(--part))); } 70% { transform: translateY(calc(2px * var(--move))) translateZ(0) rotate(calc(3deg * var(--rotate) * var(--part))); } } html { box-sizing: border-box; -webkit-font-smoothing: antialiased; } * { box-sizing: inherit; } *:before, *:after { .........完整代码请登录后点击上方下载按钮下载查看
网友评论0