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日

相关文章

  • 老生常谈position定位——让人又爱又恨的属性

    对于“老生常谈position定位——让人又爱又恨的属性”,我可以给你一个完整的攻略。 什么是position定位? position是CSS中非常重要的一个属性,它用于设置元素的定位方式。常见的取值有static(静态定位)、relative(相对定位)、absolute(绝对定位)和fixed(固定定位)。 元素的位置可以由CSS的left、right、…

    css 2023年6月10日
    00
  • CSS 实现蜂巢/六边形图集的示例代码

    下面是为实现蜂巢/六边形图集的示例代码的完整攻略: 前言 蜂巢/六边形图集是CSS中非常有趣的设计之一,它可以用于在网站中展示图片或图标。这种设计不仅美观,而且可以增加用户的交互性。本文将为大家介绍如何使用CSS实现蜂巢/六边形图集。 实现步骤 步骤1:创建HTML骨架 首先,我们需要创建一个HTML骨架,用于包含六边形图集。以下是一个示例HTML代码: &…

    css 2023年6月10日
    00
  • vue-cli5搭建vue项目的实现步骤

    下面是关于如何使用Vue cli 5搭建Vue项目的完整攻略。 1. 安装脚手架 首先,我们需要安装Vue Cli 5脚手架。可以通过npm命令来进行安装。安装命令如下: npm install -g @vue/cli@5 2. 创建Vue项目 在安装了Vue Cli 5之后,我们可以通过vue create命令来创建Vue项目。按照以下步骤进行创建: 步骤…

    css 2023年6月10日
    00
  • 详解android 中文字体向上偏移解决方案

    标准化使用字体文件 在 Android 中,中文字体的显示通常需要使用外部字体文件。为了解决文字向上偏移的问题,我们需要在使用字体文件时进行标准化处理。 具体实现方法是在 assets 目录下加入字体文件,并在 AndroidManifest.xml 中注册该字体文件。然后,在使用字体时调用 Typeface.createFromAsset() 方法进行加载…

    css 2023年6月10日
    00
  • css动画模拟太阳地球月球运动轨迹示例

    CSS动画可以通过优雅的代码实现复杂的效果展示,如太阳系的运动轨迹。以下是实现CSS动画模拟太阳、地球、月球运动轨迹的攻略。 实现思路 在HTML结构中定义太阳、地球、月球的标签。 使用CSS设置容器的位置和大小,并设置其为相对定位。 设置每个太阳系实体的大小、颜色、位置和运动轨迹等各项属性。 在动画中使用CSS的关键帧(@keyframes)实现运动效果。…

    css 2023年6月9日
    00
  • canvas实现图片根据滑块放大缩小效果

    来详细讲解如何使用canvas实现图片根据滑块放大缩小效果。步骤如下: 步骤一:创建canvas元素 首先,我们需要在网页中创建一个canvas元素。可以使用以下代码: <canvas id="canvas"></canvas> 步骤二:获取Canvas 2D上下文 我们需要获取到Canvas 2D上下文,以便在c…

    css 2023年6月10日
    00
  • 深入解析HTML的table表格标签与相关的换行问题

    当我们使用HTML来制作表格时,table标签是必不可少的。在table标签中,我们可以使用tr标签来表示一行,td标签来表示单元格。但是在实际使用中,还存在一些与换行相关的问题。 换行问题的背景 当我们使用HTML来制作表格时,表格中的内容可能会超过单元格的宽度,因此会自动换行。但是,如果我们希望在单元格内手动控制换行,该怎么办呢? 问题的解决 使用br标…

    css 2023年6月9日
    00
  • 页面图片浮动左右滑动效果的简单实现案例

    下面是“页面图片浮动左右滑动效果的简单实现案例”的完整攻略: 1. 实现步骤 1.1 HTML结构 需要在HTML中定义一个div容器,用于容纳所有图片,并为每个图片添加一个标签,实现点击图片跳转。 <div class="image-container"> <a href="#"> <i…

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