css - CSS:如何使用相对位置和多个项目创建下拉菜单
问题描述
我正在尝试为用户将项目悬停在另一个菜单中时创建一个下拉菜单。
我当前的 HTML:
<ul>
<li class="menu-main-items">Item1</li>
<ul id="submenu">
<li>Sub-item1</li>
<li>Sub-item2</li>
</ul>
</li>
<li class="menu-main-items">Item2</li>
</ul>
CSS:
.menu-main-items{display:inline;}
#submenu{display:none;}
li:hover #submenu{ //display the submenu below the parent main item }
要将子菜单与父项对齐,我正在考虑使用position:relative;
on#submenu
并添加一定的偏移量,但这会导致闪烁,因为子菜单在第 2 项之前显示,重新排列菜单。到目前为止,我已经四处搜索,只能在主菜单中找到一项不会导致问题的解释。
还有另一种方法可以解决这个问题吗?
解决方案
您应该制作li
元素inline-block
并将定位更改为absolute
. 闪烁是因为元素正在显示,并且在将内容插入流时将其推开。position: absolute
将其从流程中移除,消除闪烁。
如果您想相对于父级移动子菜单,请添加position: relative
到父级并使用top
and left
(bottom
并right
没有真正有用) 来移动它。
有关详细信息,请参阅这篇 CSS 技巧文章。
.menu-main-items{
display:inline-block;
position: relative;
}
#submenu{
display:none;
position: absolute;
left: -10px;
}
li:hover #submenu{
display: block;
}
<ul>
<li class="menu-main-items">Item1
<ul id="submenu">
<li>Sub-item1</li>
<li>Sub-item2</li>
</ul>
</li>
<li class="menu-main-items">Item2</li>
</ul>
推荐阅读
- yaml - 批准的 PR 评论响应重新部署 GitHub 工作流程
- mysql - MySQL - 选择有数量的最低价格,如果没有数量,选择最低价格
- sql - 如何使用 SSIS Visual Studio 将 .CSV 文件非 Unicode 字符串类型转换为整数
- unix - Unix diff 命令在 UTF-8 文件中用 x96 替换 En-Dash
- r - 我正在尝试使用响应变量的各种转换并拟合相应的这些模型,并获得每个模型的残差图
- javascript - 如何在Javascript中删除字符串中心的单词
- docker - 这个 docker 命令行是做什么的
- git - 不小心将 dev 合并到 master 并推送。已恢复但现在我们无法合并 master 中的旧分支
- sql - AWS Config 字段和建议
- ruby-on-rails-3 - echo 'eval "$(rbenv init -)"' >> ~/.zshrc 不附加 zshrc 文件