js操作元素的其他操作(4个案例+效果图+代码)

目录

1. 获取元素的位置和大小

案例:获取元素的位置和大小

1.代码

2.效果

2. 获取元素的可视区域

案例:获取元素的可视区域

1.代码

2.效果

3. 元素的滚动操作

案例:元素的滚动操作

1.代码

2.效果

4. 获取鼠标指针位置

案例:时刻获取鼠标位置

1.代码

2.效果

案例:拖动的小球

1.代码

2.效果


1. 获取元素的位置和大小

  • offsetParent: 返回作为该元素带有定位元素的最近的(指包含层级上的)元素。如果这个元素本身或者其任何父级没有使用CSS定位,则offsetParent通常是<body>元素。
  • offsetLeft: 返回当前元素相对于其offsetParent元素左边的距离,不包括边框、外边距和内边距。
  • offsetTop: 返回当前元素相对于其offsetParent元素顶部的距离,同样不包括边框、外边距和内边距。
  • offsetWidth: 返回元素的布局宽度,包括padding、内容区域和border,但不包括margin。
  • offsetHeight: 返回元素的布局高度,包括padding、内容区域和border,但不包括margin。

案例:获取元素的位置和大小

1.代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>获取元素的位置和大小</title><style>body {font-family: Arial, sans-serif;background-color: #f0f0f0;margin: 0;padding: 20px;display: flex;justify-content: center;align-items: center;height: 100vh;}#myDiv {background-color: #fff;border: 1px solid #ccc;}</style></head>
<body><div id="myDiv">这是一个元素</div><!-- 获取元素的位置和大小 --><script>//获取div元素var myDiv = document.getElementById("myDiv");console.log(myDiv);console.log(myDiv.offsetWidth);console.log(myDiv.offsetHeight);console.log(myDiv.offsetLeft);console.log(myDiv.offsetTop);</script>
</body>
</html>

2.效果

2. 获取元素的可视区域

  • clientLeft: 返回元素左侧边框的宽度。
  • clientTop: 返回元素顶部边框的高度。
  • clientWidth: 返回元素内部的宽度,即内容区域加上内边距(padding),但不包括边框(border)、外边距(margin)和垂直滚动条(如果有)。
  • clientHeight: 返回元素内部的高度,即内容区域加上内边距(padding),但不包括边框(border)、外边距(margin)和水平滚动条(如果有)。

案例:获取元素的可视区域

1.代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>获取元素的可视区域</title><style>body {font-family: Arial, sans-serif;background-color: #f0f0f0;margin: 0;padding: 20px;display: flex;justify-content: center;align-items: center;height: 100vh;}#myDiv {background-color: #fff;border: 1px solid #ccc;}</style>
</head>
<body><div id="myDiv">我是一个div元素</div><script>//获取控件var myDiv = document.getElementById("myDiv");console.log(myDiv.clientLeft)console.log(myDiv.clientTop)console.log(myDiv.clientWidth)console.log(myDiv.clientHeight)</script></body>
</html>

2.效果

3. 元素的滚动操作

  • scrollLeft: 设置或返回一个元素被滚动到左侧的距离。
  • scrollTop: 设置或返回一个元素被滚动到顶部的距离。
  • scrollWidth: 返回元素内容的完整宽度,即使该内容在视图中不可见(比如超出容器的部分)。它包含了元素的内容宽度加上padding,但不包括border和margin。
  • scrollHeight: 返回元素内容的完整高度,与scrollWidth类似,它也考虑了那些可能由于滚动而未显示的内容部分。

案例:元素的滚动操作

1.代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>元素的滚动操作</title><style>body {font-family: Arial, sans-serif;background-color: #f0f0f0;margin: 0;padding: 20px;display: flex;justify-content: center;align-items: center;height: 100vh;}#container {background-color: #fff;border: 1px solid #ccc;}#box {width: 200px;height: 100px;background-color: #007bff;border-radius: 5px;/** 滚动设置*/overflow: scroll;}</style>
</head>
<body><div id="container"><div id="box"><p>这是一篇很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长的文章</p></div></div><!-- 元素的滚动操作 --><script>// 获取元素var box = document.querySelector("#box");// 事件box.addEventListener("scroll",()=>{console.log("滚动了");console.log(box.scrollTop);console.log(box.scrollLeft);console.log(box.scrollHeight);console.log(box.scrollWidth);})</script></body>
</html>

2.效果

4. 获取鼠标指针位置

  • clientX 和 clientY: 在事件对象中提供鼠标点击时相对浏览器窗口(viewport)的坐标。
  • pageX 和 pageY: 提供鼠标点击时相对于整个文档的坐标,不受滚动影响。
  • screenX 和 screenY: 给出鼠标点击时相对于用户屏幕左上角的绝对坐标,这通常用于跨窗口或全屏应用程序。

案例:时刻获取鼠标位置

1.代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>实时获取鼠标位置</title></head><body><div id="mousePosition"><p>鼠标位置:</p><p id="mouseX"></p><p id="mouseY"></p></div><button id="onButton">装载时刻获取鼠标位置</button><button id="offButton">卸载时刻获取鼠标位置</button><!-- script挂载鼠标移动事件 --><script>//获取显示组件var mousePosition = document.getElementById("mousePosition");//获取按钮var onButton = document.getElementById("onButton");var offButton = document.getElementById("offButton");// 鼠标移动事件处理函数function handleMouseMove(event) {var mouseX = document.getElementById("mouseX");var mouseY = document.getElementById("mouseY");// 获取鼠标相对于窗口的位置var mouseXa = event.clientX;var mouseYa = event.clientY;//这个应该是更新文档mouseX.textContent = "X: " + mouseXa;mouseY.textContent = "Y: " + mouseYa;}// 装载dom节点onButton.onclick = function () {document.addEventListener("mousemove", handleMouseMove);};//卸载dom节点offButton.onclick = function () {document.removeEventListener("mousemove", handleMouseMove);};</script></body></html>

2.效果

3.解释

这段HTML代码创建了一个简单的网页,它能够实时显示鼠标在页面上的位置。这里有两个按钮:“装载时刻获取鼠标位置”和“卸载时刻获取鼠标位置”,用户可以通过点击这两个按钮来控制是否开启或关闭实时鼠标位置的追踪功能。下面我用口语化的语言来解释一下这段代码:

  1. 页面结构:

    • 有一个标题叫做“实时获取鼠标位置”。
    • 页面中包含一个div元素,用来展示鼠标的位置信息。这个div里有三个段落(p标签):第一个段落是静态文本“鼠标位置:”,接下来两个分别用于显示鼠标的X坐标和Y坐标。
    • 页面上有两个按钮,一个是用来启动鼠标位置追踪的,另一个是用来停止追踪的。
  2. JavaScript脚本:

    • 首先,通过document.getElementById方法找到了页面中的几个关键元素:显示鼠标位置的div以及两个按钮。
    • 定义了一个函数handleMouseMove,每当鼠标在文档上移动时,这个函数就会被调用。在这个函数里,会读取当前鼠标相对于浏览器窗口的X和Y坐标,并更新到页面上相应的段落里。
    • onButton按钮绑定了一个点击事件处理程序,当用户点击这个按钮时,会为整个文档添加一个鼠标移动事件监听器,这样每次鼠标移动都会触发handleMouseMove函数。
    • offButton按钮绑定了另一个点击事件处理程序,它的作用正好相反,即移除之前添加的鼠标移动事件监听器,从而停止更新鼠标位置。

        简单来说,当你打开这个网页时,你可以看到两个按钮。如果你点击了“装载时刻获取鼠标位置”按钮,那么无论你把鼠标移动到页面的哪个地方,页面都会显示出当前鼠标的具体位置(X坐标和Y坐标)。而一旦你点击了“卸载时刻获取鼠标位置”按钮,这种追踪就会停止,页面不再显示鼠标的实时位置。

案例:拖动的小球

1.代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>拖动小球</title><style>body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 20px;display: flex;flex-direction: column;align-items: center;}#ball {width: 50px;height: 50px;background-color: #007bff;border-radius: 50%;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);cursor: move;/**动画挂载*/animation: ballBreath 1s linear infinite;}/**小球呼吸动画+色变+频率比较高*/@keyframes ballBreath {0% {transform: scale(1);background-color: #2f72b9;}10% {transform: scale(1.2);background-color: #beb59a;}20% {transform: scale(1);background-color: #0ff855;}30% {transform: scale(1.2);background-color: #271e05;}40% {transform: scale(1);background-color: #8a1ee2;}50% {transform: scale(1.2);background-color: #bd1616;}60% {transform: scale(1);background-color: #00db63;}70% {transform: scale(1.2);background-color: #d3e010e5;}80% {transform: scale(1);background-color: #007bff;}90% {transform: scale(1.2);background-color: #13fc4d;}100% {transform: scale(1);background-color: #007bff;}}.mouse-position {background-color: white;border: 1px solid #ccc;border-radius: 5px;padding: 20px;margin-top: 20px;width: 300px;text-align: center;}.mouse-position p {margin: 5px 0;}audio {display: none;}</style>
</head><body><div id="ball"></div><audio id="myAudio" src="https://freepd.com/music/The%20Celebrated%20Minuet.mp3" loop autoplay hidden></audio><div class="mouse-position"><p>小球位置:</p><p id="mouseX"></p><p id="mouseY"></p></div><!-- 拖动小球的功能 --><script>// 获取小球var ball = document.querySelector("#ball");// 小球按下事件 //挂载mousemove事件ball.onmousedown = function (event) {// 挂载函数ball.onmousemove = function (event) {moveBall(event);}}// 小球松开鼠标事件  //卸载mousemove事件ball.onmouseup = function () {ball.onmousemove = null;}// 时刻获取鼠标位置和设置小球位置function moveBall(event) {// 获取鼠标位置var mouseX = event.clientX;var mouseY = event.clientY;// 设置小球位置ball.style.left = mouseX - ball.offsetWidth / 2 + "px";ball.style.top = mouseY - ball.offsetHeight / 2 + "px";// 坐标刷新var mouseXElement = document.getElementById("mouseX");var mouseYElement = document.getElementById("mouseY");mouseXElement.textContent = "X: " + mouseX;mouseYElement.textContent = "Y: " + mouseY;}</script>
</body></html>

2.效果

3.解释

这段代码创建了一个网页,其中包含一个小球,用户可以用鼠标拖动这个小球,并且会显示小球当前的位置。此外,还有一个背景音乐自动播放。下面我用口语化的语言来解释一下这段代码:

  1. 页面设置:

    • 首先定义了网页的基本信息,比如字符集是UTF-8,确保文字能正确显示。
    • 设置了视口(viewport),让网页在移动设备上看起来更好。
    • 网页标题叫做“拖动小球”。
  2. 样式:

    • 页面的背景颜色设置为浅灰色,字体使用Arial或类似的无衬线字体。
    • 小球是一个50x50像素的圆形,初始时位于屏幕正中,有一个呼吸效果(即大小和颜色随时间变化)。
    • 有个看不见的小方块用来显示鼠标位置。
  3. 小球动画:

    • 小球有一个叫ballBreath的动画,它会让小球不断地改变大小(从正常到稍微大一点再回到正常)并且同时改变颜色,这个过程持续一秒,然后重复。
    • 动画过程中颜色会在多种预设的颜色之间切换,给小球一个生动的效果。
  4. 音频:

    • 加载了一段音乐并让它循环播放。音乐文件是从一个外部链接获取的,用户看不到这个播放器,因为它被隐藏了。
  5. 鼠标操作:

    • 当用户点击小球并开始拖动时,浏览器会监听鼠标的移动事件。
    • 拖动时,小球会跟随鼠标指针移动到新位置,同时更新显示鼠标坐标的位置。
    • 用户松开鼠标后,停止监听鼠标移动事件,这样小球就不会继续跟着鼠标走了。

        总的来说,这段代码实现了一个互动性很强的小球,可以随着用户的鼠标动作移动,并伴随着背景音乐。当你拖动小球时,还会实时看到它的X和Y坐标。

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

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

相关文章

万物智联创未来,第三届OpenHarmony技术大会在上海成功举办 深圳触觉智能参会

​10月12日&#xff0c;以“技术引领筑生态&#xff0c;万物智联创未来”为主题的第三届OpenHarmony技术大会&#xff08;以下简称“大会”&#xff09;在上海成功举办。本次大会由OpenHarmony项目群技术指导委员会&#xff08;TSC&#xff09;主办&#xff0c;华为、上海交通大…

阿里云物联网自有app创建之初始化SDK

文章目录 一、新建工程&#xff0c;配置gradle,导入.so文件&#xff0c;生成apk二、上传apk&#xff0c;集成安全图片&#xff0c;下载SDK三、SDK的集成四、初始化SDK 最近在研究阿里云自有app,这是自己的心得。 一、新建工程&#xff0c;配置gradle,导入.so文件&#xff0c;生…

Gin框架官方文档详解03:HTML渲染

注&#xff1a;本教程使用工作区方法管理项目&#xff0c;详见第一讲&#xff1a;创建一个简单的Gin应用。 目录 一、简单渲染二、使用不同目录下名称相同的模板三、自定义模板渲染器四、自定义分隔符五、自定义模板函数六、总结 一、简单渲染 首先&#xff0c;以03HTML渲染为…

机器学习与神经网络:诺贝尔物理学奖的新篇章

机器学习与神经网络&#xff1a;诺贝尔物理学奖的新篇章 引言 2024年诺贝尔物理学奖的颁发&#xff0c;无疑是一个历史性的转折点。这一奖项首次授予了在机器学习与神经网络领域做出杰出贡献的科学家&#xff0c;标志着人工智能技术在科学研究中的重要地位得到了前所未有的认…

3.计算机网络_端口号

端口号的由来 运输层的作用&#xff1a; 在计算机网络中&#xff0c;运输层处在用户功能的最底层、通信部分的最高层的位置&#xff0c;也就是说运输层是用户数据和实际网络通信的桥梁。因此运输层屏蔽了网络的实现部分&#xff0c;以协议的方式向用户层提供了接口&#xff…

Matlab绘图总结(进阶)

本文在前文的基础上进一步整理画图方法 MATLAB画动图_CSDN博客 1. 基础图形绘制 1.1 rectangle&#xff08;矩形&#xff0c;圆形&#xff09; 在前文中&#xff0c;讲解了如何使用rectangle&#xff0c;rectangle本意是用来画矩形的&#xff0c;其中&#xff0c;Curvature可…

【一起学Rust | 框架篇 | Tauri2.0框架】高级概念之安全特性的权限与能力

文章目录 前言一、开发前准备1. 准备项目2. 需求分析1. 监听系统热键2. 切换窗口无边框3. 切换窗口全屏 二、安装插件三、前端实现功能四、配置权限 前言 当前时间为 2024 年 9 月&#xff0c;距离Tauri 2.0 的 RC 版本发布迄今已近一个月。从 Tauri 官方渠道可以看出&#xf…

CVESearch部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.1.1、下载安装基础组件2.1.1.2、下载安装MongoDB Community Edition 7.0 2.1.2、使用源码安装系统2.1.2.1、安装CVESearch2.1.2.2、填充MongoDB数据库2.1.2.3、填充Redis数据库 2.2、使用方法 3、测…

使用java画一条线。

package p1008;import javax.swing.*; import java.awt.*;public class LineAndTextExample extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 设置线条粗细Graphics2D g2d (Graphics2D) g;g2d.setStroke(new BasicStroke(5))…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(基础)

SpringBoot教程&#xff08;二十四&#xff09; | SpringBoot实现分布式定时任务之Quartz&#xff08;基础&#xff09; 简介适用场景Quartz核心概念Quartz 存储方式Quartz 版本类型引入相关依赖开始集成方式一&#xff1a;内存方式(MEMORY)存储实现定时任务1. 定义任务类2. 定…

Broken pipe异常分析及处理

问题出现&#xff1a;生产上运行的系统业务正常&#xff0c;当在查询数据时&#xff0c;出现后台异常&#xff0c;检查后台日志出现Broken Pipe异常&#xff1b; 如图示&#xff1a; Broken Pipe定义&#xff1a;通常发生在服务器端尝试向已关闭的套接字&#xff08;客户端/端…

前端面试经验总结1(简历篇)

本文分为3部分&#xff0c;分别为第一部分简历篇&#xff0c;第二部分经典问题篇以及第三部分知识体系篇&#xff0c;都是个人面试经验及同行面试经验总结和整理。 我对于简历的理解是这样的&#xff0c;简历的作用是让看简历的人能够快速、准确地捕捉到有用信息&#xff1a; 你…

大数据存储,搜索智能化的实践分享 | OceanBase 城市交流会精彩回顾

9月21日&#xff0c;“OceanBase 城市交流会”来到了深圳&#xff0c;携手货拉拉大数据技术与产品部&#xff0c;联合举办了“走进货拉拉”的技术交流活动。货拉拉、万家数科、云集、百丽等多家企业的一线技术专家&#xff0c;就大数据存储、AI等热点话题&#xff0c;深入探讨并…

新的一轮前端面试已来临,避坑指南来 get!

最近看到很多人都在投简历&#xff0c;可是很多人对待面试不够认真&#xff0c;只会等待结果&#xff0c;不去努力。所以整理一些懒人面试技巧给大家。 我们说说目前应用面积最广的 Vue&#xff0c;大厂或是高级工程师面试的时候究竟会碰到什么棘手或是难缠的 Vue 的面试题呢&a…

人工智能 | openai chatgpt 大语言模型

简介 OpenAI 一个美国人工智能研究实验室&#xff0c;由非营利组织 OpenAI Inc&#xff0c;和其营利组织子公司 OpenAI LP 所组成。该组织于 2015 年由萨姆阿尔特曼、里德霍夫曼、杰西卡利文斯顿、伊隆马斯克、伊尔亚苏茨克维、沃伊切赫萨伦巴、彼得泰尔等人在旧金山成立&…

高效数据处理:MapReduce与Hive的实战应用

文章目录 hive分析汇总互联网日志分析1.项目需求2.数据说明3.算法思路 用户电影推荐1.项目需求2.数据说明3.算法思路4.解题步骤 简单数据统计WordCount数据说明 疫情数据分析1.项目需求2.数据说明step1:创建ods层数据表step2&#xff1a;创建dwd层数据表step3&#xff1a;创建d…

selenium的webdriver常用方法和属性介绍(2)

selenium的webdriver介绍 从selenium导入webdriver模块&#xff0c;在pycharm中跳转webdriver模块的__init__.py文件&#xff0c;内容如图所示&#xff1a;从selenium包的子目录中导入了很多模块并做了重命名&#xff0c;用于支持如下 Chrome/Edge/Ie/Firefox/Safari浏览器。 使…

Codigger Keyboard Look应用说明

Keyboard Look是一项专为Desktop设计的功能模式&#xff0c;旨在通过全面启用键盘操作&#xff0c;减少对鼠标依赖&#xff0c;从而提升用户的工作效率和操作体验。尤其对于频繁使用键盘的用户&#xff0c;如开发者&#xff0c;此模式可显著加速日常操作&#xff0c;优化工作流…

连肝了多天学习MySQL索引与性能优化,详细总结一下索引的使用与数据库优化

文章目录 索引是什么&#xff1f;索引的作用初步认识索引索引的类型按照数据结构分类BTREE索引 哈希索引 按功能逻辑进行分类唯一索引普通索引主键索引全文索引 按照字段的个数进行划分单列索引多列&#xff08;组合&#xff0c;联合&#xff09;索引 小结索引的设计原则数据准…

Centos7 搭建单机elasticsearch

以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改&#xff09; 一、装 Java 环境 Elasticsearch 是用 Java 编写的&#xff0c;所以需要先安装 Java 运行环境。 检查系统中是…