JavaWeb(9)——前端综合案例3(悬停显示下拉列表)

news2024/10/6 20:26:31

一、实例需求 ⌛

        实现类似百度首页的“一个简单的鼠标悬停显示的下拉列表效果”。

二、代码实现 ☕

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>

    .dropdown-content a {
      color: black; /* 修改链接的颜色为黑色 */
      text-decoration: none; /* 去掉下拉列表链接的下划线 */
    }

    .dropdown{
      position: relative;
      display:inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f9f9f9;
      min-width: 90px;
      box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);/* 添加阴影 */
      cursor: pointer; /* 设置鼠标悬停样式为手型 */
      padding: 5px 10px;
      border-radius: 5px; /* border-radius 属性被用于创建圆角*/
    }
    .dropdown:hover.dropdown-content {
      display:block;
    }
    .dropdown span:hover {
      color: red; /* 当鼠标悬停时,将文本颜色更改为红色 */
    }
    .dropdown-content a:hover {
      color: deepskyblue; /* 当鼠标悬停时,将链接文本颜色更改为蓝色 */
    }
  </style>
</head>
<body>

<div class= "dropdown">
      <span>
        鼠标移动到这里,会出现下拉列表
      </span>
  <div class="dropdown-content">
    <a href="https://www.baidu.com">表单-1<br></a>
    <a href="https://www.jd.com">表单-2<br></a>
    <a href="https://www.taobao.com">表单-3<br></a>
    <a href="https://www.souhu.com">表单-4<br></a>
    <a href="https://www.sougou.com">表单-5</a>
  </div>
</div>

<script>
  document.addEventListener('DOMContentLoaded', function() {
    let dropdown = document.querySelector('.dropdown');
    dropdown.addEventListener('mouseover', function() {
      let dropdownContent = this.querySelector('.dropdown-content');
      dropdownContent.style.display = 'block';
    });
    dropdown.addEventListener('mouseout', function() {
      let dropdownContent = this.querySelector('.dropdown-content');
      dropdownContent.style.display = 'none';
    });
  });
</script>
</body>
</html>

思路分析和代码解释: 

这个标签

<div class="dropdown">

是一个包裹下拉列表的容器。它使用 CSS 中的 position: relative; 和 display: inline-block; 属性来控制其在页面中的位置和显示方式。

        当鼠标悬停在   .dropdown 容器上方时,通过 CSS 选择器    .dropdown:hover .dropdown-content 的规则,将下拉列表设置为显示(display: block;)元素会以块级元素的方式进行显示。当页面内容加载完成后,DOMContentLoaded 事件会被触发。在该事件的回调函数中,以下代码将执行:

let dropdown = document.querySelector('.dropdown');

        这行代码使用 document.querySelector 方法选择页面中第一个带有 .dropdown 类的元素,并将其赋值给变量 dropdown

dropdown.addEventListener('mouseover', function() { 
let dropdownContent = this.querySelector('.dropdown-content'); 
dropdownContent.style.display = 'block'; });

        当鼠标移入 .dropdown 元素时,mouseover 事件被触发,然后执行回调函数。在回调函数中this 指向触发事件的元素本身(即 .dropdown 元素),通过 this.querySelector('.dropdown-content') 找到该元素内部带有 .dropdown-content 类的元素,并将其赋值给变量 dropdownContent。然后将 dropdownContentdisplay 样式属性设置为 'block',使其可见。

dropdown.addEventListener('mouseout', function() { 
let dropdownContent = this.querySelector('.dropdown-content'); 
dropdownContent.style.display = 'none'; });

        当鼠标移出 .dropdown 元素时,mouseout 事件被触发,然后执行回调函数。回调函数中的逻辑与上述类似,通过 this.querySelector('.dropdown-content') 找到 .dropdown 元素内部的 .dropdown-content 元素,并将其赋值给变量 dropdownContent。然后,将 dropdownContentdisplay 样式属性设置为 'none',使其隐藏。

总结起来就是:

        JavaScript 部分的代码监听了页面的 DOMContentLoaded 事件,确保在文档加载完毕后再执行代码。一旦页面加载完成,它会找到 .dropdown 元素,并为它添加两个事件监听器。 第一个事件监听器是 mouseover,当鼠标指针进入 .dropdown 区域时触发。它会找到 .dropdown 元素内部的 .dropdown-content 元素,并将其显示出来(通过修改其 CSS 属性 display 为 'block') 第二个事件监听器是 mouseout,当鼠标指针离开 .dropdown 区域时触发。它也会找到 .dropdown 元素内部的 .dropdown-content 元素,并将其隐藏(通过修改其 CSS 属性 display 为 'none')。这样当鼠标移出 .dropdown 区域时,下拉列表将消失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统---进程控制

文章目录 进程创建进程终止进程等待进程替换实现简单的mini-shell 一、进程创建 1.fork()函数 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void…

关于接口测试用例设计的一些思考

接口测试发现的典型问题 传入参数处理不当&#xff0c;引起程序错误类型溢出&#xff0c;导致数据读取和写入不一致对象权限校验出错&#xff0c;可获取其他角色信息状态出错&#xff0c;导致逻辑处理出现问题逻辑校验不完善定时任务执行出错 接口测试用例设计 接口测试用例…

Spring Boot统一处理功能——拦截器

1.用户登录权限校验 ⽤户登录权限的发展从之前每个⽅法中⾃⼰验证⽤户登录权限&#xff0c;到现在统⼀的⽤户登录验证处理&#xff0c;它是⼀个逐渐完善和逐渐优化的过程。 1.1最初用户登录 我们先来回顾⼀下最初⽤户登录验证的实现⽅法&#xff1a; RestController RequestMap…

接口测试 —— jmeter与数据库的操作

在进行接口测试时&#xff0c;数据库查询是常用的一种判断方式&#xff0c;用来确定数据操作是否成功。除了这种场景&#xff0c;数据库里面的数据也是非常好的测试数据&#xff0c;比如作为请求的测试数据输入&#xff0c;那使用jmeter工具如何把数据库的数据依次获取作为参数…

PLL 的 verilog 实现

锁相环&#xff08;PLL&#xff09;是一种常用的频率、相位追踪算法&#xff0c;在信号解调、交流并网等领域有着广泛的应用。本文对全数字锁相环的原理进行介绍&#xff0c;随后给出 verilog 实现及仿真。 PLL 锁相原理 锁相环结构如下图所示&#xff0c;主要由鉴相器、环路滤…

用于实体对齐的联合学习实体和关系表示2019 AAAI 8.7

用于实体对齐的联合学习实体和关系表示 摘要介绍相关工作实体对齐图卷积网络 问题公式我们的方法整体架构初步实体对齐图卷积层近似关系表示联合实体和关系对齐 实验总结 摘要 实体对齐是在不同知识图之间集成异构知识的一种可行方法。该领域的最新发展通常采用基于嵌入的方法…

解决Error running XXXApplicationCommand line is too long.报错

测试IDEA版本&#xff1a;2019.2.4 &#xff0c;2020.1.3 文章目录 一. 问题场景二. 报错原因2.1 为什么命令行过长会导致这种问题? 三. 解决方案3.1 方案一3.2 方案二 一. 问题场景 当我们从GitHub或公司自己搭建的git仓库上拉取项目代码时&#xff0c;会出现以下错误 报错代…

红队钓鱼技术之Flash网页钓鱼

简介 Flash钓鱼攻击是一种网络攻击手段&#xff0c;旨在欺骗用户访问伪造的Flash更新页面&#xff0c;并诱使他们下载并安装恶意软件。这种攻击通常利用用户对Flash更新的需求&#xff0c;以及对合法更新网站的信任。攻击者通常会模仿Adobe Flash Player的官方更新页面&#x…

YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOV4出现之后不久&#xff0c;YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进&#xff0c;使检测性能得到更进一步的提升。YOLOv5算法作为目前工业界使用的最普遍的检测算法&#xff0c;存在着很多可以学习…

Qt扫盲-Model/View入门

Model/View 编程入门 一、概述二、介绍1. 标准部件2. Model/View 控件3. Model/View控件概述4. 在表格单和 model 之间使用适配器 Adapters 三、 简单的 model / view 应用程序示例1. 一个只读表2. 使用role扩展只读示例3. 表格单元中的时钟4. 为列和行设置标题5. 最小编辑示例…

Unity数字可视化学校_昼夜(三)

1、删除不需要的 UI using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class EnvControl : MonoBehaviour {//UIprivate Button btnTime;private Text txtTime; //材质public List<Material> matListnew Li…

php-cgi.exe - FastCGI 进程超过了配置的请求超时时限

解决方案一&#xff1a; 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题 内容转载&#xff1a; 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题_php技巧_脚本之家 【详细错误】&#xff1a; HTTP 错误 500.0 - Internal Server Error C:…

棒球网络宣传平台建设规划·野球1号位

棒球网络宣传平台建设规划 棒球网络宣传平台简介棒球网络宣传平台是什么&#xff1f; 棒球网络宣传平台的目标是什么&#xff1f; 棒球网络宣传平台的目标是提高公众对棒球的认知度、促进棒球运动的发展。平台致力于提供优质的棒球资讯、赛事直播、教练和球员的个人专访、棒球…

解决 idea maven依赖引入失效,无法正常导入依赖问题

解决 idea maven依赖引入失效&#xff0c;无法正常导入依赖问题_idea无法导入本地maven依赖_普通网友的博客-CSDN博客 解决 idea maven依赖引入失效&#xff0c;无法正常导入依赖问题 idea是真的好用&#xff0c;不过里面的maven依赖问题有时候还真挺让人头疼&#xff0c;不少小…

使用eXosip+ffmpeg、ffplay命令行实现sip客户端

文章目录 前言一、关键实现1、主要流程2、解决端口冲突&#xff08;1&#xff09;、出现原因&#xff08;2&#xff09;、解决方法 3、解析sdp&#xff08;1&#xff09;、定义实体&#xff08;2&#xff09;、解析视频&#xff08;3&#xff09;、解析音频 4、命令行推拉流&am…

Linux 中利用设备树学习Ⅳ

系列文章目录 第一章 Linux 中内核与驱动程序 第二章 Linux 设备驱动编写 &#xff08;misc&#xff09; 第三章 Linux 设备驱动编写及设备节点自动生成 &#xff08;cdev&#xff09; 第四章 Linux 平台总线platform与设备树 第五章 Linux 设备树中pinctrl与gpio&#xff08;…

AEM接插件|插头测试仪获得中国信通院-泰尔实验室认可

AEM矢量网分及其rj45插头、插座获得中国信通院-泰尔实验室认可。并采购了一套原厂全新设备&#xff0c;进行试验研究。 与keysight矢量网分横向和纵向的对比&#xff0c;确定AEM此套测试方案&#xff0c;完全满足接插件测试标准的验证。并月7月份&#xff0c;正式向AEM厂家采购…

django处理分页

当数据库量比较大的时候一定要分页查询的 在django中操作数据库进行分页 queryset models.PrettyNum.objects.all() #查询所有 queryset models.PrettyNum.objects.all()[0:10] #查询出1-10列 queryset models.PrettyNum.objects.filter(mobile__contains136)[0:10] …

uni-app:实现数字文本框,以及左右加减按钮

效果 代码 <template><view><view classline3><view classline3_position><view classleft>数量<text>*</text></view> <view class"right"><view class"quantity_btn"><view class"…

Splunk Enterprise for mac(可视化数据分析软件)详细安装教程

Splunk Enterprise for Mac是一款可视化数据分析软件&#xff0c;为你提供强大的搜索、 分析和可视化功能&#xff0c;可以帮助您获得有价值的业务情报&#xff0c;从你机器生成的数据。还在等什么&#xff1f;有需要的朋友&#xff0c;欢迎前来下载&#xff01; 实时监测和搜…