一个css与js结合的下拉菜单支持主流浏览器

yizhihongxing

实现一个下拉菜单可以使用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结合的下拉菜单支持主流浏览器 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript实现简易聊天对话框(加滚动条)

    下面是JavaScript实现简易聊天对话框(加滚动条)的完整攻略。 简介 这个项目的目标是实现一个简易的聊天对话框,用户可以在对话框内输入消息,同时页面支持滚动条。 准备工作 首先,我们需要准备一个HTML模板和CSS文件,用于布局和样式调整。模板如下: <!DOCTYPE html> <html lang="en"&…

    css 2023年6月10日
    00
  • CSS简写小集

    CSS简写小集攻略 简介 CSS简写指的是使用一行代码就能够完成多个 CSS 属性赋值的方式。它能够大幅度缩短 CSS 代码量,增加代码可读性和优雅度。 语法 通用语法格式如下: selector { property1: value1; [property2: value2;] [property3: value3;] […] } 使用 CSS 简写格…

    css 2023年6月10日
    00
  • 在Dreamweaver中插入有颜色的直线(水平线)

    要在Dreamweaver中插入有颜色的直线(水平线),可以通过以下步骤实现: 创建一个新的HTML文档,并按照惯例,将其保存在本地计算机上。 在Dreamweaver的工具栏中,选中“插入”选项卡,并选择“水平线”选项。 在弹出的“水平线属性”对话框中,您可以设置水平线的基本属性,例如线条粗细、颜色、高度和对齐方式等。 要设置水平线的颜色,您需要单击“颜色…

    css 2023年6月9日
    00
  • CSS中的滑动门技术

    那么我们就来详细讲解一下“CSS中的滑动门技术”的攻略。 一、滑动门技术介绍 滑动门是 CSS 中常见的一种技术,用于制作具有拉伸自适应功能的按钮、导航菜单等等。 滑动门技术的实现原理是通过 CSS 的重叠背景技术,在按钮或菜单项上同时设置两个背景图片,一个用于左侧,一个用于右侧。同时还需设置一个中间区域用于填充按钮或菜单项的文本内容,以及设置一个额外的 &…

    css 2023年6月9日
    00
  • ajaxToolkit:ModalPopupExtender演示及实现代码

    请允许我详细讲解“ajaxToolkit:ModalPopupExtender演示及实现代码”的完整攻略。 什么是ModalPopupExtender? ModalPopupExtender 是 Ajax Control Toolkit 提供的一种扩展控件,可以实现弹出模态窗口的效果,且在模态窗口不同于常规窗口的背景模糊显示。这种扩展控件通常用于提示用户进行…

    css 2023年6月10日
    00
  • bootstrap学习心得总结-css样式设计分享

    Bootstrap学习心得总结-CSS样式设计分享 导语 Bootstrap是一款非常流行的前端开发框架,使用Bootstrap可以大大提升前端页面开发的效率。本文旨在通过分享我的Bootstrap学习心得总结和CSS样式设计经验,帮助初学者更快上手Bootstrap,同时也希望能够为有一定经验的开发者提供一些思路和方法。 Bootstrap基础 Boots…

    css 2023年6月11日
    00
  • JS+CSS3实现超炫的散列画廊特效

    让我来为您详细讲解一下“JS+CSS3实现超炫的散列画廊特效”的完整攻略。 一、项目背景 散列画廊特效是一种非常流行的网页动效,可以增强用户对网站内容的关注度,提升用户体验。 二、实现思路 该特效的实现主要分为三个部分: 利用CSS3的transform属性对图片进行平移和旋转; 利用JavaScript实现图片的散列排列和鼠标悬浮时的效果变化; 利用CSS…

    css 2023年6月9日
    00
  • BootStrap前端框架使用方法详解

    Bootstrap前端框架使用方法详解 Bootstrap是一个流行的前端框架,它可以快速地创建响应式和移动设备友好的Web页面。在这份攻略中,我们将介绍Bootstrap的主要特性和如何使用它来创建各种类型的Web页面。 引入Bootstrap 首先,我们需要在我们的HTML文件中引入Bootstrap样式表和Javascript库。我们可以在Bootst…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部