悬停在顶部导航上无法正常工作 (CSS)
Hover not working properly on topnav (CSS)
我在 HTML 文件中遇到问题。我是 HTML 的新手,当我为我的静态网站 here 制作顶部栏时,我尝试向其添加悬停,但它无法正常工作,只能在“搜索”和“购物车”按钮(它也可以用于“联系我们”,但仅限于右侧)。
所以,我不确定为什么悬停在所有按钮上都不起作用,即使乍一看顶部栏看起来不错。我是否覆盖了我不应该做的事情?这让我很困惑。这是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#topBox {
height: 250px;
margin-top:-50px;
margin-left: auto;
margin-right: auto;
background: #cbe9f3;
border-radius: 15px;
}
#container {
margin-left: 27px;
margin-top: 41px;
position: fixed;
color: white;
font-family: "Cute Aurora Regular";
}
.topnav {
overflow: hidden;
font-family: "Cute Aurora Regular";
background-color: transparent;
border: #c9c7c7 0.1px solid;
margin-top: 5px;
margin-left: auto;
margin-right: auto;
border-left: none;
border-right: none;
}
.topnav a {
float: left;
color: #b47d50;
text-align: center;
margin-left: 27px;
padding: 14px 16px;
margin-right: -20px;
text-decoration: none;
font-size: 19px;
font-weight: bold;
}
.topnav a:hover {
color: #ecb2ad;
}
.topnav a.search {
margin-left: 290px;
}
.topnav a.cart {
margin-left: 25px;
}
br {
display:none;
}
/* Desktop grande */
@media (min-width: 1025px) {
#topBox {
width:1000px;
}
#container {
font-size: 600%;
}
#containerBunny {
width: 250px;
margin-left: 550px;
margin-top: 150px;
}
.topnav {
width: 1000px;
}
}
/* Desktop pequeno */
@media (min-width: 769px) and (max-width: 1024px) {
#topBox {
width:750px;
}
#container {
font-size: 500%;
}
#containerBunny {
width: 200px;
margin-left: 460px;
margin-top: 170px;
}
.topnav {
width: 745px;
}
}
/* Tablets */
@media (min-width: 481px) and (max-width: 768px) {
}
/* Mobile */
@media (min-width: 320px) and (max-width: 480px) {
#topBox {
width:1000px;
}
#container {
font-size: 520%;
}
#containerBunny {
width: 250px;
}
br {
display: block;
}
}
</style>
</head>
<body>
<div id="topBox">
<div id="container">
<p>Bunny <br>Shop</p>
</div>
<img id="containerBunny" src="images/molangMilk.png" alt="">
</div>
<div class="topnav">
<a href="#home">HOME</a>
<a href="#new">NEW</a>
<a href="#sale">SALE</a>
<a href="#products">PRODUCTS</a>
<a href="#contactUs">CONTACT US</a>
<a class="search" href="#search">SEARCH</a>
<a class="cart" href="#cart">CART</a>
</div>
</body>
</html>
您的 ID 为“container”的元素覆盖了您的导航按钮。这与您的悬停逻辑无关。
您需要调整布局,使容器不再位于顶部,因为鼠标事件只会传播到最顶部的元素。
假设容器用于存放“Bunny Shop”页眉。我建议调整这个元素的高度。您可能会发现它不需要使用“固定”定位,并且可以相对于它的父组件放置。相对于视口本身,Fixed 是一个绝对的元素。
由于您修复了容器,您的容器元素与顶部栏或导航项重叠。
从
更改您的代码
#container {
margin-left: 27px;
margin-top: 41px;
position: fixed; // remove it.
color: white;
font-family: "Cute Aurora Regular";
}
至
#container {
margin-left: 27px;
margin-top: 41px;
color: white;
font-family: "Cute Aurora Regular";
}
现在可以悬停导航了。
两个快速而懒惰的解决方案是将以下内容添加到 #topBox
div:
pointer-events: none;
将允许您单击“通过”div 到导航栏
height: auto;
将防止 div 与导航栏重叠
翻转未按预期工作的原因是 #container
和 #containerBunny
div 覆盖了 topnav
div。
You can see the overlapping divs here
我建议添加 Pesticide Chrome 扩展以帮助可视化您的 div 并更容易查看正在发生的事情。
我在 HTML 文件中遇到问题。我是 HTML 的新手,当我为我的静态网站 here 制作顶部栏时,我尝试向其添加悬停,但它无法正常工作,只能在“搜索”和“购物车”按钮(它也可以用于“联系我们”,但仅限于右侧)。
所以,我不确定为什么悬停在所有按钮上都不起作用,即使乍一看顶部栏看起来不错。我是否覆盖了我不应该做的事情?这让我很困惑。这是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#topBox {
height: 250px;
margin-top:-50px;
margin-left: auto;
margin-right: auto;
background: #cbe9f3;
border-radius: 15px;
}
#container {
margin-left: 27px;
margin-top: 41px;
position: fixed;
color: white;
font-family: "Cute Aurora Regular";
}
.topnav {
overflow: hidden;
font-family: "Cute Aurora Regular";
background-color: transparent;
border: #c9c7c7 0.1px solid;
margin-top: 5px;
margin-left: auto;
margin-right: auto;
border-left: none;
border-right: none;
}
.topnav a {
float: left;
color: #b47d50;
text-align: center;
margin-left: 27px;
padding: 14px 16px;
margin-right: -20px;
text-decoration: none;
font-size: 19px;
font-weight: bold;
}
.topnav a:hover {
color: #ecb2ad;
}
.topnav a.search {
margin-left: 290px;
}
.topnav a.cart {
margin-left: 25px;
}
br {
display:none;
}
/* Desktop grande */
@media (min-width: 1025px) {
#topBox {
width:1000px;
}
#container {
font-size: 600%;
}
#containerBunny {
width: 250px;
margin-left: 550px;
margin-top: 150px;
}
.topnav {
width: 1000px;
}
}
/* Desktop pequeno */
@media (min-width: 769px) and (max-width: 1024px) {
#topBox {
width:750px;
}
#container {
font-size: 500%;
}
#containerBunny {
width: 200px;
margin-left: 460px;
margin-top: 170px;
}
.topnav {
width: 745px;
}
}
/* Tablets */
@media (min-width: 481px) and (max-width: 768px) {
}
/* Mobile */
@media (min-width: 320px) and (max-width: 480px) {
#topBox {
width:1000px;
}
#container {
font-size: 520%;
}
#containerBunny {
width: 250px;
}
br {
display: block;
}
}
</style>
</head>
<body>
<div id="topBox">
<div id="container">
<p>Bunny <br>Shop</p>
</div>
<img id="containerBunny" src="images/molangMilk.png" alt="">
</div>
<div class="topnav">
<a href="#home">HOME</a>
<a href="#new">NEW</a>
<a href="#sale">SALE</a>
<a href="#products">PRODUCTS</a>
<a href="#contactUs">CONTACT US</a>
<a class="search" href="#search">SEARCH</a>
<a class="cart" href="#cart">CART</a>
</div>
</body>
</html>
您的 ID 为“container”的元素覆盖了您的导航按钮。这与您的悬停逻辑无关。
您需要调整布局,使容器不再位于顶部,因为鼠标事件只会传播到最顶部的元素。
假设容器用于存放“Bunny Shop”页眉。我建议调整这个元素的高度。您可能会发现它不需要使用“固定”定位,并且可以相对于它的父组件放置。相对于视口本身,Fixed 是一个绝对的元素。
由于您修复了容器,您的容器元素与顶部栏或导航项重叠。 从
更改您的代码 #container {
margin-left: 27px;
margin-top: 41px;
position: fixed; // remove it.
color: white;
font-family: "Cute Aurora Regular";
}
至
#container {
margin-left: 27px;
margin-top: 41px;
color: white;
font-family: "Cute Aurora Regular";
}
现在可以悬停导航了。
两个快速而懒惰的解决方案是将以下内容添加到 #topBox
div:
pointer-events: none;
将允许您单击“通过”div 到导航栏height: auto;
将防止 div 与导航栏重叠
翻转未按预期工作的原因是 #container
和 #containerBunny
div 覆盖了 topnav
div。
You can see the overlapping divs here
我建议添加 Pesticide Chrome 扩展以帮助可视化您的 div 并更容易查看正在发生的事情。