html - CSS悬停菜单不起作用

标签 html css responsive-design

我正在尝试在 CSS 中创建响应式导航栏。当屏幕宽度足够大时我想要文本,当屏幕宽度低于一定宽度时我想要一个下拉框。响应能力开始发挥作用,但悬停功能不起作用。我只想要悬停时的下拉菜单

这是 jsfiddle:https://jsfiddle.net/cjbruin/rnmg5gjb/

和代码

HTML

<div class="topnav" id="myTopnav">
  <a href="#">Home</a>
  <a href="#">News</a>
  <a href="#">About</a>
  <a href="#">Contact</a>
  <a href="javascript:void(0);" style="font-size:15px" class="icon">&#9776;</a>
</div>

CSS:

.topnav {
  overflow: hidden;
}

.topnav a {
  float: right;
  display: block;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

.topnav a:hover {
  color: black;
}

.topnav .icon {
  display: none;
}

@media screen and (max-width: 800px) {
  .topnav a {
    display: none;
  }
  .topnav a.icon {
    float: right;
    display: block;
  }
  .icon:hover .topnav a {
    display: block;
    color: black;
  }
}

最佳答案

.icon:hover .topnav a {
    display: block;
    color: black;
  }

这段代码就是问题所在,.icon 在 .topnav 类中。

CSS 规则:

X Y :选择所有 child (Y) ..这是你正在使用的 child

X~Y :选择X旁边的所有Y

所以你的问题有很多解决方案

1.

.icon:hover .topnav a {
    display: block;
    color: black;
  }

将此更改为以下内容

.icon:hover ~ a {
    display: block;
    color: black;
  }

https://jsfiddle.net/rnmg5gjb/5/

  1. 将 .icon 类带到外面并使用 .icon:hover .topnav a

关于html - CSS悬停菜单不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549675/

相关文章:

css - 对齐 Div,表格样式,用于社交媒体图标

javascript - 如何在与按钮相同的页面中显示表格?这些表格已经在另一个 html 文件中组成,所以我只是从那里拉出来

html - 如何使用 CSS 设置我的 HTML 表单的样式

jquery - 悬停时更改 <li> 元素的可见性

css - 为什么媒体查询的顺序在 CSS 中很重要?

javascript - 当屏幕尺寸小于 480px 时如何禁用 jQuery 功能?

javascript - Jquery 复选框影响一个元素而不是所有元素

javascript - 具有视差背景的浏览器和移动问题 (javascript/jquery)

css - 复选框标签与复选框重叠 - Bootstrap3

css - 使用响应式设计的带有内容的背景图像