弹性导航栏,导航栏滑动特效

效果展示 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://kit.fontawesome.com/a076d05399.js"></script>
    <style>
        .wrapper{
            margin: 0 auto;
            height: 60px;
            width: 55vw;
            background: #fff;
            box-shadow: 0 5px 10px rgba(0,0,0,0.25);
            line-height: 60px;
            text-align: center;
            border-radius: 50px;
        }
        .wrapper nav{
            display: flex;
            position: relative;
        }
        .wrapper nav label{
            flex: 1;
            width: 100%;
            /*label 标签在.tab之上*/
            z-index: 1;
            position: relative;
            /* 该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状*/
            cursor: pointer;
        }
        .wrapper nav label a{
            /*
            问题:点击选项文字时.tab背景不会滑动,而点击label其它区域会滑动
            原因分析:原本点击label中的任何部分都相对于选中了按钮,但是此处文字被a标签包裹,变成链接,就无法实现效果
            解决1:加上z-index: -1;让a标签在label之下可以解决,但是此时会让a标签的链接点击失效(无法跳转)
            解决2:既然会产生以上问题,那么可以直接不用a标签
            */
            z-index: -1;
            position: relative;
            color: #1d1f20;
            font-weight: 100;
            font-size: 20px;
            transition: color 0.6s ease;
        }
        .wrapper nav input{
            display: none;
        }
        .wrapper nav #home:checked~label.home a{
            color: #fff;
        }
        .wrapper nav #inbox:checked~label.inbox a{
            color: #fff;
        }
        .wrapper nav #contact:checked~label.contact a{
            color: #fff;
        }
        .wrapper nav #heart:checked~label.heart a{
            color: #fff;
        }
        .wrapper nav #about:checked~label.about a{
            color: #fff;
        }
        .wrapper nav #inbox:checked~.tab{
            left: 20%;
        }
        .wrapper nav #contact:checked~.tab{
            left: 40%;
        }
        .wrapper nav #heart:checked~.tab{
            left: 60%;
        }
        .wrapper nav #about:checked~.tab{
            left: 80%;
        }

        .tab{
            position: absolute;
            width: 20%;
            height: 100%;
            background: linear-gradient(45deg,#05abe0 0%,#8200f4 100%);
            left: 0;
            bottom: 0;
            border-radius: 50px;
            /*自定义曲线运动速率*/
            transition: 0.6s cubic-bezier(0.68,-0.55,0.625,1.55);
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <nav>
            <!--当某个input选中后,就将tab移动至某一选项-->
            <input type="radio"name="tab"id="home"checked>
            <input type="radio"name="tab"id="inbox">
            <input type="radio"name="tab"id="contact">
            <input type="radio"name="tab"id="heart">
            <input type="radio"name="tab"id="about">
<!--            加入for属性,将label与input绑定,点击label内容相对于选中了对应的input-->
            <label for="home"class="home"><a href="#"><i class="fas fa-home">Home</i></a></label>
            <label for="inbox"class="inbox"><a href="#"><i class="fas fa-comment">Inbox</i></a></label>
            <label for="contact"class="contact"><a href="#"><i class="fas fa-envelope">contact</i></a></label>
            <label for="heart"class="heart"><a href="#"><i class="fas fa-heart">heart</i></a></label>
            <label for="about"class="about"><a href="#"><i class="fas fa-user">About</i></a></label>
            <!--滑动盒子-->
            <div class="tab"></div>
        </nav>
    </div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IABQL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值