将UL的位置设置为固定,下拉菜单不起作用

Posted

技术标签:

【中文标题】将UL的位置设置为固定,下拉菜单不起作用【英文标题】:Set the position of UL to fixed, the dropdown does not work 【发布时间】:2018-11-05 11:23:25 【问题描述】:

当我将 UL 的位置设置为固定时,当我将鼠标悬停在 GAMES 上时,下拉列表不会出现!但是当我删除位置固定然后下拉工作,但我的整个 UL 的位置发生变化

当我保持它固定时,它会像导航栏一样粘在屏幕的顶部和左侧,这就是我想要的,但是当我删除位置固定时,下拉菜单可以工作,但它不再粘在左侧和顶部,我尝试设置边距,但仍然没有粘在顶部和左侧!这是我的代码:

html 代码:-

<ul>
<li><a class="active" href="#home">Home</a></li>
<li><a href="#news">Contact</a></li>
<li class="dropdown"><a href="#contact" class="dropbtn">Games</a>
 <div class="dropdown-content">
  <a href="#">PUBG</a>
  <a href="#">Fortnite</a>
  <a href="#">PUBG Mobile</a>
</div>
</li>
<li style="float:right"><a href="#about">About</a></li>
</ul>

CSS 代码:-

ul 
list-style-type: none;
padding: 0;
overflow: hidden;
background-color: #333;
top: 0;
left: 0;
width: 100%;
margin-top: 0px;
margin-bottom: 0px;


li 
float: left;


li a, .dropbtn 
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;


li a:hover:not(.active) 
background-color: #111;
text-decoration: none;
color: white;




li.dropdown 
display: inline-block;


.dropdown-content 
display: none;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
position: absolute;


.dropdown-content a 
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;


.dropdown-content a:hover background-color: #333

.dropdown:hover .dropdown-content 
display: block;


.active 
background-color: #80e5ff;
color: black;
text-decoration: none !important;

【问题讨论】:

【参考方案1】:
overflow: hidden;

请删除ul css 中的上述 css。

请运行代码 sn-p 看看。它正在按照您的预期工作。

ul 
list-style-type: none;
padding: 0;
background-color: #333;
top: 0;
left: 0;
width: 100%;
margin-top: 0px;
margin-bottom: 0px;
position:fixed;


li 
float: left;


li a, .dropbtn 
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;


li a:hover:not(.active) 
background-color: #111;
text-decoration: none;
color: white;




li.dropdown 
display: inline-block;


.dropdown-content 
display: none;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
position: absolute;


.dropdown-content a 
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;


.dropdown-content a:hover background-color: #333

.dropdown:hover .dropdown-content 
display: block;


.active 
background-color: #80e5ff;
color: black;
text-decoration: none !important;
<ul>
<li><a class="active" href="#home">Home</a></li>
<li><a href="#news">Contact</a></li>
<li class="dropdown"><a href="#contact" class="dropbtn">Games</a>
 <div class="dropdown-content">
  <a href="#">PUBG</a>
  <a href="#">Fortnite</a>
  <a href="#">PUBG Mobile</a>
</div>
</li>
<li style="float:right"><a href="#about">About</a></li>
</ul>

【讨论】:

你也添加 position:fixed in ul 你能和我分享你的代码吗?所以我会帮你修复这个错误。 你已经完成了溢出:可见和位置:固定?顺便说一句,它很有效:) 欢迎您。您正在使用 * 溢出:隐藏; 。这个 CSS 适用于所有元素。如果你不想要这个 css。请删除它,否则你每次都会卡住。【参考方案2】:

当您使用 position: fixed 或 position: absolute 时,这些属性会从文档流中删除您的标签。如果您依赖于尝试使用这些值之一定位的标签的大小,那么您将遇到问题。

此外, position: fixed 可能不是您想要的,因为固定位置元素将相对于视口保持固定。您应该尝试 position: absolute 。这仍然会从文档流中删除该元素,但它会根据下一个相对定位的父元素定位它。

【讨论】:

我将我的 UL 定位为绝对值,现在我的条形图固定在顶部和左侧,但现在当我将鼠标悬停在游戏上时,下拉列表不会出现 :( 我还删除了溢出:隐藏

以上是关于将UL的位置设置为固定,下拉菜单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Twitter Bootstrap 按钮下拉菜单在 IE9 中不起作用

将溢出设置为在固定 div 上滚动不起作用

引导下拉链接不起作用

jQuery .next() 在表格中不起作用

将鼠标悬停在带有显示的下拉菜单上:表格在 IE 中不起作用

Bootstrap 下拉菜单在 Android 上不起作用