【发布时间】:2021-02-12 14:55:01
【问题描述】:
我正在尝试使用 HTML/CSS 制作此侧导航栏,并在其中添加一些悬停动画。每当您将鼠标悬停在图标上时,它都会缩放为两倍,并且导航栏中的其余项目会分散。但我的问题不在于我已经使用 javascript 和 CSS 实现了该动画。问题是动画在相反方向上运行不顺畅。所以我试图添加简短的 CSS 动画来检查反向动画过渡是否正常工作。
这是我的 CSS 代码:
ul{
list-style: none;
}
.navmenu{
position: fixed;
top: 50%;
transform: translateY(-50%);
}
.navmenu ul{
padding-left: 40px;
position: relative;
}
.navmenu ul li {
padding: 15px 0;
}
.navmenu ul li a{
text-decoration: none;
position: relative;
font-size: 1.8rem;
font-weight: 900;
}
.navmenu ul li a i{
-webkit-transition: all 2s ease-in;
transition: all 2s ease-in;
}
.navmenu ul li a:hover i{
-webkit-animation: slide-out-top 0.2s ease-out both;
animation: slide-out-top 0.2s ease-out both;
color: orange;
}
@-webkit-keyframes slide-out-top {
0% {
-webkit-transform: scale(1) translateY(0);
transform: scale(1) translateY(0);
}
100% {
-webkit-transform: scale(0.8,0.8) translateY(-60px);
transform: scale(0.8,0.8) translateY(-60px);
}
}
@keyframes slide-out-top {
0% {
-webkit-transform: scale(1) translateY(0);
transform: scale(1) translateY(0);
}
100% {
-webkit-transform: scale(0.8,0.8) translateY(-60px);
transform: scale(0.8,0.8) translateY(-60px);
}
}
这是它的 HTML 代码:
<nav class="navmenu">
<ul>
<li><a href="#home" class=""><i class="fas fa-home"></i><span>Home</span></a></li>
<li><a href="#projects" class=""><i class="fas fa-laptop-code"></i><span>Projects</span></a></li>
<li><a href="#skills" class=""><i class="fas fa-code"></i><span>Skills</span></a></li>
<li><a href="#training" class=""><i class="fas fa-dumbbell"></i><span>Training</span></a></li>
<li><a href="#education" class=""><i class="fas fa-user-graduate"></i><span>Education</span></a>
</li>
<li><a href="#contact_me" class=""><i class="far fa-address-book"></i><span>Contact me</span></a>
</li>
</ul>
</nav>
https://codepen.io/naveen444/pen/zYooJzd?editors=1100
我在网上看到动画和转场是不同的,转场可以反转,但不是动画,但我之前使用过 CSS 动画,我记得转场:全 2;可以顺利地反转所有的过渡。如果我说错了什么,请原谅我。我是这方面的绝对初学者,请纠正我。
【问题讨论】:
-
您的代码段似乎没有反映您的问题的概要。也许你可以用你的问题片段创建一个可重现的问题。
-
问题是 CSS 动画在反向方向上没有平滑过渡。为什么当我们将鼠标移出时,过渡属性不起作用并且持续时间不适用。我提供了一个密码笔
-
您可以使用 javascript 并向您的元素添加带有动画的类,这样当您处于返回状态时,将您从预期动画返回到动画状态触发之前的特定动画.这将允许您在动画触发之前将平滑的动画恢复到初始状态。
标签: html css css-animations css-transitions