JS+CSS相对定位实现的下拉菜单

JS+CSS相对定位实现的下拉菜单是网页制作中比较常用的一种效果,它可以让页面菜单更加美观、实用。下面是它的完整攻略。

第一步:HTML布局

首先,需要定义一个下拉菜单触发器和下拉菜单的容器,代码如下:

<div class="dropdown">
  <button class="dropdown-trigger">下拉菜单</button>
  <div class="dropdown-menu">
    <a href="#">选项1</a>
    <a href="#">选项2</a>
    <a href="#">选项3</a>
  </div>
</div>

其中,.dropdown是下拉菜单容器的类名,.dropdown-trigger是触发下拉菜单的按钮的类名,.dropdown-menu是下拉菜单的类名,里面的<a>标签是下拉菜单中的选项。

第二步:CSS样式

接下来,需要给这个下拉菜单容器和相应的元素设置 CSS 样式,让它显示出效果,代码如下:

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1;
  display: none;
}

.dropdown-menu a {
  display: block;
  padding: 8px 20px;
}

其中,.dropdown.dropdown-menuposition 都是 relativeabsolute,表示相对定位和绝对定位。.dropdowndisplayinline-block,让按钮和下拉菜单在同一行,并且具有块级元素的样式表现。.dropdown-menutopleft 表示下拉菜单的位置,z-index 表示在堆叠层叠区域内的元素显示层的层级,display 表示下拉菜单不可见,等待 JS 控制。

第三步:JS脚本

最后,通过 js 控制触发器,使点击之后下拉菜单显示或隐藏。代码如下:

const dropdownTrigger = document.querySelector('.dropdown-trigger');
const dropdownMenu = document.querySelector('.dropdown-menu');

dropdownTrigger.addEventListener('click', function() {
    dropdownMenu.style.display = dropdownMenu.style.display === 'none' ? 'block' : 'none';
});

其中,通过 querySelector 方法获取到触发器和下拉菜单容器的元素对象。使用 addEventListener 方法监听触发器的点击事件,点击时如果下拉菜单不可见,设置 displayblock,下拉菜单就会显示出来。

示例说明

接下来,我们通过两个简单的示例,说明如何使用 JS+CSS 实现下拉菜单效果。

示例一:普通下拉菜单

HTML 布局:

<div class="dropdown">
  <button class="dropdown-trigger">菜单</button>
  <div class="dropdown-menu">
    <a href="#">选项1</a>
    <a href="#">选项2</a>
    <a href="#">选项3</a>
  </div>
</div>

CSS 样式:

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1;
  display: none;
}

.dropdown-menu a {
  display: block;
  padding: 8px 20px;
}

JS 脚本:

const dropdownTrigger = document.querySelector('.dropdown-trigger');
const dropdownMenu = document.querySelector('.dropdown-menu');

dropdownTrigger.addEventListener('click', function() {
    dropdownMenu.style.display = dropdownMenu.style.display === 'none' ? 'block' : 'none';
});

在浏览器中打开这个页面,点击菜单按钮可以看到下拉菜单的弹出和隐藏。

示例二:多级下拉菜单

对于多级下拉菜单,只需要在菜单选项中再嵌套一个下拉菜单容器即可,代码如下:

<div class="dropdown">
  <button class="dropdown-trigger">菜单</button>
  <div class="dropdown-menu">
    <a href="#">选项1</a>
    <a href="#">选项2</a>
    <div class="dropdown">
      <a href="#">选项3</a>
      <div class="dropdown-menu">
        <a href="#">子选项1</a>
        <a href="#">子选项2</a>
        <a href="#">子选项3</a>
      </div>
    </div>
    <a href="#">选项4</a>
  </div>
</div>

在 CSS 样式和 JS 脚本中不需要做太多的改变,只需要把新添加的 .dropdown.dropdown-menu 节点加入 CSS 样式中,并且在 JS 脚本中修改触发器和下拉菜单容器的选择器即可。

这就是使用 JS+CSS 相对定位实现的下拉菜单的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS相对定位实现的下拉菜单 - Python技术站

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

相关文章

  • 浅谈javascript获取元素transform参数

    接下来我会详细讲解“浅谈javascript获取元素transform参数”的攻略。 什么是transform参数 在讲解如何获取元素的transform参数之前,我们先来了解一下什么是transform参数。transform是CSS3的一个重要特性,可以对元素进行平移、旋转、缩放、扭曲等操作,使得页面的交互效果更加生动。CSS3中transform属性用…

    css 2023年6月10日
    00
  • CSS 文本域和按钮对齐不一致解决方案

    下面是 “CSS 文本域和按钮对齐不一致解决方案”的完整攻略: 问题描述 当我们在HTML表单中设置一个textarea(文本域)和一个button(按钮)时,有时候会发现它们在水平方向上的对齐不一致。这是因为textarea和button的默认盒模型不同,导致其宽度和高度的计算方式不同。 解决方案 有以下两种解决方案: 方案一:使用CSS的table布局 …

    css 2023年6月10日
    00
  • JavaScript实现班级抽签小程序

    我会详细讲解“JavaScript实现班级抽签小程序”的完整攻略,以下是步骤: 1. 设计页面 在HTML文件中,先设计出一个包含班级所有学生名字的列表,以及一个按钮用于触发抽签事件。示例代码如下: <body> <h1>班级抽签</h1> <h2>名单</h2> <ul id="n…

    css 2023年6月10日
    00
  • CSS中position定位的个熟悉示例介绍

    下面我来详细讲解一下”CSS中position定位的个熟悉示例介绍”的攻略。 一、position定位 在CSS中,position用于指定元素的定位方式,包括static、relative、absolute和fixed等。 static(默认值):元素的位置不受top、bottom、left、right等属性的影响,按照页面正常流布局。 relative:…

    css 2023年6月9日
    00
  • div背景半透明,覆盖整个可视区域的遮罩层效果

    要实现div背景半透明,覆盖整个可视区域的遮罩层效果,可以按照以下步骤进行: 第一步:创建遮罩层div 创建一个遮罩层的div,它的样式可以设置如下: .selector { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5);…

    css 2023年6月9日
    00
  • 关于CSS Padding那些你意想不到的用法示例

    来讲一下“关于CSS Padding那些你意想不到的用法示例”的完整攻略。 简介 CSS 中的 padding 属性表示元素内边距,指的是元素的内容与边框之间的空间。在平常使用中,我们常常将 padding 用于为元素增加内边距,从而让元素的内容与边框之间产生一定的距离。但是,padding 更加具有变通性。在实际应用中,也有很多意想不到的 padding …

    css 2023年6月9日
    00
  • 详解网站footer沉底效果的三种解决方案

    下面我将详细讲解“详解网站footer沉底效果的三种解决方案”的完整攻略。 什么是网站footer? 首先,我们需要了解什么是网站footer。通常,网站底部都会有一块区域,用于显示一些通用信息,比如网站版权、备案号、联系方式等。这个区域就是网站footer。 什么是footer沉底效果? footer沉底效果是指,在网页内容较少时,footer可以自动沉底…

    css 2023年6月9日
    00
  • 利用CSS中linear制作复杂的边框效果

    利用CSS中linear制作复杂的边框效果其实并不难,以下是具体步骤: 1. 设置边框 首先,需要使用CSS中的border属性来设置元素的边框,例如: border: 3px solid #000; 这将会设置一个黑色的3像素宽度的实线边框。当然,你也可以设置其他颜色、大小、边框样式等。 2. 创建线性渐变 接下来,我们需要创建一个线性渐变来作为边框的效果…

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