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

实现一个下拉菜单可以使用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日

相关文章

  • 父级元素未设置高度和宽度时高度塌陷问题的解决方法

    父级元素未设置高度和宽度时,如果其内部的子元素设置了浮动或者绝对定位等导致元素脱离文档流的属性,会造成父级元素高度塌陷问题。那么该如何解决父级元素高度塌陷的问题呢?下面我们提供两种具体的解决方法。 方法一:使用clearfix清除浮动 当子元素使用浮动属性后,父元素的高度无法被撑开,导致造成高度塌陷。此时可以使用clearfix这个类来进行清除浮动。 示例代…

    css 2023年6月9日
    00
  • 一些常被你忽略的CSS小知识【必看】

    一些常被你忽略的CSS小知识【必看】 1. calc()函数 calc() 函数可以用来计算一个长度值。该函数支持加、减、乘、除四种操作符,语法如下: width: calc(100% – 20px); 该例中,元素的宽度被设置为父元素宽度减去20像素。 例如,我们可以使用 calc() 函数实现两栏布局,左侧宽度为固定宽度,右侧占满剩余宽度。 .conta…

    css 2023年6月9日
    00
  • Web 设计与开发者必须知道的 15 个站点

    Web 设计与开发者必须知道的 15 个站点 本文将介绍 Web 设计与开发者必须知道的 15 个站点,这些站点可以帮助我们在设计开发过程中提高效率,提供更好的用户体验。以下是这 15 个站点的简要介绍: 1. Can I use Can I use 是一个网站,用于检查 CSS、JavaScript 和 HTML 特性的兼容性。使用该网站,您可以检查特性的…

    css 2023年6月10日
    00
  • 前端面试必备之CSS3的新特性

    我来讲解一下。 前端面试必备之CSS3的新特性 1. CSS3的属性选择器 在CSS3中,新增了一些属性选择器,让选择元素更加灵活方便。下面介绍两种常用的属性选择器: 1.1 属性存在选择器 语法:[attribute] 这个选择器可以匹配指定属性的元素。例如: input[type] 这段代码选择所有具有”type”属性的input元素。如果我们想匹配所有…

    css 2023年6月9日
    00
  • js实现鼠标悬浮给图片加边框的方法

    欢迎访问我们的网站!要实现鼠标悬浮给图片加边框,您可以通过 JavaScript 代码来完成。下面我将详细介绍这个过程。 1. 使用 CSS 实现边框 首先,如果您只是想简单地给图片添加边框,而不需要在鼠标悬浮时添加边框,您可以使用 CSS 的 border 属性来完成。示例代码如下: <img src="example.jpg" …

    css 2023年6月10日
    00
  • 纯CSS实现垂直居中的9种方法

    以下是“纯CSS实现垂直居中的9种方法”的完整攻略。 什么是垂直居中 当父元素的高度确定,子元素需要在父元素内垂直居中(即竖直方向上居中)时,我们称之为垂直居中。 9种纯CSS实现垂直居中方法 使用text-align和line-height方法 父元素设置text-align: center;和line-height: 父元素高度;,子元素设置displa…

    css 2023年6月10日
    00
  • 详解八种方法实现CSS页面底部固定

    我很乐意为您讲解“详解八种方法实现CSS页面底部固定”的完整攻略。 详解八种方法实现CSS页面底部固定 在开发网页时,经常会遇到需要将底部固定在页面底部的需求。下面介绍八种CSS方法可以实现底部固定的效果。 方法1:使用绝对定位 这是最简单的一种方法,只需设置底部的样式为绝对定位,距离底部为0即可。 footer{ position: absolute; b…

    css 2023年6月9日
    00
  • CSS根据用户需求设置网页字体大小

    要根据用户需求设置网页字体大小,可以使用CSS中的相对单位和JavaScript来实现。我们可以使用相对大小如em、rem或vw/vh等单位来设置字体大小。此外,如果用户需要调整字体大小,我们还可以用JavaScript来检测用户的浏览器设置并相应调整字体大小。 下面是一些可以实现此功能的步骤: 使用em、rem和vw/vh等相对单位设置字体大小 使用相对单…

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