javascript取下拉框显示值(JavaScript offset实现鼠标坐标获取和窗口内模块拖动)
javascript取下拉框显示值
JavaScript offset实现鼠标坐标获取和窗口内模块拖动offset
offset 即偏移量,使用 offset 系列相关属性可以 动态的 获取该元素的位置(偏移)、大小等,如:
元素距离带有定位父元素的位置
获取元素自身的大小(宽度高度)
注:返回的数值不带单位
offset 系列常用的属性包括:
element.offsetParent
返回作为该元素带有定位的父级元素,如果父级元素没有定位,则返回 body
注意,parentNode 和 offsetParent 还是有本质上的区别的:parentNode 返回的是直接父级元素,offsetParent 返回的是带有定位的父级元素。
element.offsetTop
返回元素带有定位父元素上方的偏移
element.offsetLeft
返回元素带有定位父元素左边框的偏移
element.offsetWidth
返回自身包括 padding, 边框, 内容区的宽度,返回数值不带单位
element.offsetHeight
返回自身包括 padding, 边框, 内容区的高度,返回数值不带单位
offset 和 style 的区别
offset
style
offset 可以得到任意样式表中的样式值
style 只能得到行内样式表中的样式值,无法获得内嵌样式
offset 系列获得的数值是没有单位的
style.width
获得的是带有单位的字符串
offsetWidth 包含 padding+border+width
style.width
获得不包含 padding 和 border 的值
offsetWidth 等属性是只读属性,只能获取不能赋值
style 属性是可读写属性,
style.width
可以获取也可以赋值
只想要获取元素大小位置的时候,用 offset 更合适
要对元素样式进行修改的话,使用 style 更合适
案例一:实时展示鼠标的坐标
演示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>鼠标位置获取-01</title> <style> .box { width: 500px; height: 500px; background-color: #55aaff; margin-left: 50px; } </style> </head> <body> <p>获取鼠标在盒子内坐标</p> <li class="box"></li> <script> // 在盒子中点击,想要获得鼠标距离盒子左右的距离 // 实现: // 1. 获得鼠标在页面中的坐标,e.pageX, e.pageY // 2. 获得盒子到页面中的距离, box.offsetLeft, box.offsetTop // 3. 两者相减就能够获得鼠标在盒子中的坐标 // 下面看实现过程吧! const box = document.querySelector(".box"); box.addEventListener("mousemove", function(e) { // console.log(e.pageX, e.pageY); // console.log(box.offsetLeft, box.offsetTop); const x = e.pageX - this.offsetLeft; const y = e.pageY - this.offsetTop; box.textContent = `x: ${x}, y: ${y}`; }); </script> </body> </html>
案例二:拖动模块
演示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>模块拖动-02</title> <style> * { margin: 0; padding: 0; } .login, .modal { display: none; } .login { width: 512px; height: 280px; position: fixed; border: #ebebeb solid 1px; left: 50%; top: 50%; background-color: #fff; box-shadow: 0 0 20px #ddd; z-index: 999; transform: translate(-50%, -50%); text-align: center; } .modal { position: absolute; top: 0; left: 0; width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.3); z-index: 998; } .login-content { margin: 100px auto; text-align: center; } .login-content h3:hover, .closeBtn:hover { cursor: pointer; } .closeBtn { position: absolute; right: 10px; top: 10px; } .login h4 { margin-top: 10px; } .login h4:hover { cursor: move; } </style> </head> <body> <li class="login-content"> <h3 id="openLogin">点击弹出模拟框</h3> </li> <li class="login"> <li class="closeBtn" id="closeBtn">关闭</li> <h4 class="loginHeader">点击我拖动吧</h4> </li> <li class="modal"></li> <script> // 获取元素 const login = document.querySelector(".login"); const modal = document.querySelector(".modal"); const closeBtn = document.querySelector("#closeBtn"); const openLogin = document.querySelector("#openLogin"); // 点击显示元素 openLogin.addEventListener("click", () => { modal.style.display = "block"; login.style.display = "block"; }); closeBtn.addEventListener("click", () => { modal.style.display = "none"; login.style.display = "none"; }); // 实现拖拽移动功能 // 1. 鼠标按下获得鼠标在盒子内的坐标 const loginHeader = document.querySelector(".loginHeader"); loginHeader.addEventListener("mousedown", function (e) { const x = e.pageX - login.offsetLeft; const y = e.pageY - login.offsetTop; const move = function (e) { login.style.left = `${e.pageX - x}px`; login.style.top = `${e.pageY - y}px`; }; // 2. 移动鼠标 document.addEventListener("mousemove", move); document.addEventListener("mouseup", function () { document.removeEventListener("mousemove", move); }); }); </script> </body> </html>
到此这篇关于JavaScript offset实现鼠标坐标获取和窗口内模块拖动的文章就介绍到这了,更多相关JavaScript鼠标坐标获取和窗口内模块拖动内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- javascript数组实例扩展方法(JavaScript如何监测数组的变化)
- javascript如何判断类型(JavaScript如何优化逻辑判断代码详解)
- JavaScript将具有父子关系的数据转化成树形结构,供tree控件使用
- 浏览器怎么显示javascript页面(JavaScript如何通过userAgent判断几个常用浏览器详解)
- javascript的作用域详解精简版(浅谈JavaScript 中的延迟加载属性模式)
- javascript学习参数(详解JavaScript堆栈与拷贝)
- javascript设置鼠标(JavaScript实现鼠标控制自由移动的窗口)
- js中什么是宏任务(浅谈JavaScript宏任务和微任务执行顺序)
- javascript:; 和javascript:void(0);
- Javascript中apply、call、bind
- pyqt5加载chrome浏览器(PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例)
- javascript取下拉框显示值(JavaScript offset实现鼠标坐标获取和窗口内模块拖动)
- mvc JavaScriptResult的用法
- 使用javascript数组循环(JavaScript数组reduce方法的语法与实例解析)
- javascript页面滚动窗口(javascript实现简单滚动窗口)
- javascript如何操作文档元素(JavaScript操作元素实例大全)
- 这里输入关键词(请手动输入关键词)
- 小说 顾瑾岚拿出一套飞行棋,别说你连飞行棋都不会哦(顾瑾岚拿出一套飞行棋)
- 金品公司 界界乐中秋限定飞行棋礼盒 露营藤篮礼盒全新上市(界界乐中秋限定飞行棋礼盒)
- 必看 8月,相比七夕,更需要注意的是这些事(必看8月相比七夕)
- 8月23日11时16分将迎处暑,逐渐进入气象意义上的秋天(8月23日11时16分将迎处暑)
- 花不语 下 如果重来一次的话,你还会这么选择吗(花不语下如果重来一次的话)
热门推荐
- dedecms系统设置参数(织梦DedeCMS文档点击数过万后直接显示以“万”为单位的数值的方法)
- vue使用elementui框架(总结Vue Element UI使用中遇到的问题)
- 非关系型数据库和关系型数据库(关系型数据库与非关系型数据库简介)
- 宝塔linux面板安装(宝塔Linux控制面板专业版破解步骤亲测可用)
- 宝塔web服务器如何安装(宝塔面板开启Nginx/Apache防火墙四层防御的方法)
- dedecms中的有些功能如何修改(Dedecms 生成速度慢 的解决办法)
- html怎么设置地图(HTML5获取当前地理位置并在百度地图上展示的实例)
- <i>和<em>、<b>和<strong>的区别
- python ip代理池(Python 实现域名解析为ip的方法)
- python数据分析删除重复值(Python3实现从排序数组中删除重复项算法分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9