[原生JS]鼠标悬停下划线效果

7 篇文章 0 订阅

[原生JS]鼠标悬停下划线效果在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>[原生JS]鼠标悬停下划线效果</title>
    <style type="text/css" media="screen">
    body{display:flex;justify-content:center;align-items:center;min-height:100vh;background:#f8f8f8;font:normal 400 130%/1.5 -apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;}
    nav{display:grid;grid-auto-flow:column;grid-gap:1em;}
    a{position:relative;font-weight:600;text-decoration:none;color:rgba(0,0,0,0.4);transition:color .3s ease;}
    a::after{--scale:0;content:'';position:absolute;left:0;right:0;top:100%;height:3px;background:#4c81c9;-webkit-transform:scaleX(var(--scale));transform:scaleX(var(--scale));-webkit-transform-origin:var(--x) 50%;transform-origin:var(--x) 50%;transition:-webkit-transform 0.3s cubic-bezier(0.535,0.05,0.355,1);transition:transform 0.3s cubic-bezier(0.535,0.05,0.355,1);transition:transform 0.3s cubic-bezier(0.535,0.05,0.355,1),-webkit-transform 0.3s cubic-bezier(0.535,0.05,0.355,1);}
    a:hover{color:#4c81c9;}
    a:hover::after{--scale:1;}
    </style>
</head>
<body>

    <nav>
        <a href="#">首页</a>
        <a href="#">产品展示</a>
        <a href="#">新闻资讯</a>
        <a href="#">关于我们</a>
    </nav>
    <script>
    document.querySelectorAll('a').forEach(elem => {
          elem.onmouseenter =
          elem.onmouseleave = e => {
            const tolerance = 5;
            const left = 0;
            const right = elem.clientWidth;
            let x = e.pageX - elem.offsetLeft;
            if (x - tolerance < left) x = left;
            if (x + tolerance > right) x = right;
         
            elem.style.setProperty('--x', `${x}px`);
         
          };
        });
    </script>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值