html - 我的下拉菜单有什么问题?

标签 html css drop-down-menu

我目前正在学习 CSS 和 HTML,我想仅使用 CSS 构建一个基本的下拉菜单。如果有人可以帮助我弄清楚发生了什么,有些事情我不明白。

这是它的样子

http://liveweave.com/eTdt7V

为什么我的菜单 1 被推到导航的顶部?我怎样才能避免这种情况? 为什么我的子菜单 1 在菜单 1 的右边?我如何解决它? 我的子菜单的高度超出了第一个 UL。应该是这样吗?

希望有人能帮助我理解这里发生的事情,这对我自己来说是一个宝贵的教训。我知道我可以找到一个在线教程,但我觉得从头开始是一个更好的学习机会,但现在我被困住了。

谢谢!

最佳答案

好的,这里有一些要点(我仍然建议您找到一些页面,例如 w3choolhere 或您可以找到的任何页面以了解更多信息或完全理解您的问题)

  1. 菜单 1 被推开,因为您将第二个 ul 设置为 visibility:hidden - 它隐藏但仍占用相同的空间(宽度和高度),因此如果您更改它到 display:none 并在你的第一个 ul 中删除 height:100px 它将变成一条线并且平滑(不要将高度设置为 ul,尤其是当它里面有 1 个或多个 ul 时,它会毁了你的菜单)
  2. 您的子菜单 1 在菜单 1 的右侧,因为,嗯,不知道怎么说,所以我跳到解决方案来解决这个问题。要定位您的子菜单,我建议使用 position:absolutemargin 来定位您的子菜单(如果是垂直菜单则位于主菜单旁边,如果是水平菜单则位于主菜单下方)

这是我修改后的新CSS

body {margin: 0; padding: 0;}
nav {background-color: pink; margin: 0; padding: 0; height: 100px;}
ul {list-style: none; width: 50%; background: yellow; margin: 0 auto}
li {display: inline-block; background-color: green; width: 100px; height: 50px}
a {text-decoration: none;}
ul > li > ul {display: none; position: absolute; margin: 35px 0 0 -40px;}
ul > li:hover > ul {display: block;}
ul > li > ul li {display: block;}

这是新的 DEMO
希望你幸运地学习了 HTML 和 CSS!

关于html - 我的下拉菜单有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32238869/

相关文章:

javascript - 如何将选定的日期从日期选择器获取到后端的方法

javascript - 在另一个文件上完成注册后在另一个文件上显示模式

html - 如何使用 magnific 弹出窗口在画廊的网页上包含标题?

CSS Flex - 如果内容更宽,列会切换到行吗?

javascript - 在下拉列表中选择新值,同时记住 Jquery 中的旧值

html - 最大宽度 : 100% not working

javascript - 在 cookie 中存储单选按钮的值在其他浏览器 (Firefox) 中不起作用,但在 Chrome 中起作用

javascript - 当 Microsoft Edge 中存在许多(以及更多)背景元素时,输入字段文本输入变得缓慢

css - 下拉导航菜单被较低的 div 重叠

css - :hover selector being detected even when behind another element