Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
Like
12
css
.paw-button { --background: #fff; --background-active: #FEE8F4; --border: #F1ECEB; --border-active: #EEC2DB; --text: #000; --number: #9C9496; --number-active: #000; --heart-background: #fff; --heart-background-active: #FEA5D7; --heart-border: #C3C2C0; --heart-border-active: #2B2926; --heart-shadow-light: #FEE0F2; --heart-shadow-dark: #EA5DAF; --paw-background: #fff; --paw-border: #201E1B; --paw-shadow: #EEEDED; --paw-inner: var(--heart-background-active); --paw-shadow-light: var(--heart-shadow-light); --paw-shadow-dark: var(--heart-shadow-dark); --paw-clap-background: #FEF0A5; --paw-clap-border: var(--paw-border); --paw-clap-shadow: #FED75C; --circle: #df3dce; --circle-line: #000; display: inline-flex; text-decoration: none; font-weight: bold; position: relative; line-height: 19px; padding: 12px 16px; } .paw-button:before { content: ''; position: absolute; display: block; left: -2px; top: -2px; bottom: -2px; right: -2px; z-index: 1; border-radius: 5px; transition: background .45s, border-color .45s; background: var(--background); border: 2px solid var(--border); } .paw-button svg { display: block; } .paw-button .text { position: relative; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); z-index: 3; margin-right: 8px; transition: width .25s; width: var(--w, 60px); } .paw-button .text span, .paw-button .text svg { transition: opacity .2s, -webkit-transform .15s ease-out; transition: transform .15s ease-out, opacity .2s; transition: transform .15s ease-out, opacity .2s, -webkit-transform .15s ease-out; opacity: var(--o, 1); } .paw-button .text span { display: block; position: absolute; left: 30px; top: 0; -webkit-transform: translateY(var(--y, 0)); transform: translateY(var(--y, 0)); color: var(--text); } .paw-button .text svg { --background: var(--heart-background); --border: var(--heart-border); --shadow-light: transparent; --shadow-dark: transparent; width: 21px; height: 19px; -webkit-transform: translateX(var(--x)); transform: translateX(var(--x)); } .paw-button > span { display: block; position: relative; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); z-index: 2; color: var(--number); } .paw-button .paws { overflow: hidden; position: absolute; left: 0; right: 0; bottom: 0; height: 60px; z-index: 2; } .paw-button .paws svg { position: absolute; bottom: 0; transition: opacity .2s, -webkit-transform .3s ease-out; transition: transform .3s ease-out, opacity .2s; transition: transform .3s ease-out, opacity .2s, -webkit-transform .3s ease-out; opacity: var(--o, 0); -webkit-transform: translate(var(--x, 0), var(--y, 0)); transform: translate(var(--x, 0), var(--y, 0)); } .paw-button .paws svg.paw { --x: -24px; width: 30px; height: 37px; left: 32px; } .paw-button .paws svg.paw-clap { --x: 16px; --y: 34px; --o: 1; width: 29px; height: 34px; left: 34px; } .paw-button .paws .paw-effect { left: 26px; top: 12px; width: 44px; height: 44px; position: absolute; } .paw-button .paws .paw-effect:before { content: ''; display: block; width: 100%; height: 100%; border-radius: 50%; background: var(--circle); -webkit-transform: scale(var(--s, 0)); transform: scale(var(--s, 0)); opacity: var(--o, 1); transition: opacity .2s linear .25s, -webkit-transform .15s ease .16s; transition: transform .15s ease .16s, opacity .2s linear .25s; transition: transform .15s ease .16s, opacity .2s linear .25s, -webkit-transform .15s ease .16s; } .paw-button .paws .paw-effect div { width: 2px; height: 6px; border-radius: 1px; left: 50%; bottom: 50%; margin-left: -1px; position: absolute; background: var(--circle-line); -webkit-transform: translateY(-24px) scaleX(0.7) scaleY(var(--s, 0)); transform: translateY(-24px) scaleX(0.7) scaleY(var(--s, 0)); } .paw-button .paws .paw-effect div:before, .paw-button .paws .paw-effect div:after { content: ''; display: block; position: absolute; width: 100%; height: 100%; background: inherit; border-radius: inherit; -webkit-transform: translate(var(--x, -22px), var(--y, 4px)) rotate(var(--r, -45deg)) scaleX(0.8) scaleY(var(--s, 0)); transform: translate(var(--x, -22px), var(--y, 4px)) rotate(var(--r, -45deg)) scaleX(0.8) scaleY(var(--s, 0)); } .paw-button .paws .paw-effect div:after { --x: 22px; --r: 45deg; } .paw-button .paws .paw-effect div, .paw-button .paws .paw-effect div:before, .paw-button .paws .paw-effect div:after { opacity: var(--o, 1); -webkit-transform-origin: 50% 100%; transform-origin: 50% 100%; transition: opacity .18s linear .21s, -webkit-transform .12s ease .17s; transition: transform .12s ease .17s, opacity .18s linear .21s; transition: transform .12s ease .17s, opacity .18s linear .21s, -webkit-transform .12s ease .17s; } .paw-button i { position: absolute; display: block; width: 4px; height: 4px; top: 50%; left: 50%; margin: -2px 0 0 -2px; opacity: var(--o, 0); background: var(--b); -webkit-transform: translate(var(--x), var(--y)) scale(var(--s, 1)); transform: translate(var(--x), var(--y)) scale(var(--s, 1)); } .paw-button:not(.confetti):hover .text { --o: 0; --x: 12px; --y: 8px; } .paw-button:not(.confetti):hover .paws svg.paw { --o: 1; --x: 0; } .paw-button.animation .text { --o: 0; } .paw-button.animation .text svg { --background: var(--heart-background-active); --border: var(--heart-border-active); --shadow-light: var(--heart-shadow-light); --shadow-dark: var(--heart-shadow-dark); } .paw-button.animation .paws svg.paw { --x: 0; --o: 1; transition-delay: 0s; -webkit-animation: paw .45s ease forwards; animation: paw .45s ease forwards; } .paw-button.animation .paws svg.paw-clap { -webkit-animation: paw-clap .5s ease-in forwards; animation: paw-clap .5s ease-in forwards; } .paw-button.animation .paws .paw-effect { --s: 1; --o: 0; } .paw-button.confetti i { -webkit-animation: confetti .6s ease-out forwards; animation: confetti .6s ease-out forwards; } .paw-button.confetti .paws svg.paw { --o: 0; transition: opacity .15s linear .2s; } .paw-button.liked { --background: var(--background-active); --border: var(--border-active); } .paw-button.liked .text { --w: 21px; } .paw-button.liked .text svg { --o: 1; } .paw-button.liked > span { --number: var(--number-active); } @-webkit-keyframes confetti { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); opacity: 1; } } @keyframes confetti { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); opacity: 1; } } @-webkit-keyframes paw { 0% { -webkit-transform: translateX(var(--x)); transform: translateX(var(--x)); } 35% { -webkit-transform: translateX(-16px); transform: translateX(-16px); } 55%, 70% { -webkit-transform: translateX(0); transform: translateX(0); } 100% { -webkit-transform: translateX(-12px); transform: translateX(-12px); } } @keyframes paw { 0% { -webkit-transform: translateX(var(--x)); transform: translateX(var(--x)); } 35% { -webkit-transform: translateX(-16px); transform: translateX(-16px); } 55%, 70% { -webkit-transform: translateX(0); transform: translateX(0); } 100% { -webkit-transform: translateX(-12px); transform: translateX(-12px); } } @-webkit-keyframes paw-clap { 50%, 70% { -webkit-transform: translate(0, 0); transform: translate(0, 0); } } @keyframes paw-clap { 50%, 70% { -webkit-transform: translate(0, 0); transform: translate(0, 0); } } 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: 'Roboto', Arial; justify-content: center; align-items: center; background: #2c2c2c; }
JavaScript
let confettiAmount = 60, confettiColors = [ '#7d32f5', '#f6e434', '#63fdf1', '#e672da', '#295dfe', '#6e57ff' ], random = (min, max) => { return Math.floor(Math.random() * (max - min + 1) + min); }, createConfetti = to => { let elem = document.createElement('i'), set = Math.random() < 0.5 ? -1 : 1; elem.style.setProperty('--x', random(-260, 260) + 'px'); elem.style.setProperty('--y', random(-160, 160) + 'px'); elem.style.setProperty('--r', random(0, 360) + 'deg'); elem.style.setProperty('--s', random(.6, 1)); elem.style.setProperty('--b', confettiColors[random(0, 5)]); to.appendChild(elem); }; document.querySelectorAll('.paw-button').forEach(elem => { elem.addEventListener('click', e => { let number = elem.children[1].textContent; if(!elem.classList.contains('animation')) { elem.classList.add('animation'); for(let i = 0; i < confettiAmount; i++) { createConfetti(elem); } setTimeout(() => { elem.classList.add('confetti'); setTimeout(() => { elem.classList.add('liked'); elem.children[1].textContent = parseInt(number) + 1; }, 400); setTimeout(() => { elem.querySelectorAll('i').forEach(i => i.remove()); }, 600); }, 260); } else { elem.classList.remove('animation', 'liked', 'confetti'); elem.children[1].textContent = parseInt(number) - 1; } e.preventDefault(); }); });
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>爪子点赞动画-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号