Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
#tabbar { --background: #D4E8FF; --color: #0D0F18; --shadow: #0D3ED8; position: relative; -webkit-tap-highlight-color: transparent; border-radius: 51px; height: 760px; overflow: hidden; background: #fff; -webkit-transform: translateY(-50%); transform: translateY(-50%); box-shadow: 0 30px 120px 0 var(--shadow); display: -webkit-box; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; --background-scale-x: 1; --background-scale-y: 1; } #tabbar.pressed { --background-opacity: 1; --background-duration: .15s; --background-delay: 0s; } #tabbar .background { position: absolute; left: 0; bottom: 0; right: 0; height: 220px; border-radius: 0 0 51px 51px; overflow: hidden; opacity: var(--background-opacity, 0); -webkit-transition: opacity var(--background-duration, 0.5s) linear var(--background-delay, 0.2s); transition: opacity var(--background-duration, 0.5s) linear var(--background-delay, 0.2s); } #tabbar .background:before, #tabbar .background:after { content: ''; position: absolute; } #tabbar .background:after { left: 0; right: 0; bottom: 0; height: 108px; border-radius: 31px 31px 0 0; background: -webkit-gradient(linear, left top, left bottom, from(var(--background)), color-stop(60%, #fff)); background: linear-gradient(var(--background), #fff 60%); -webkit-transform: scale(var(--background-scale-x), var(--background-scale-y)) translateZ(0); transform: scale(var(--background-scale-x), var(--background-scale-y)) translateZ(0); } #tabbar .background:before { left: var(--dot-left, 50%); bottom: 32px; border-radius: 50%; width: 64px; height: 64px; margin-left: -32px; background: var(--background); -webkit-transform: translateY(var(--dot-y, 0)) scale(var(--dot-scale, 1)) translateZ(0); transform: translateY(var(--dot-y, 0)) scale(var(--dot-scale, 1)) translateZ(0); } @media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { #tabbar .background { -webkit-filter: url(#goo); filter: url(#goo); } } #tabbar ul { margin: auto 0 0 0; padding: 0; list-style: none; width: 375px; height: 108px; display: -webkit-box; display: flex; -webkit-box-pack: center; justify-content: center; position: relative; z-index: 1; } @media (max-width: 400px) { #tabbar ul { width: 340px; } } #tabbar ul li { --button-opacity: 1; margin-top: 24px; } #tabbar ul li:not(:first-child) { margin-left: 24px; } #tabbar ul li:not(:last-child) { margin-right: 24px; } #tabbar ul li.active { --icon-opacity: 0; --icon-filled-opacity: 1; } #tabbar ul li button { display: block; width: 28px; height: 28px; padding: 0; margin: 0; cursor: pointer; outline: none; background: none; border: none; position: relative; -webkit-appearance: none; opacity: var(--button-opacity); } #tabbar ul li button svg { display: block; width: 28px; height: 28px; opacity: var(--opacity, var(--icon-opacity, 1)); -webkit-transition: opacity .25s linear; transition: opacity .25s linear; } #tabbar ul li button svg:last-child { --opacity: var(--icon-filled-opacity, 0); position: absolute; top: 0; left: 0; } * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } html { box-sizing: border-box; -webkit-font-smoothing: antialiased; } * { box-sizing: inherit; } *:before, *:after { box-sizing: inherit; } body { overflow: hidden; min-height: 100vh; font-family: 'Inter'; display: -webkit-box; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: center; align-items: center; background: #275EFE; }
JavaScript
const tabbar = document.querySelector('#tabbar') const listEntries = tabbar.querySelectorAll('li') listEntries.forEach((entry, entryIndex) => { let button = entry.querySelector('button'), tweenEntries, tweenBackground, tweenIcons; button.addEventListener('pointerdown', e => { tabbar.classList.add('pressed'); [...listEntries].filter(e => e.classList.contains('active'))[0].classList.remove('active') entry.classList.add('active') gsap.set(tabbar, { '--dot-left': entry.offsetLeft + entry.offsetWidth / 2 + 'px' }) tweenEntries = gsap.to([...listEntries].filter((e, i) => i !== entryIndex), { x(i) { return i < entryIndex ? 12 : -12 }, y: -4, duration: .6, delay: .2, ease: 'power2.out' }) tweenBackground = gsap.to(tabbar, { '--background-scale-x': .9, '--background-scale-y': 1.1, '--dot-y': -116 + 'px', duration: .5, delay: .2, ease: 'power2.out' }) tweenIcons = gsap.to(button.querySelectorAll('svg'), { y: -112, duration: .55, delay: .15, ease: 'power2.out' }) }) button.addEventListener('pointerup', e => { tabbar.classList.remove('pressed') tweenEntries.pause() tweenBackground.pause() tweenIcons.pause() gsap.to(tabbar, { '--background-scale-x': 1, '--background-scale-y': 1, duration: .8, ease: 'elastic.out(1, .4)' }) gsap.to([...listEntries].filter((e, i) => i !== entryIndex), { x: 0, y: 0, duration: .8, ease: 'elastic.out(1, .4)' }) gsap.to(entry, { '--button-opacity': 0, duration: .25 }) gsap.to(button.querySelectorAll('svg'), { scale: 0, duration: .25 }) gsap.to(tabbar, { '--dot-scale': 0, duration: .25, onComplete() { gsap.set(tabbar, { '--dot-y': 0, '--dot-scale': 1 }) gsap.set(button.querySelectorAll('svg'), { y: 0 }) gsap.to(entry, { '--button-opacity': 1, duration: .25 }) gsap.to(button.querySelectorAll('svg'), { scale: 1, duration: .25 }) } }) }) })
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>tab标签-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号