javascript - 如何保持这个箭头不断旋转
问题描述
所以我决定建立一个导航栏,但里面有一个下拉菜单,所以我这样做了,我不知道如何保持箭头不断旋转,直到下拉菜单消失。请帮忙。
我尝试过 javascript 和其他 CSS 技巧,但没有想到任何东西。如果我最终需要为此使用javascript,那很好,我只想让它工作:)
我希望箭头不断旋转,直到下拉内容消失。
* {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
outline: 0;
}
/* ===== HEADER ===== */
header {
padding: 20px 30px 40px 0;
box-shadow: 0 1px 10px rgba(0, 0, 0, .11);
}
header nav {
float: right;
}
header li {
margin: 0 .5em;
display: inline-block;
}
header a {
font-size: 20px;
text-transform: capitalize;
text-decoration: none;
color: #666666;
transition: .2s;
}
header a:hover {
color: black;
}
header .dropdown-link {
padding-right: 5px;
}
header i {
cursor: pointer;
transition: .35s;
}
header .dropdown-link:hover+i,
header i:hover {
transform: rotate(180deg);
}
header i:hover+.dropdown-content {
display: grid;
}
.dropdown-link {
padding: 20px 0;
}
/* ===== DROPDOWN-CONTENT ===== */
.dropdown-content {
display: none;
position: absolute;
margin: 10px 0 0 0;
padding: 10px 20px;
background-color: white;
/* 0 x and y offset, 10px blur and 5px size */
box-shadow: 0 0 10px 5px rgba(0, 0, 0, .11);
border-radius: 10px;
}
.dropdown-content:hover {
display: grid;
}
.dropdown-link:hover~.dropdown-content {
display: grid;
}
.dropdown-content a {
padding: 5px 0;
}
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<header>
<nav>
<ul>
<li><a href="#">home</a></li>
<li><a href="#">features</a></li>
<li class="dropdown-item">
<a class="dropdown-link" href="#">dropdown</a>
<i class="fa fa-chevron-down"></i>
<div class="dropdown-content">
<a href="#">link 1</a>
<a href="#">link 2</a>
<a href="#">link 3</a>
<a href="#">link 4</a>
<a href="#">link 5</a>
</div>
</li>
<li><a href="#">contact</a></li>
<li><a href="#">about</a></li>
</ul>
</nav>
</header>
解决方案
问题是当您将鼠标悬停在<a>
标签 ( dropdown-link
) 上时,您的图标会发生变化。您需要在li
( dropdown-item
) 元素上设置悬停,因此当显示 UL 时,从技术上讲,您仍然悬停在li
.
这是重要的代码(也是唯一更新的东西):
header .dropdown-item:hover > i,
header i:hover {
transform: rotate(180deg);
}
* {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
outline: 0;
}
/* ===== HEADER ===== */
header {
padding: 20px 30px 40px 0;
box-shadow: 0 1px 10px rgba(0, 0, 0, .11);
}
header nav {
float: right;
}
header li {
margin: 0 .5em;
display: inline-block;
}
header a {
font-size: 20px;
text-transform: capitalize;
text-decoration: none;
color: #666666;
transition: .2s;
}
header a:hover {
color: black;
}
header .dropdown-link {
padding-right: 5px;
}
header i {
cursor: pointer;
transition: .35s;
}
header .dropdown-item:hover>i,
header i:hover {
transform: rotate(180deg);
}
header i:hover+.dropdown-content {
display: grid;
}
.dropdown-link {
padding: 20px 0;
}
/* ===== DROPDOWN-CONTENT ===== */
.dropdown-content {
display: none;
position: absolute;
margin: 10px 0 0 0;
padding: 10px 20px;
background-color: white;
/* 0 x and y offset, 10px blur and 5px size */
box-shadow: 0 0 10px 5px rgba(0, 0, 0, .11);
border-radius: 10px;
}
.dropdown-content:hover {
display: grid;
}
.dropdown-link:hover~.dropdown-content {
display: grid;
}
.dropdown-content a {
padding: 5px 0;
}
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<header>
<nav>
<ul>
<li><a href="#">home</a></li>
<li><a href="#">features</a></li>
<li class="dropdown-item">
<a class="dropdown-link" href="#">dropdown</a>
<i class="fa fa-chevron-down"></i>
<div class="dropdown-content">
<a href="#">link 1</a>
<a href="#">link 2</a>
<a href="#">link 3</a>
<a href="#">link 4</a>
<a href="#">link 5</a>
</div>
</li>
<li><a href="#">contact</a></li>
<li><a href="#">about</a></li>
</ul>
</nav>
</header>
推荐阅读
- java - 通过 servlet 将新用户对象插入 JDBC
- html - 如何用基于字体的图标(Font Awesome/Ion)替换 SVG 图标?
- ios - 检查 iOS 中的 firebase 写入操作是否成功
- javascript - 迭代/遍历每个子元素以添加/修改其属性
- javascript - 当焦点在 html 画布上时 $.focus() 不起作用(使用fabricjs)
- python - 运行'remodel'的pycharm错误:无法运行远程python解释器:无法获取部署服务器的远程凭据项目级副本
- arrays - 带有循环的Powershell多个If语句
- c# - 将图像添加到 word 模板的占位符
- python - 解析 xml 文件并返回特定变量的列表
- python - 使用命名空间时Python lxml无法导航