- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个水平悬停下拉菜单几乎完美无缺。目标是如果我将鼠标悬停在一个链接上,我会看到一排子链接。每行都有 X 数量的子链接,它们应该显示在一列下方。但是,目前子链接显示在一行中,而不是在其子链接下的列下方。
HTML:
<div class="menu">
<ul>
<li><a href='#'>Link 1</a>
<ul>
<li><a href='#'>Sub Link 1</a></li>
<ul>
<li><a href='#'>Sub Child Link 1</a></li>
<li><a href='#'>Sub Child Link 2</a></li>
<li><a href='#'>Sub Child Link 3</a></li>
</ul>
<li><a href='#'>Sub Link 2</a></li>
</ul>
</li>
<li><a href='#'>Link 2</a>
<ul>
<li><a href='#'>Sub Link 1</a></li>
<li><a href='#'>Sub Link 2</a></li>
<li><a href='#'>Sub Link 3</a></li>
<li><a href='#'>Sub Link 4</a></li>
</ul>
</li>
<li><a href='#'>Link 3</a>
<ul>
<li><a href='#'>Sub Link 1</a></li>
<li><a href='#'>Sub Link 2</a></li>
<li><a href='#'>Sub Link 3</a></li>
<li><a href='#'>Sub Link 4</a></li>
</ul>
</li>
</ul>
CSS:
.menu{
border:none;
border:0px;
margin:0px;
padding:0px;
border-bottom: 1px solid #ccc;
}
.menu ul{
background:#fff;
height:35px;
list-style:none;
margin:0;
padding:0;
}
.menu li{
float:left;
padding:0px;
}
.menu li a{
background:#fff;
color:#000;
display:block;
line-height:35px;
margin:0px;
padding:0px 25px;
text-align:center;
text-decoration:none;
text-transform: uppercase;
}
.menu li a:hover {
border-bottom: 1px solid #ff0000;
}
.menu li a:hover, .menu ul li:hover a{
background: #fff;
text-decoration:none;
}
.menu li ul{
background:#fff;
display:none;
height:auto;
padding:0px;
margin:0px;
border:0px;
position:absolute;
width:400px;
z-index:200;
}
.menu li:hover ul{
display:block;
}
.menu li li {
background: #fff;
display:block;
float:left;
margin:0px;
padding:10px;
width:100px;
}
.menu li:hover li a{
background:none;
}
.menu li ul a{
display:block;
height:30px;
font-size:12px;
font-style:normal;
color: #999;
margin:0px;
padding:0px 10px 0px 15px;
text-align:left;
text-transform: uppercase;
}
.menu li ul a:hover, .menu li ul li:hover a{
background:#fff;
border:0px;
text-decoration:none;
}
.menu p{
clear:left;
}
最佳答案
好的,您的问题的答案分为几个部分。所有这些都可以在 this fiddle 中找到.开始吧。
首先,如果子菜单嵌套在其链接的父级 li
中,则处理起来会更容易。另外(旁注)如果您的 css 由于某种原因失败,这将保留父子关系。新的基本结构如下所示:
<div class="menu">
<ul>
<li>
<a href='#'>Link</a>
<ul>
<li>
<a href='#'>Child</a>
<ul>
<li><a href='#'>Grandchild</a></li>
</ul>
</li>
</ul>
<li>
</ul>
</div>
在the fiddle ,我将样式分为几个部分,我将逐一介绍。
这很简单。它只是重置一切。不过,它与解决方案无关,真的,所以我把它排除在答案之外。如果需要,它就在 fiddle 里。
归根结底,味道只是我个人的口味。它主要是颜色,但有一点很重要。我们将填充应用于 a
元素。这将有助于正确排列事物,并且还会提供一个不错的大可点击区域作为副作用。
.menu a {
display: block;
padding: 10px; /* padding on the a */
color: #000;
}
这才是真正的答案核心。我们正在做的就是您已经完成的,只是我们要取消设置第三层 li
上的 float 。老实说,简短的回答就是那一行。
.menu li {
position: relative;
float: left;
}
.menu li ul { position: absolute; width: 400px; }
.menu li li ul { width: 120px; }
.menu li li li { float: none; } /* this lets columns happen again */
为了以更简单的方式完成隐藏,我们将使用子选择器 (>
)。如果您从未使用过它,Chris Coyier explains it very well ,但基本上它只会得到直接的 child 。这样我们就可以说任何直接嵌套在 li
下的 ul
应该只在 li
悬停时显示。我们这样做:
.menu li > ul { display: none; }
.menu li:hover > ul { display: block; }
编辑:MDN 在子选择器上也有一个很好的条目。看看here .
同样,整个过程在 http://jsfiddle.net/4tPcL/ 处以 fiddle 形式展示。 .希望这对您有所帮助!
关于CSS 多列下拉菜单不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22546053/
使用 Foundation 6.3.1,我希望在桌面上显示 Canvas 外菜单,在移动设备上显示 Accordion 菜单。例如 This is the desktop view with a co
function HideandUNhideObj(ThisObj) { var nav = document.getElementById(ThisObj).style if (nav.displ
我正在处理一个页面,该页面有一个显示“更新”的链接。当用户单击此链接时,我希望表单使用幻灯片效果并显示在链接下方。提交表单后,它会更新数据库,并且菜单会显示。 我知道这可以用 JavaScript 来
这是我的运行时创建菜单的关键部分: GtkWidget *menu, *menu_item; menu = gtk_menu_new(); menu_item = gtk_image_menu_ite
您好,我想实现一个像这样的 donut 菜单 http://dribbble.com/shots/610433-Wheel-Nav我知道有一种在 css3 中制作 donut 的简单方法。 .doug
我的应用程序中有一个菜单,当菜单打开时我会触发触觉反馈(来自 onTagGesture Action )。 然而 有时当我点击菜单打开触发器时,菜单实际上不会打开,但我仍然收到触觉反馈。我只在菜单实际
也许这是一个简单的解决方案,但我坚持了下来。 这里有我的代码 http://jsbin.com/ejomuv纯CSS菜单 我想要做的是在悬停时在下拉按钮底部设置 0px 边框半径,但仅在下拉菜单上设置
下拉列表、菜单和组合框都是非常常见的用户界面元素。用户习惯于在 native 应用程序和 Web 应用程序中看到这些元素,但它们存在一些问题。 您必须瞄准鼠标。当您将鼠标移开时,有些菜单会折叠,而有些
我有 codeigniter 背景。现在,我正在学习 Laravel。所以,我处于这种情况(示例),我正在尝试创建一个具有多个用户的 web 应用程序。用户类型 A ,他们可以访问菜单 a、菜单 b
我正在学习 JQuery 的基础知识,我的老师显示的 menu() 看起来根本不像我的。 这是我创建的菜单的 LAF: 代码: Hello Hi Welcome World
- SELECT - 上面的显示:none不起作用。我也尝试过“隐藏”,但没有成功。 如何隐藏此选择菜单? 最佳答案 换行与 或并将 id 添加到标签。 - SELECT
我使用 Jquery 创建菜单,如下所示: homeinfo2info3 Jquery 代码如下: $(document).ready(function(){ $(".prof_info1").unb
我是 C 新手,我需要为项目构建一个带有循环的菜单。我有两个问题。 1) 我想在 else 中添加一个字符,如果在主菜单中按“2”后询问某事,问题将是“你要去参加事件吗?”用户可以输入聊天“Y”或“N
大家好,过去几个小时我一直在为类(class)编写这个程序,但似乎无法解决最后两个问题。它基本上是一个略微修改的 CashRegister 类,通过菜单提供基本功能。我遇到的问题是: 1) 用户第一次
List studentInfo = new LinkedList(); int choice; boolean flag = true; Student student =
我正在使用 bootsrap 4 alpha 6 和 midnight.js 来更改导航菜单切换器的颜色。我想在它旁边插入一个文本(菜单)。捕获中的示例。对于文本切换器,我使用 fontawesome
我正在尝试使用 CSS 菜单解决菜单在 IE 6 中无法正确显示的问题 alt text http://content.screencast.com/users/Dokmanc/folders/Jin
我无法让这段代码工作 - 我想要的是当我将鼠标悬停在圆圈上时,菜单会出现,然后如果我将鼠标从圆圈或菜单上移开,它就会消失。我尝试做的任何事情都是非常错误的,例如 onmouseover 在圆圈上然后在
我有一个典型的 CSS 顶部导航,当您滑过不同的父菜单项时,它会显示一个子菜单。如何更改代码以保持显示事件子菜单。因此,如果您在该父菜单项或其子项之一的页面上,它将保持显示该子菜单,除非您将鼠标悬停在
我很亲近。我怎样才能在我的 上有 MENU 1。 fiddle显示为默认菜单选项,然后在 MENU 2 悬停时更改? 提前致谢。继续编码! :) 最佳答案 要根据您的响应完全远离 jquery 进行编
我是一名优秀的程序员,十分优秀!