html - 将子菜单定位在父列表项的正下方

标签 html css

在过去的三天里,我一直在尝试配置它……我已经查找了很多方法来做到这一点,我相信我现在是我最接近的。

我的主要问题是,当鼠标悬停时,我似乎无法从子菜单中获取列表项以垂直放置在其父项(The Guest Collection)下方。

我的第二个问题是,每当我将鼠标悬停在导航栏上的任何列表项上时,它就会变得困惑(固定导航栏?)

在 google 上搜索时,我发现有几段代码为父列表项使用了“下拉按钮”……我在导航栏中使用了链接而不是按钮。这可能是个问题吗?

如果可能,我想将我的 CSS 保留在外部样式表上。

HTML

<div class = "h_menu">
<ul class = "menu">
<li><a href = "main_page.html">Home</a></li>
<li><a href = "orig_fig.html">Original Figurines</a></li>
<li><a href ="villages.html">Villages</a></li>
<li><a href ="guest_collect.html">The Guest Collection</a>
<ul class = sub_menu1>          
    <li><a href ="disney.html">Disney</a></li>
    <li><a href ="seuss.html">Dr. Seuss</a></li>
    <li><a href ="Rudolph.html">Rudolph and Friends</a></li>
    <li><a href ="santa.html">Santa</a></li>
    <li><a href ="oz.html">Wizard of Oz</a></li>
</ul>
</li>
<li><a href ="orna.html">Oranments</a></li>
<li><a href ="sno_bunn.html">Snow Bunnies</a></li>
</ul>
</div>

CSS(外部样式表)

/*navbar*/

.h_menu {
display: table;
margin: 0 auto;}

.menu {
list-style-type: none;
margin: 0;
padding: 0
text-align: center;
display: block;
position: relative;}

.menu li {
display: inline-block;
margin-right: 10px;}

.menu a {
display: inline-block;
color: pink;
font-family: 'Homemade Apple', cursive;}

.menu li a:hover {
background: #DDDDEE;
border: 3px solid pink;
border-radius: 16px;
color: #B76E79; 
padding: 8px;
z-index: 1;}    



/*Drop Down Menu*/

.sub_menu1 {
display: none;} /*hide submenu content*/

.menu li:hover ul {
position: relative;
display: block; } /*position dropdown content*/

我已经上过一些网页设计类(class),但我对所有事情还是很陌生...如果这是一个愚蠢的问题,请放轻松...

最佳答案

因此需要对 CSS 进行更改。

CSS:

.sub_menu1 li {
  display: block;
}

.menu a {
  display: inline-block;
  color: pink;
  font-family: 'Homemade Apple', cursive;
  border: 3px solid transparent;
  padding: 8px;
}

.menu li:hover ul {
  position: absolute;
  display: block;
}

问题是。

由于将鼠标悬停在 a 标签上时 a 标签的大小发生了变化,因此我的解决方法是应用相同的填充(padding : 8px;) 和 border(border: 3px solid transparent;)(但透明)默认为 a 标签。

其次,当悬停时将 ul 标记定位为相对标记,这会弄乱导航栏,因为它添加了新元素。解决方案将简单地将元素定位为 absolute,这将解决您的问题,如下面的代码片段所示。

/*navbar*/

.h_menu {
  display: table;
  margin: 0 auto;
}

.menu {
  list-style-type: none;
  margin: 0;
  padding: 0 text-align: center;
  display: block;
  position: relative;
}

.menu li {
  display: inline-block;
  margin-right: 10px;
}

.menu a {
  display: inline-block;
  color: pink;
  font-family: 'Homemade Apple', cursive;
  border: 3px solid transparent;
  padding: 8px;
}

.menu li a:hover {
  background: #DDDDEE;
  border: 3px solid pink;
  border-radius: 16px;
  color: #B76E79;
  padding: 8px;
  z-index: 1;
}


/*Drop Down Menu*/

.sub_menu1 {
  display: none;
}

.sub_menu1 li {
  display: block;
}


/*hide submenu content*/

.menu li:hover ul {
  position: absolute;
  display: block;
}


/*position dropdown content*/
<div class="h_menu">
  <ul class="menu">
    <li><a href="main_page.html">Home</a></li>
    <li><a href="orig_fig.html">Original Figurines</a></li>
    <li><a href="villages.html">Villages</a></li>
    <li><a href="guest_collect.html">The Guest Collection</a>
      <ul class="sub_menu1">
        <li><a href="disney.html">Disney</a></li>
        <li><a href="seuss.html">Dr. Seuss</a></li>
        <li><a href="Rudolph.html">Rudolph and Friends</a></li>
        <li><a href="santa.html">Santa</a></li>
        <li><a href="oz.html">Wizard of Oz</a></li>
      </ul>
    </li>
    <li><a href="orna.html">Oranments</a></li>
    <li><a href="sno_bunn.html">Snow Bunnies</a></li>
  </ul>
</div>

关于html - 将子菜单定位在父列表项的正下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629349/

相关文章:

css - 删除 Bootstrap 中未使用的 css 规则

html - 从 css 中删除拼写错误会奇怪地弄乱显示

jquery - 使用 CSS 或 jQuery 在文本中滑动

html - 表格单元格 Angular 落的按钮;文字居中

javascript - 阻止记住密码

javascript - 无法读取未定义的属性 'style' -- 未捕获的类型错误

css - 一行中的列表和图像似乎在变形 [bootstrap]

php - 按名称搜索带有日期的结果

javascript - 哪些 Parsely 配置选项为错误/成功设置 CSS 类?

html - 我希望我的下拉菜单在单击链接而不是悬停时出现