React Router Dom v6 - 活动导航上的悬停样式
React Router Dom v6 - hover styles on active nav
我有一个具有悬停状态和活动导航样式的导航栏。我正在尝试让我的 ACTIVE navlink 也具有自定义悬停状态。现在,活动样式正在覆盖悬停状态。我如何在活动导航栏上保持我的悬停状态样式 link?
发生了什么....
活动导航样式(看起来不错)
当我将鼠标悬停在活动导航栏上时(希望文本为白色)
<NavLink
to="/games"
className='nav-link'
style={({ isActive }) =>
isActive
? {
color: '#0E1333',
borderBottom: 'solid 2.5px #0E1333',
paddingBottom: 2.5
}
: {}
}
>
<img src={require('../../assets/icons/gamesIcon.png')} id='projects-icon' />
Games
</NavLink>
样式表
.nav-link {
text-decoration: none;
background-color: white;
color: #0E1333;
font-family: 'Gilroy-ExtraBold';
font-size: 18px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 100%;
padding-left: 25px;
padding-right: 25px;
}
.nav-link:hover {
background-color: #0E1333;
color: #fff;
}
我试过了...
a.nav-link.active:hover {
color: white
}
那是因为 NavBar
中的 style
道具覆盖了 悬停 状态声明。
可能的解决方案是删除 style
属性并直接在 .css 文件中声明样式。
<NavLink to="/games" className="nav-link">
<img src={require("../../assets/icons/gamesIcon.png")} id="projects-icon" />
Games
</NavLink>;
a.nav-link.active {
color: #0E1333;
border-bottom: solid 2.5px #0E1333;
padding-bottom: 2.5em;
}
a.nav-link.active:hover {
color: white
}
将“样式”逻辑移至 className
道具并添加“活动”class。内联 style
属性增加了更高的 CSS 特异性并覆盖了 CSS.
中定义的样式
<NavLink
to="/games"
className={({ isActive }) =>
["nav-link", isActive ? "active" : null]
.filter(Boolean)
.join(" ")
}
>
<img src={require('../../assets/icons/gamesIcon.png')} id='projects-icon' />
Games
</NavLink>
CSS
.nav-link {
text-decoration: none;
background-color: white;
color: #0E1333;
font-family: 'Gilroy-ExtraBold';
font-size: 18px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 100%;
padding-left: 25px;
padding-right: 25px;
}
.nav-link:hover, .active:hover {
background-color: #0E1333;
color: #fff;
}
.active {
color: #0E1333;
border-bottom: solid 2.5px #0E1333;
padding-bottom: 2.5rem;
}
请注意 NavLink
组件 已经 默认添加了 "active"
class 名称,因此 link 逻辑可以简化为:
<NavLink to="/games" className="nav-link">
<img src={require('../../assets/icons/gamesIcon.png')} id='projects-icon' />
Games
</NavLink>
我有一个具有悬停状态和活动导航样式的导航栏。我正在尝试让我的 ACTIVE navlink 也具有自定义悬停状态。现在,活动样式正在覆盖悬停状态。我如何在活动导航栏上保持我的悬停状态样式 link?
发生了什么....
活动导航样式(看起来不错)
当我将鼠标悬停在活动导航栏上时(希望文本为白色)
<NavLink
to="/games"
className='nav-link'
style={({ isActive }) =>
isActive
? {
color: '#0E1333',
borderBottom: 'solid 2.5px #0E1333',
paddingBottom: 2.5
}
: {}
}
>
<img src={require('../../assets/icons/gamesIcon.png')} id='projects-icon' />
Games
</NavLink>
样式表
.nav-link {
text-decoration: none;
background-color: white;
color: #0E1333;
font-family: 'Gilroy-ExtraBold';
font-size: 18px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 100%;
padding-left: 25px;
padding-right: 25px;
}
.nav-link:hover {
background-color: #0E1333;
color: #fff;
}
我试过了...
a.nav-link.active:hover {
color: white
}
那是因为 NavBar
中的 style
道具覆盖了 悬停 状态声明。
可能的解决方案是删除 style
属性并直接在 .css 文件中声明样式。
<NavLink to="/games" className="nav-link">
<img src={require("../../assets/icons/gamesIcon.png")} id="projects-icon" />
Games
</NavLink>;
a.nav-link.active {
color: #0E1333;
border-bottom: solid 2.5px #0E1333;
padding-bottom: 2.5em;
}
a.nav-link.active:hover {
color: white
}
将“样式”逻辑移至 className
道具并添加“活动”class。内联 style
属性增加了更高的 CSS 特异性并覆盖了 CSS.
<NavLink
to="/games"
className={({ isActive }) =>
["nav-link", isActive ? "active" : null]
.filter(Boolean)
.join(" ")
}
>
<img src={require('../../assets/icons/gamesIcon.png')} id='projects-icon' />
Games
</NavLink>
CSS
.nav-link {
text-decoration: none;
background-color: white;
color: #0E1333;
font-family: 'Gilroy-ExtraBold';
font-size: 18px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 100%;
padding-left: 25px;
padding-right: 25px;
}
.nav-link:hover, .active:hover {
background-color: #0E1333;
color: #fff;
}
.active {
color: #0E1333;
border-bottom: solid 2.5px #0E1333;
padding-bottom: 2.5rem;
}
请注意 NavLink
组件 已经 默认添加了 "active"
class 名称,因此 link 逻辑可以简化为:
<NavLink to="/games" className="nav-link">
<img src={require('../../assets/icons/gamesIcon.png')} id='projects-icon' />
Games
</NavLink>