利用JQ实现导航栏边框的动画效果

<style>

        ul,

        li,

        body {

            padding: 0;

            margin: 0;

            list-style: none;

        }

        .nav {

            width: 1200px;

            margin: 100px;

            display: flex;

        }

        .nav li {

            width: 150px;

            height: 50px;

            text-align: center;

            line-height: 50px;

            cursor: pointer;

            box-shadow: 0 0 2px 4px #ccc inset;

            /* 此处设置定位是为了后面的边框线位置做准备 */

            position: relative;

            overflow: hidden;

        }

        .nav li .line {

            position: absolute;

        }

        /* 上边框线 */

        .nav li .top-border {

            width: 150px;

            height: 4px;

            background-color: pink;

            top: 0;

            left: -150px;

        }

        /* 右边框线 */

        .nav li .right-border {

            width: 4px;

            height: 50px;

            top: -50px;

            right: 0;

            background-color: rgb(106, 229, 106);

        }

        /* 下边框线 */

        .nav li .bottom-border {

            width: 150px;

            height: 4px;

            bottom: 0;

            right: -150px;

            background-color: rgb(222, 153, 222);

        }

        /* 左边框线 */

        .nav li .left-border {

            width: 4px;

            height: 50px;

            bottom: -50px;

            left: 0;

            background-color: rgb(0, 204, 255);

        }

    </style>

</head>

<body>

    <ul class="nav">

        <li>

            <div class="line top-border"></div>

            <div class="line right-border"></div>

            <div class="line bottom-border"></div>

            <div class="line left-border"></div>

            <div class="text">导航A</div>

        </li>

        <li>

            <div class="line top-border"></div>

            <div class="line right-border"></div>

            <div class="line bottom-border"></div>

            <div class="line left-border"></div>

            <div class="text">导航B</div>

        </li>

        <li>

            <div class="line top-border"></div>

            <div class="line right-border"></div>

            <div class="line bottom-border"></div>

            <div class="line left-border"></div>

            <div class="text">导航C</div>

        </li>

        <li>

            <div class="line top-border"></div>

            <div class="line right-border"></div>

            <div class="line bottom-border"></div>

            <div class="line left-border"></div>

            <div class="text">导航D</div>

        </li>

    </ul>

    <!-- 引入JS库 -->

    <!-- 此处链接需要根据自己下载JS库位置进行更改 -->

    <script src="../libs/jQuery/jQuerymin.js"></script>

    <script>

        // 需求:

            // 当鼠标移入导航标签时,显示该标签对应的边框线

            // 当鼠标移开导航标签时,隐藏该标签对应的边框线

        // 为导航栏绑定鼠标移入事件

        $(".nav li").on("mouseenter", function () {

            // 显示各位置的边框            

            $(this).find(".top-border").stop().animate({ "left": 0 }, 300);  // 后面的毫秒值表示执行动画函数的时间,一秒等于一千毫秒。用户可以自行切换数值观察动画实现过程

            $(this).find(".right-border").stop().animate({ "top": 0 }, 300);

            $(this).find(".bottom-border").stop().animate({ "right": 0 }, 300);

            $(this).find(".left-border").stop().animate({ "bottom": 0 }, 300);

        })

        // 为导航栏绑定鼠标移开事件

        $(".nav li").on("mouseleave", function () {

            // 隐藏各位置的边框

            $(this).find(".top-border").stop().animate({ left: -150 }, 300);

            $(this).find(".right-border").stop().animate({ top: -50 }, 300);

            $(this).find(".bottom-border").stop().animate({ right: -150 }, 300);

            $(this).find(".left-border").stop().animate({ bottom: -50 }, 300);

        })

    </script>

</body>

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值