鼠标悬停下划线显示特效,html鼠标悬停显示下划线

鼠标悬停下划线显示特效,html鼠标悬停显示下划线html:(index.html)<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>鼠标悬停下划线</title><linkrel=”stylesheet”href=”css/style.css”>&l…

大家好,又见面了,我是你们的朋友全栈君。

html:

(index.html)

<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>鼠标悬停下划线</title>

<link rel="stylesheet" href="css/style.css">

</head>
<body>

<nav>
<a href="#">首页</a>
<a href="#">产品展示</a>
<a href="#">新闻资讯</a>
<a href="#">关于我们</a>
</nav>

<script  src="js/index.js"></script>

</body>
</html>

css3:

(style.css)

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;
}

js代码段:

(index.js)

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`);

  };

});

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145981.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月16日 上午7:20
下一篇 2022年5月16日 上午7:20


相关推荐

  • java集合系列——List集合之Vector介绍(四)

    Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。Vector 是同步的,可用于多线程。

    2022年2月26日
    45
  • 1.javascript的typeof返回哪些数据类型

    1.javascript的typeof返回哪些数据类型javascript 的 typeof 返回哪些数据类型详解

    2026年3月17日
    2
  • realloc() 用法详解

    realloc() 用法详解原型 externvoid realloc void mem address unsignedintn 语法 指针名 数据类型 realloc 要改变内存大小的指针名 新的大小 新的大小若小于原来的大小 原数据的末尾可能丢失 被其他使用内存的数据覆盖等 头文件 include stdlib h 有些编译器需要 include malloc h 在 TC2 0 中可以使用 alloc h 头文件功能 先判断当前的指针是否 malloc h stdlib h

    2026年3月19日
    2
  • pycharm中替换快捷键_python函数参数的四种类型

    pycharm中替换快捷键_python函数参数的四种类型查找:CTRL+F替换:CTRL+R如果想删除,替换那一栏不填就可以了转载于:https://www.cnblogs.com/mghhzAnne/p/9324406.html

    2022年8月28日
    4
  • 读取QQ ClientKey失败分析

    读取QQ ClientKey失败分析MakeClientKe 背景网上有不少获取 ClientKey 的方式 主要是两种 一种是模拟浏览器访问本地登陆的方式获取 ClientKey 第二种就是注入到通过调用它的导出函数获取 ClientKey 上述的两种方式都不难找到各种源码和一些分析 这里跳过 绕过这里使用第一种 原因 不会注入到 没什么乱七八糟的风险不少朋友会发现在发送第二个请求 localhost ptlogin2 com 的时候会出现 403 而且

    2026年3月19日
    1
  • word怎么让页码在指定页面从1开始出来_word里页码怎么设置

    word怎么让页码在指定页面从1开始出来_word里页码怎么设置word排版的时候,因为一般文档都有封面、目录等,导致用默认的页码会使正文开始的时候不是第一页的尴尬情况如下图解决办法:1、先按默认的方法插入页码,插入–&amp;gt;页码2、在正文的前一页结尾处点布局–&amp;gt;分隔符–&amp;gt;下一页3、在正文页双击页码,在设计那里把链接到前一节给取消掉,接着点插入–&amp;gt;页码–&amp;gt;设置页码格式–&amp;gt;点起始页码–&amp;gt;设置为1

    2025年5月28日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号