使用『jQuery』『原生js』制作一个导航栏动效 —— { }

效果

在这里插入图片描述

HTML部分

<body>
    <nav>
        <div id="nav1">导航1</div>
        <div id="nav2">导航2</div>
        <div id="nav3">导航3</div>
        <span id="underscore"></span>
    </nav>
</body>

CSS 部分

* {
    user-select: none;
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

body {
    display: flex;
    justify-content: center;
    height: 100%;
    background-color: #333744;
}

nav {
    padding: 20px;
    position: relative;
    width: 300px;
    height: 30px;
    margin-top: 50px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

nav div {
    font-size: 18px;
    letter-spacing: 2px;
    color: aliceblue;
    cursor: pointer;
}

nav span {
    position: absolute;
    bottom: 0;
    background-color: aliceblue;
    border-radius: 15px;
    width: 100%;
    height: 3px;
    animation: left 0s ease-in-out;
    animation-fill-mode: forwards;
}

@keyframes left {
    from {
        left: 50%;
        width: 100%;
    }
    to {
        left: 18px;
        width: 17.5%;
    }
}

@keyframes center {
    from {
        left: 0;
        width: 100%;
    }
    to {
        left: 123px;
        width: 17.5%;
    }
}

@keyframes right {
    from {
        right: 50%;
        width: 100%;
    }
    to {
        right: 20px;
        width: 17.5%;
    }
}

JavaScript 部分

var speed = 0.5
var tweens = [
    { 'animation': `left ${speed}s ease-in-out`, 'animation-fill-mode': 'forwards' },
    { 'animation': `center ${speed}s ease-in-out`, 'animation-fill-mode': 'forwards' },
    { 'animation': `right ${speed}s ease-in-out`, 'animation-fill-mode': 'forwards' },
]

$(document).ready(function () {

    var navs = document.querySelectorAll('nav div');
    [].forEach.call(navs, (item, index) => {
        item.addEventListener("click", function () {
            $('#underscore').css(tweens[index])
        })
    })

})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微风拂晚霞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值