html - 悬停链接边框动画
问题描述
我想知道当我将鼠标悬停在链接上时如何为链接设置动画。我希望顶部边框向下移动,底部边框向上移动。当动画结束时,边框应该消失。当我将鼠标悬停在链接上时,边框应该会出现并显示动画。
HTML:
<ul>
<li class="active"><a href="/index">Home</a></li>
<li><a href="/about">About Me</a></li>
<li><a href="/passion">My Passion</a></li>
</ul>
CSS:
ul li a {
border-bottom: 3px transparent solid;
border-top: 3px transparent solid;
}
ul li a::before {
position: absolute;
left: 0;
top: 0;
visibility: hidden;
-moz-transition: 0.3s;
-o-transition: 0.3s;
-webkit-transition: 0.3s;
transition: 0.3s;
}
ul li a::after {
position: absolute;
left: 0;
top: 100%;
visibility: hidden;
-moz-transition: 0.3s;
-o-transition: 0.3s;
-webkit-transition: 0.3s;
transition: 0.3s;
}
ul li a:hover {
color: blue;
}
ul li a:hover::before {
visibility: visible;
top: 100%;
background: blue;
}
ul li a:hover::after {
visibility: visible;
top: 0;
background: blue;
}
预期结果:
解决方案
---html---
<a href="#about"><span class="a-border" onclick="menuclick(this)">ABOUT US</span></a>
<a href="#creater"><span class="a-border" onclick="menuclick(this)">CREATERS</span></a>
<a href="#news"><span class="a-border" onclick="menuclick(this)">NEWS</span></a>
<a href="#contact"><span class="a-border" onclick="menuclick(this)">CONTACT</span></a>
---css---
a {
text-decoration: none;
}
a:hover {
cursor: pointer;
}
.a-border {
display: inline-block;
position: relative;
color: white;
padding: 0.5rem 0.25rem;
margin: 0 1.5rem;
overflow: hidden;
}
.a-border::after {
content: "";
display: block;
position: absolute;
bottom: -8px;
left: -3%;
width: 106%
border-top: 2px solid white;
transform: scale(0, 1);
transform-origin: 0% 100%;
transition: transform 0.4s;
}
a:hover .a-border::after {
transform:scale(1, 1);
}
a.focused .a-border::after {
transform: none;
}
---js---
function menuclick(underline) {
var focused = document.getElementsByClassName("focused");
var i;
for (i = 0; i < focused.length; i++) {
var under = focused[i];
if (under.classList.contains('focused')) {
under.classList.remove('focused');
}
}
if (!underline.parentElement.classList.contains('focused')) {
underline.parentElement.classList.add('focused');
}
}
推荐阅读
- mysql - 将复选框值从 jTable 保存到数据库中
- c# - Selenium:使用序列选择具有相似属性的元素
- javascript - 在 JavaScript 中计算不包括周末和联邦假日的前一个工作日
- c - 如何正确使用 strsep() 解析数组?
- json - 来自 json 文件的 Ansible 列表
- javascript - 仅在大型反应项目中渲染特定组件
- java - 缓存的历史页面是否在重新加载时执行其 Java?
- vue.js - 如何绑定来自另一个组件的类作为道具
- jquery - 在 ASP.NET Core 3.0 中使用 Ajax 调用控制器方法导致 500 错误
- php - php artisan 默认 created_at 列是 NULL 而不是当前日期时间