Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
Button
Playful hover!
Simple
css
.button.alternative { --color-hover: #2B3044; --background: #362A89; --hover-back: #6D58FF; --hover-front: #F6F8FF; } .button.simple { --background: #275EFE; --background-hover: #1749DB; } .button { --color: #fff; --color-hover: var(--color); --background: #2B3044; --background-hover: var(--background); --hover-back: #6D58FF; --hover-front: #5C86FF; padding: 8px 28px; border-radius: 20px; line-height: 24px; font-size: 14px; font-weight: 600; letter-spacing: .02em; border: none; outline: none; position: relative; overflow: hidden; cursor: pointer; -webkit-appearance: none; -webkit-tap-highlight-color: transparent; -webkit-mask-image: -webkit-radial-gradient(white, black); color: var(--c, var(--color)); background: var(--b, var(--background)); -webkit-transition: color 0.2s linear var(--c-d, 0.2s), background 0.3s linear var(--b-d, 0.2s); transition: color 0.2s linear var(--c-d, 0.2s), background 0.3s linear var(--b-d, 0.2s); } .button:not(.simple):before, .button:not(.simple):after { content: ''; position: absolute; background: var(--pb, var(--hover-back)); top: 0; left: 0; right: 0; height: 200%; border-radius: var(--br, 40%); -webkit-transform: translateY(var(--y, 50%)); transform: translateY(var(--y, 50%)); -webkit-transition: border-radius 0.5s ease var(--br-d, 0.08s), -webkit-transform var(--d, 0.4s) ease-in var(--d-d, 0s); transition: border-radius 0.5s ease var(--br-d, 0.08s), -webkit-transform var(--d, 0.4s) ease-in var(--d-d, 0s); transition: transform var(--d, 0.4s) ease-in var(--d-d, 0s), border-radius 0.5s ease var(--br-d, 0.08s); transition: transform var(--d, 0.4s) ease-in var(--d-d, 0s), border-radius 0.5s ease var(--br-d, 0.08s), -webkit-transform var(--d, 0.4s) ease-in var(--d-d, 0s); } .button:not(.simple):after { --pb: var(--hover-front); --d: .44s; } .button div { z-index: 1; position: relative; display: -webkit-box; display: flex; } .button div span { display: block; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); -webkit-animation: var(--name, none) 0.7s linear forwards 0.18s; animation: var(--name, none) 0.7s linear forwards 0.18s; } .button.in { --name: move; } .button.in:not(.out) { --c: var(--color-hover); --b: var(--background-hover); } .button.in:not(.out):before, .button.in:not(.out):after { --y: 0; --br: 5%; } .button.in:not(.out):after { --br: 10%; --d-d: .02s; } .button.in.out { --name: move-out; } .button.in.out:before { --d-d: .06s; } @-webkit-keyframes move { 30%, 36% { -webkit-transform: translateY(calc(-6px * var(--move))) translateZ(0) rotate(calc(-13deg * var(--rotate) * var(--part))); transform: translateY(calc(-6px * var(--move))) translateZ(0) rotate(calc(-13deg * var(--rotate) * var(--part))); } 50% { -webkit-transform: translateY(calc(3px * var(--move))) translateZ(0) rotate(calc(6deg * var(--rotate) * var(--part))); transform: translateY(calc(3px * var(--move))) translateZ(0) rotate(calc(6deg * var(--rotate) * var(--part))); } 70% { -webkit-transform: translateY(calc(-2px * var(--move))) translateZ(0) rotate(calc(-3deg * var(--rotate) * var(--part))); transform: translateY(calc(-2px * var(--move))) translateZ(0) rotate(calc(-3deg * var(--rotate) * var(--part))); } } @keyframes move { 30%, 36% { -webkit-transform: translateY(calc(-6px * var(--move))) translateZ(0) rotate(calc(-13deg * var(--rotate) * var(--part))); transform: translateY(calc(-6px * var(--move))) translateZ(0) rotate(calc(-13deg * var(--rotate) * var(--part))); } 50% { -webkit-transform: translateY(calc(3px * var(--move))) translateZ(0) rotate(calc(6deg * var(--rotate) * var(--part))); transform: translateY(calc(3px * var(--move))) translateZ(0) rotate(calc(6deg * var(--rotate) * var(--part))); } 70% { -webkit-transform: translateY(calc(-2px * var(--move))) translateZ(0) rotate(calc(-3deg * var(--rotate) * var(--part))); transform: translateY(calc(-2px * var(--move))) translateZ(0) rotate(calc(-3deg * var(--rotate) * var(--part))); } } @-webkit-keyframes move-out { 30%, 36% { -webkit-transform: translateY(calc(6px * var(--move))) translateZ(0) rotate(calc(13deg * var(--rotate) * var(--part))); transform: translateY(calc(6px * var(--move))) translateZ(0) rotate(calc(13deg * var(--rotate) * var(--part))); } 50% { -webkit-transform: translateY(calc(-3px * var(--move))) translateZ(0) rotate(calc(-6deg * var(--rotate) * var(--part))); transform: translateY(calc(-3px * var(--move))) translateZ(0) rotate(calc(-6deg * var(--rotate) * var(--part))); } 70% { -webkit-transform: translateY(calc(2px * var(--move))) translateZ(0) rotate(calc(3deg * var(--rotate) * var(--part))); transform: translateY(calc(2px * var(--move))) translateZ(0) rotate(calc(3deg * var(--rotate) * var(--part))); } } @keyframes move-out { 30%, 36% { -webkit-transform: translateY(calc(6px * var(--move))) translateZ(0) rotate(calc(13deg * var(--rotate) * var(--part))); transform: translateY(calc(6px * var(--move))) translateZ(0) rotate(calc(13deg * var(--rotate) * var(--part))); } 50% { -webkit-transform: translateY(calc(-3px * var(--move))) translateZ(0) rotate(calc(-6deg * var(--rotate) * var(--part))); transform: translateY(calc(-3px * var(--move))) translateZ(0) rotate(calc(-6deg * var(--rotate) * var(--part))); } 70% { -webkit-transform: translateY(calc(2px * var(--move))) translateZ(0) rotate(calc(3deg * var(--rotate) * var(--part))); 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 { box-sizing: inherit; } body { min-height: 100vh; display: -webkit-box; display: flex; font-family: 'Inter UI', 'Inter', Arial; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center; background: #E1E6F9; } @media (max-width: 440px) { body { -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; } } body .button { display: block; margin: 0 8px; } body .button:first-child { margin-left: 0; } body .button:last-child { margin-right: 0; } @media (max-width: 440px) { body .button { margin: 8px 0; } }
JavaScript
document.querySelectorAll('.button').forEach(button => { let div = document.createElement('div'), letters = button.textContent.trim().split(''); function elements(letter, index, array) { let element = document.createElement('span'), part = (index >= array.length / 2) ? -1 : 1, position = (index >= array.length / 2) ? array.length / 2 - index + (array.length / 2 - 1) : index, move = position / (array.length / 2), rotate = 1 - move; element.innerHTML = !letter.trim() ? ' ' : letter; element.style.setProperty('--move', move); element.style.setProperty('--rotate', rotate); element.style.setProperty('--part', part); div.appendChild(element); } letters.forEach(elements); button.innerHTML = div.outerHTML; button.addEventListener('mouseenter', e => { if(!button.classList.contains('out')) { button.classList.add('in'); } }); button.addEventListener('mouseleave', e => { if(button.classList.contains('in')) { button.classList.add('out'); setTimeout(() => button.classList.remove('in', 'out'), 950); } }); });
粒子
时间
文字
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号