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

一、实例需求 ⌛

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

二、代码实现 ☕

<!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.mzph.cn/news/29221.shtml

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

相关文章

iframe 标签的作用是什么?用法是什么?属性有什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ iframe 标签是什么&#xff1f;⭐ iframe 标签的作用什么&#xff1f;⭐ iframe 标签的用法⭐ iframe 标签的属性⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你…

【单片机】51单片机,TLC2543,驱动程序,读取adc

TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0&#xff5e;AIN10为模拟输入端&#xff1b; 15——CS 为片选端&#xff1b; 17——DIN 为串行数据输入端&#xff1b;&#xff08;控制字输入端&#xff0c;用于选择转换及输出数据格式&#xff09; 16——…

【redis】docker搭建redis集群

docker搭建redis集群&#xff0c;超级简单方便。 # 1. 拉取redis. 目前我拉取最新的是7.0.12 docker pull redis # 2. 下载配置文件 wget https://raw.githubusercontent.com/redis/redis/7.0/redis.conf # 3. 移到对应目录 mkdir -p /opt/docker/redis mv redis.conf /opt/d…

机器学习复习题

1 单选题 ID3算法、C4.5算法、CART算法都是&#xff08; &#xff09;研究方向的算法。 A . 决策树 B. 随机森林 C. 人工神经网络 D. 贝叶斯学习 参考答案&#xff1a;A &#xff08; &#xff09;作为机器学习重要算法之一&#xff0c;是一种利用多个树分类器进行分类和预测…

Typescript]基础篇之 tsc 命令解析

[Typescript]基础[TOC]([Typescript]基础篇之 tsc 命令解析 tsc 命令概览编译参数说明--declaration--watch 这里是对 tsc 的一个详细介绍 tsc 命令概览 安装 Typescript 后可以使用 tsc 编译 ts 文件,tsc 命令是否支持其它参数 如果需要查看 tsc 支持的命令&#xff0c;或者…

Immutable.js 进行js的复制

介绍 在提供不可变&#xff08;Immutable&#xff09;数据结构的支持。不可变数据是指一旦创建后就不能被修改的数据&#xff0c;每次对数据进行更新都会返回一个新的数据对象&#xff0c;而原始数据保持不变。 使用 日常中我们使用的拷贝 (1) var arr { } ; arr2 arr ; …

chatGPT能力培训,客户最关注的99个方向

前言&#xff1a; chatGPT的主要应用&#xff0c;包括文本生成、图像生成和图文关联三大核心方向&#xff1a; 用户的在实际的工作和学习过程中&#xff0c;最关心的内容&#xff0c;可以按照上述类别进行划分&#xff0c;我们总结了&#xff0c;相关的插头GPT能力培训的相关主…

linux 内存 - KO内存占用

说明 KO(kernel module)占用的内存分为两部分&#xff1a; 静态占用 &#xff1a;ko insmod时系统固定分配的内存。动态申请 &#xff1a;代码中动态申请的内存&#xff0c;由于申请方式不同&#xff0c;统计的方式也可能不同&#xff0c;例如&#xff1a;使用vmalloc和kmall…

DAY04_SpringMVC—SpringMVC简介PostMan和ApiFox工具使用SpringMVC请求与响应REST风格

目录 一 SpringMVC简介1 SpringMVC概述问题导入1.1 SpringMVC概述 2 入门案例问题导入2.0 回顾Servlet技术开发web程序流程2.1 使用SpringMVC技术开发web程序流程2.2 代码实现【第一步】创建web工程&#xff08;Maven结构&#xff09;【第二步】设置tomcat服务器&#xff0c;加…

C++的string类

1.string简介 string不是STL的一部分&#xff0c;但是和STL一起学习会更加容易融会贯通。 而实际上string是一个类模板&#xff0c;使用字符的顺序容器实现&#xff08;也就是字符的顺序表&#xff09;&#xff0c;string整个系列支持char的动态增长&#xff08;字符编码有几…

【iOS安全】开启任意app的WebView远程调试

参考&#xff1a;https://mp.weixin.qq.com/s/bNKxQaVrPaXsZ5BPbsXy7w &#xff08;来自周智老师的公众号&#xff09; 概述 Safari 有一个内置的前端调试器&#xff0c; 在iPhone通过局域网或者USB连接MacBook 并启用Safari 远程调试之后&#xff0c;前端调试器默认情况下对…

mysql之limit语句详解

一、介绍 LIMIT是MySQL内置函数&#xff0c;其作用是用于限制查询结果的条数。 二、使用 1. 语法格式 LIMIT [位置偏移量,] 行数 其中&#xff0c;中括号里面的参数是可选参数&#xff0c;位置偏移量是指MySQL查询分析器要从哪一行开始显示&#xff0c;索引值从0开始&#xff…

【剑指Offer 15】二进制中1的个数,Java解密。

LeetCode 剑指Offer 75道练习题 文章目录 剑指Offer:二进制中1的个数示例:限制:解题思路:剑指Offer:二进制中1的个数 【题目描述】 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量))。 提示…

构建Docker容器监控系统 (1)(Cadvisor +InfluxDB+Grafana)

目录 Cadvisor InfluxDBGrafana 1. Cadvisor 2.InfluxDB 3.Grafana 开始部署&#xff1a; 下载组件镜像 创建自定义网络 创建influxdb容器 创建数据库和数据库用户 创建Cadvisor 容器 准备测试镜像 创建granafa容器 访问granfana 添加数据源 Add data source 新建 …

java.sql.SQLFeatureNotSupportedException 问题及可能的解决方法

目录 问题 分析&#xff1a; 解决方法 问题 java.sql.SQLFeatureNotSupportedException 分析&#xff1a; 可能是你的 druid的maven依赖版本太低了&#xff0c;我的以前是1.1.16&#xff0c;就出现了异常&#xff01; 解决方法 把druid的maven依赖版本调高&#xff01; 运…

unity海康威视原生SDK拉取网络摄像头画面,并展示在一个Material上

原理是使用sdk获取视频流&#xff0c;格式为YUV&#xff0c;然后分离YUV通道到三张不同的Texture2D上&#xff0c;通过shader将三个通道重新输出为原始图像。 我将所用的各个部分已经整理成一个压缩包&#xff0c;免积分下载 压缩包结构如下 使用步骤 1 DLL:放在Plugins文件…

湘大oj1138爱你一生一世题解:最大公约数 逆向思维 int整除会向下取整

一、链接 爱你一生一世 二、题目 题目描述 在2013年1月4日&#xff0c;这个“爱你一生一世”的特别日子&#xff0c;男生都想向自己的喜欢的女生表达爱意。 你准备在该死的C语言考试后&#xff0c;去向她&#xff08;或者他&#xff1f;&#xff09;告白。告白怎么能缺了礼…

渗透攻击方法:原型链污染

目录 一、什么是原型链 1、原型对象 2、prototype属性 3、原型链 1、显示原型 2、隐式原型 3、原型链 4、constructor属性 二、原型链污染重现 实例 Nodejs沙箱逃逸 1、什么是沙箱&#xff08;sandbox&#xff09; 2、vm模块 一、什么是原型链 1、原型对象 JavaS…

Springboot格式化给前端返回的时间格式

Springboot格式化给前端返回的时间格式 新增注解新增注解执行逻辑建立注解及注解执行逻辑的关联将时间转换注解注入Spring容器在返回对象的属性中加入注解结束 新增注解 Documented Target({FIELD,METHOD}) Retention(RUNTIME) public interface DateFormatTransform {String …

不只是Axure,这5 个也能轻松画原型图!

在设计和开发过程中&#xff0c;原型图是一个至关重要的工具。它是将设计理念转化为可视化、交互式的形式&#xff0c;使团队成员和利益相关者更好地理解和评估产品的功能和用户体验。选择适合的软件工具对于画原型图至关重要&#xff0c;本文将介绍 5 种常用的画原型图软件&am…