Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
Love
Love
css
* { box-sizing: border-box; } body { min-height: 100vh; display: -webkit-box; display: flex; -webkit-box-align: center; align-items: center; -webkit-box-pack: center; justify-content: center; background: #fafafa; } body > * + * { margin-right: 24px; } :root { --transition: 0.3; --heart-fill: #e63b19; } .heart { height: 100%; width: 100%; position: absolute; } .heart--stroke { stroke: var(--heart-stroke); stroke-width: 2.5px; fill: none; } .heart--fill { stroke: none; fill: var(--heart-fill); -webkit-transform: scale(var(--scale, 0)); transform: scale(var(--scale, 0)); } .heart__particle { height: 16px; width: 16px; position: absolute; top: 50%; left: 50%; border-radius: 50%; background: hsl(var(--h), 80%, 70%); -webkit-transform: translate(-50%, -50%) rotate(calc(var(--r, 0) * 1deg)) translate(0, calc(var(--radius, 0) * 1px)) scale(0); transform: translate(-50%, -50%) rotate(calc(var(--r, 0) * 1deg)) translate(0, calc(var(--radius, 0) * 1px)) scale(0); } .button { height: 40px; border: 0; cursor: pointer; border-radius: 6px; position: relative; display: -webkit-box; display: flex; -webkit-box-align: center; align-items: center; -webkit-box-pack: center; justify-content: center; width: 100px; font-family: sans-serif; text-align: left; outline: transparent; color: var(--stroke); background: var(--fill); background: hsl(var(--hue), calc(var(--saturation) * 1%), calc(var(--lightness) * 1%)); box-shadow: 2px 4px 4px rgba(26,26,26,0.5); -webkit-transition: box-shadow 0.2s, background 0.2s; transition: box-shadow 0.2s, background 0.2s; } .button--primary { --hue: 260; --saturation: 50; --lightness: 20; --stroke: #fff; --heart-stroke: #fff; margin-right: 24px; } .button--secondary { --hue: 0; --saturation: 0; --lightness: 100; --stroke: #666; --heart-stroke: #999; } .button__text { margin-right: 6px; opacity: var(--opacity); } .button__icon { position: relative; height: 24px; width: 24px; } .button:hover { --scale: 0.3; background: hsl(var(--hue), calc(var(--saturation) * 1%), calc(var(--lightness) * 0.96%)); box-shadow: 2px 2px 4px rgba(26,26,26,0.5); } .button:hover .heart--fill { -webkit-transition: -webkit-transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); transition: -webkit-transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); transition: transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); transition: transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5), -webkit-transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); } .button:active { background: hsl(var(--hue), calc(var(--saturation) * 1%), calc(var(--lightness) * 0.92%)); box-shadow: 0 0 0 rgba(26,26,26,0.5); } .button--active, .button--active:hover { --scale: 0.94; --opacity: 0.25; } .button--active .heart--fill, .button--active:hover .heart--fill { -webkit-transition: -webkit-transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); transition: -webkit-transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); transition: transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); transition: transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5), -webkit-transform calc(var(--transition) * 1s) cubic-bezier(0.7, 0.9, 0.6, 2.5); } .button--active .button__text, .button--active:hover .button__text { -webkit-transition: opacity 0.1s; transition: opacity 0.1s; } .button--active .heart__particle, .button--active:hover .heart__particle { opacity: 0; -webkit-transform: translate(-50%, -50%) rotate(calc(var(--r, 0) * 1deg)) translate(0, calc(var(--d, 0) * 1px)) scale(var(--s)); transform: translate(-50%, -50%) rotate(calc(var(--r, 0) * 1deg)) translate(0, calc(var(--d, 0) * 1px)) scale(var(--s)); -webkit-transition: opacity calc(var(--transition) * 0.25s) calc(var(--t) * 1.25s), -webkit-transform calc(var(--t) * 1.25s) calc(var(--transition) * 0.5s); transition: opacity calc(var(--transition) * 0.25s) calc(var(--t) * 1.25s), -webkit-transform calc(var(--t) * 1.25s) calc(var(--transition) * 0.5s); transition: transform calc(var(--t) * 1.25s) calc(var(--transition) * 0.5s), opacity calc(var(--transition) * 0.25s) calc(var(--t) * 1.25s); transition: transform calc(var(--t) * 1.25s) calc(var(--transition) * 0.5s), opacity calc(var(--transition) * 0.25s) calc(var(--t) * 1.25s), -webkit-transform calc(var(--t) * 1.25s) calc(var(--transition) * 0.5s); }
JavaScript
const random = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; const COUNT = 360 / 6; const BTN = document.querySelectorAll(".button"); const setParticles = b => { const PARTICLES = b.querySelectorAll('.heart__particle'); console.info(PARTICLES.forEach); PARTICLES.forEach((particle, index) => { const CHARACTER = { "--d": random(30, 60), "--r": 360 / 25 * index, "--h": random(0, 360), "--t": random(25, 50) / 100, "--s": random(20, 60) / 100 }; particle.setAttribute( "style", JSON.stringify(CHARACTER). replace(/,/g, ";"). substring(1, JSON.stringify(CHARACTER).length - 1). replace(/"/g, "")); }); }; BTN.forEach(b => { setParticles(b); b.addEventListener("click", () => { b.classList.toggle('button--active'); if (b.classList.contains('button--active')) setParticles(b); }); });
粒子
时间
文字
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号