js下 Day10、尺寸位置属性
一.元素尺寸信息
元素.offsetWidth: 元素的外宽高 width + padding + border
元素.offsetHeight: 元素的外宽高 height + padding + border
元素.clientWidth: 元素的内宽高 width + padding
元素.clientHeight: 元素的内宽高 height+ padding
元素.offsetLeft: 相对于定位父元素左则的距离
元素.offsetTop: 相对于定位父元素顶部的距离
window.innerWidth: 浏览器的宽高(包含滚动条)
window.innerHeight: 浏览器显示窗口的当前高(包含滚动条)
document.documentElement.clientWidth || document.body.clientWidth
浏览器的宽高(不包含滚动条)
浏览器显示窗口的内容区宽高
document.documentElement.scrollWidth || document.body.scrollHidth
浏览器的滑动条距离;
document.document.scrollTop || document.body.scrollTop 滚动条滚动距离
#二.事件对象相关位置方法
鼠标距离盒子左上的位置: e.offsetX e.offsetY
鼠标相对于浏览器的位置: e.clientX e.clientY
鼠标相对于页面的位置: e.pageX e.pageY
#三.案例
#1. 单个盒子拖拽
效果图:
功能思路分析:
按下盒子,盒子才能拖。盒子跟随鼠标移动,盒子移动即修改盒子的left和top。松开鼠标停止拖拽。
功能一: 鼠标按下开起拖拽
\1. 给要拖拽的元素绑定鼠标按下事件( mousedown )
\2. 记录鼠标到盒子的距离**(e.offsetX e.offsetY)**
\3. 开启控制盒子移动的变量 ( flag = true )
功能二: 鼠标移动盒子移动
\1. 给document绑定**鼠标移动事件 (mousemove),**开关变量为真时移动盒子
\2. 盒子位置 = 鼠标到页面的距离( e.pageX ) - 鼠标到盒子的距离( pos.x )
\3. 范围判断: 最小为0; 最大 = 页面的宽 - 盒子的宽
\4. 修改盒子的left 和 top
功能三: 鼠标松开停止拖拽
松开鼠标时关闭开关变量
#2. 图标回收站
效果图:
功能思路分析:
功能一:图标拖拽
\1. 多个图标通过事件委托绑定鼠标按下事件
\2. 鼠标按下开启拖拽开关( flag = true ),记录鼠标到图标的距离(e.offsetX e.offsetY ),记录事件源(e.target) 。
\3. 图标跟随鼠标移动,给document绑定鼠标移动事件mousemove,当开关变量为真时移动盒子。
功能二:图标回收
\1. 当鼠标松开时,关闭拖拽开关
\2. 边界判断: 图标进入回收站则删除图标,并计数
#四.今日小结
1.元素的外宽高: 元素.offsetWidth 元素.offsetHeight
2.元素的内宽高: 元素.clientWidth 元素.clientHeight
3.元素相对于定位父元素距离: 元素.offsetLeft 元素.offsetTop
4.鼠标相对于元素位置: e.offsetX e.offsetY
5.鼠标相对于窗口位置: e.clientX e.clientY
6.鼠标相对于页面位置: e.pageX e.pageY
7.浏览器窗口大小:
document.documentElement.clientWidth || document.body.clientWidth
8.滚动距离:
document.documentElement.scrollTop || document.body.scrollTop
#五.作业 -- 成绩分类
效果图:
功能思路分析:
1. 成绩标签拖拽
\1. 利用事件委托将左侧的成绩标签实现拖拽
\2. 给成绩大盒子绑定鼠标按下事件,判断事件源
\3. 给document绑定鼠标移动事件,成绩标签跟随鼠标移动
2. 指定边界判断
\1. 给document绑定鼠标松开事件,松开时判断鼠标位置
\2. 当鼠标进入成才盒子,再判断成绩,合格则放入;当鼠标进入不成才盒子,不合格则放入。否则回到原地
js下 Day10、尺寸位置属性的更多相关文章
- js,jq获取元素位置属性及兼容性写法
网页被卷起来的高度/宽度 document.documentElement.scrolltop //火狐 和 其他浏览器 document.body.scrolltop //ie,谷歌浏览器和没有 ...
- three.js 相机camera位置属性设置详解
开始很懵逼,完全不能理解,有个position,还要up和lookAt干嘛. [黑人问号脸❓❓❓] 既然是位置属性不明白,那默认其它属性都懂了. 上坐标轴: 先来第一个position属性,可以设置x ...
- JS Div滚动,下拉框添加属性,年月日下拉条
创建某一下拉菜单的项: str = str+"<option value='"+i+"'>"+i+"</option>&quo ...
- css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...
- Swift下的基于UIView的位置属性扩展
一个比较简单能满足大部分需求的extensin,如下: swift 的基于UIView的位置属性 包含: 上下左右:left.right.top.botom 高宽:height.width 中心点:c ...
- js中scrollLeft、scrollWidth、offsetTop等相关位置属性的理解(转)
1.常见的事件位置属性 e.pageX——相对整个页面的坐标 注意:IE6.IE7.IE8无该属性 e.layerX——相对当前坐标系的border左上角开始的坐标 注意:在opera.IE6.IE7 ...
- Python全栈开发之路 【第十七篇】:jQuery的位置属性、事件及案例
位置属性 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- JQuery框架2.位置属性|筛选方法|事件
1.位置属性 jquery的css position获取匹配元素相对父元素的偏移位置:offset获取匹配元素在当前视口的相对偏移,返回的对象包含两个整型属性:top 和 left $("p ...
- 前端开发之jQuery位置属性和筛选方法
主要内容: 1.jQuery的位置属性及实例 (1)位置属性 (2)实例 --- 仿淘宝导航栏 2.jQuery的筛选方法及实例 (1)筛选方法 (2)实例一:嵌套选项卡 (3)实例二:小米官网滑动 ...
随机推荐
- 遇到 ''isSort()''declared here, later in the translation unit
在编写代码时,遇到 在原来的代码中出现这个问题 原来的代码: //3 计算排序时间 template<typename T> void testSort(string sortName, ...
- 如何用EasyRecovery恢复受损的SD卡?
SD卡的主要功能是拓展便携式设备.包括:数据相机.手机及其他的多媒体播放器等的存储空间,缓解设备本身的存储压力.即便是在产品内存已经逐渐增加的情况下,还是拥有一大批的忠实用户. 很多用户反应,SD卡使 ...
- 基于Python Requests的数据驱动的HTTP接口测试
发表于:2017-8-30 11:56 作者:顾翔 来源:51Testing软件测试网原创 http://www.51testing.com/html/69/n-3720769-2.html ...
- exgcd 学习笔记
最大公约数 更相减损术:\(\gcd(x,y)=\gcd(x,y-x)(x\leq y)\). 证明: 设 \(\gcd(x,y)=k\),则 \(x=kp,y=kq,\gcd(p,q)=1\). 那 ...
- ④SpringCloud 实战:引入Hystrix组件,分布式系统容错
这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- Windows下django项目部署 通过Apache2.4+mod_wsgi
经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程 运行环境: 先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(py ...
- 《Machine Learning in Action》—— 浅谈线性回归的那些事
<Machine Learning in Action>-- 浅谈线性回归的那些事 手撕机器学习算法系列文章已经肝了不少,自我感觉质量都挺不错的.目前已经更新了支持向量机SVM.决策树.K ...
- day3(Vue组件)
1.组件定义 1.定义组件并引用 2.父组件向子组件传值 3.子组件向父组件传值 # 组件间传值:vuex (https://www.cnblogs.com/xiaonq/p/9697921.html ...
- 第7.21节 Python抽象类—register注册虚拟子类
上两节介绍了Python抽象类的真实子类的定义和使用,本节介绍另一种抽象类的实现方法:虚拟子类方法. 一. 相关概念 虚拟子类是将其他的不是从抽象基类派生的类"注册"到抽象基 ...
- 第三十章、containers容器类部件QMdiArea多文档界面部件功能介绍及开发应用
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...