实现一个下拉菜单可以使用CSS和JavaScript相结合的方法,同时支持主流浏览器的话,可以按以下步骤进行:
实现一个下拉菜单可以使用CSS和JavaScript相结合的方法,同时支持主流浏览器的话,可以按以下步骤进行:
第一步:HTML 结构设计
首先,我们需要设计一下 HTML 结构,这里我们使用一个简单的无序列表的结构,每个子菜单项都是一个列表项 li,其中标题部分是一个带有子菜单的 a 标签,子菜单则将放置在一个 div 中:
<ul class="menu">
<li><a href="#">菜单项 1</a>
<div class="sub-menu">
<ul>
<li><a href="#">子菜单 1-1</a></li>
<li><a href="#">子菜单 1-2</a></li>
<li><a href="#">子菜单 1-3</a></li>
</ul>
</div>
</li>
<li><a href="#">菜单项 2</a>
<div class="sub-menu">
<ul>
<li><a href="#">子菜单 2-1</a></li>
<li><a href="#">子菜单 2-2</a></li>
<li><a href="#">子菜单 2-3</a></li>
</ul>
</div>
</li>
</ul>
第二步:CSS 样式设计
接下来是样式设计,我们使用 CSS 样式来设置这个下拉菜单的外观,并且让它可以显示和隐藏,这里给出一个示例样式:
.menu {
list-style: none;
margin: 0;
padding: 0;
}
.menu li {
float: left;
position: relative;
}
.menu a {
display: block;
padding: 0 10px;
line-height: 30px;
text-decoration: none;
}
.menu a:hover {
background-color: #f90;
color: #fff;
}
.sub-menu {
position: absolute;
top: 30px;
left: 0;
display: none;
}
.sub-menu ul {
list-style: none;
margin: 0;
padding: 0;
}
.sub-menu li a {
padding: 5px 10px;
display: block;
text-decoration: none;
}
.sub-menu li a:hover {
background-color: #eee;
}
第三步:JavaScript 编程
最后,我们需要加入 JavaScript 代码来控制下拉菜单的显示与隐藏,这里我们使用 jQuery 库来简化开发,实现的思路是当鼠标悬停在菜单上时,显示对应的子菜单,离开时则隐藏,以下是示例代码:
$(document).ready(function(){
$('.menu li').hover(
function(){
$('ul', this).slideDown(200);
},
function(){
$('ul', this).slideUp(200);
}
);
});
示例说明
示例一
假设我们需要的下拉菜单是一个导航栏,在每个菜单项前需要有相应的图标,同时鼠标悬停时需要有背景色的变化,这种情况下,可以添加以下的 CSS 样式:
.menu a {
background: url(images/menu_icon.png) no-repeat left center;
padding-left: 28px;
}
.menu a:hover {
background-color: #00a3ff;
color: #fff;
}
同时,对 HTML 结构进行稍微的修改,添加一个 span 元素用于存放图标:
<ul class="menu">
<li><a href="#"><span class="menu-icon"></span>菜单项 1</a>
<div class="sub-menu">
<ul>
<li><a href="#">子菜单 1-1</a></li>
<li><a href="#">子菜单 1-2</a></li>
<li><a href="#">子菜单 1-3</a></li>
</ul>
</div>
</li>
<li><a href="#"><span class="menu-icon"></span>菜单项 2</a>
<div class="sub-menu">
<ul>
<li><a href="#">子菜单 2-1</a></li>
<li><a href="#">子菜单 2-2</a></li>
<li><a href="#">子菜单 2-3</a></li>
</ul>
</div>
</li>
</ul>
对应的 CSS 样式如下:
.menu-icon {
display: inline-block;
width: 16px;
height: 16px;
background: url(images/menu_icon.png) no-repeat;
margin-right: 10px;
}
示例二
在某些场景中,我们需要的是一个带有多级子菜单的下拉菜单,假设有三级子菜单,这种情况下我们需要对 HTML 结构进行调整,例如:
<ul class="menu">
<li><a href="#">菜单项 1</a>
<div class="sub-menu">
<ul>
<li><a href="#">子菜单 1-1</a></li>
<li><a href="#">子菜单 1-2</a></li>
<li><a href="#">子菜单 1-3</a></li>
<li><a href="#">子菜单 1-4</a>
<ul>
<li><a href="#">子菜单 1-4-1</a></li>
<li><a href="#">子菜单 1-4-2</a></li>
<li><a href="#">子菜单 1-4-3</a>
<ul>
<li><a href="#">子菜单 1-4-3-1</a></li>
<li><a href="#">子菜单 1-4-3-2</a></li>
<li><a href="#">子菜单 1-4-3-3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li><a href="#">菜单项 2</a>
<div class="sub-menu">
<ul>
<li><a href="#">子菜单 2-1</a></li>
<li><a href="#">子菜单 2-2</a></li>
<li><a href="#">子菜单 2-3</a></li>
</ul>
</div>
</li>
</ul>
对应的 CSS 样式仍然可以沿用之前的示例,JavaScript 代码需要进行相应的修改,以支持多级子菜单的显示和隐藏:
$(document).ready(function(){
$('.menu li').hover(
function(){
$('> .sub-menu', this).stop().slideDown(200);
},
function(){
$('> .sub-menu', this).stop().slideUp(200);
}
);
$('.sub-menu li').hover(
function(){
$('> ul', this).stop().slideDown(200);
},
function(){
$('> ul', this).stop().slideUp(200);
}
);
});
注意,在这里我们使用了直接子元素选择器(>)来选择子菜单元素,同时也需要另外的一组 hover 处理子菜单下的子菜单。
以上就是一个简单的 CSS 与 JS 相结合的下拉菜单的完整攻略,可以根据不同的需求进行相应的修改和扩展。
本文标题为:一个css与js结合的下拉菜单支持主流浏览器
- 20行JS代码实现网页刮刮乐效果 2023-12-14
- vue-router的beforeRouteUpdate不触发 2023-10-08
- 黑帽seo劫持程序,js劫持搜索引擎代码 2023-12-01
- js脚本学习 比较实用的基础 2023-12-24
- JavaScript Rxjs mergeMap 的使用场合 2024-01-15
- Bootstrap 布局组件(全) 2024-01-03
- ajax实现异步文件或图片上传功能 2023-01-26
- 基于HTML5的WebGL应用内存泄露分析 2023-10-25
- ajax实现改变状态和删除无刷新的实例 2023-02-15
- javascript – 如何通过AJAX将HTML5 sqlite结果集发送到服务器 2023-10-26