一.元素尺寸信息

元素.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. 单个盒子拖拽

效果图:

img

功能思路分析:

按下盒子,盒子才能拖。盒子跟随鼠标移动,盒子移动即修改盒子的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

#五.作业 -- 成绩分类

效果图:

img

功能思路分析:

1. 成绩标签拖拽

\1. 利用事件委托将左侧的成绩标签实现拖拽

\2. 给成绩大盒子绑定鼠标按下事件,判断事件源

\3. 给document绑定鼠标移动事件,成绩标签跟随鼠标移动

2. 指定边界判断

\1. 给document绑定鼠标松开事件,松开时判断鼠标位置

\2. 当鼠标进入成才盒子,再判断成绩,合格则放入;当鼠标进入不成才盒子,不合格则放入。否则回到原地

js下 Day10、尺寸位置属性的更多相关文章

  1. js,jq获取元素位置属性及兼容性写法

    网页被卷起来的高度/宽度 document.documentElement.scrolltop //火狐 和 其他浏览器 document.body.scrolltop   //ie,谷歌浏览器和没有 ...

  2. three.js 相机camera位置属性设置详解

    开始很懵逼,完全不能理解,有个position,还要up和lookAt干嘛. [黑人问号脸❓❓❓] 既然是位置属性不明白,那默认其它属性都懂了. 上坐标轴: 先来第一个position属性,可以设置x ...

  3. JS Div滚动,下拉框添加属性,年月日下拉条

    创建某一下拉菜单的项: str = str+"<option value='"+i+"'>"+i+"</option>&quo ...

  4. css中overflow:hidden的属性 可能会导致js下拉菜单无法显示

    css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...

  5. Swift下的基于UIView的位置属性扩展

    一个比较简单能满足大部分需求的extensin,如下: swift 的基于UIView的位置属性 包含: 上下左右:left.right.top.botom 高宽:height.width 中心点:c ...

  6. js中scrollLeft、scrollWidth、offsetTop等相关位置属性的理解(转)

    1.常见的事件位置属性 e.pageX——相对整个页面的坐标 注意:IE6.IE7.IE8无该属性 e.layerX——相对当前坐标系的border左上角开始的坐标 注意:在opera.IE6.IE7 ...

  7. Python全栈开发之路 【第十七篇】:jQuery的位置属性、事件及案例

    位置属性 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  8. JQuery框架2.位置属性|筛选方法|事件

    1.位置属性 jquery的css position获取匹配元素相对父元素的偏移位置:offset获取匹配元素在当前视口的相对偏移,返回的对象包含两个整型属性:top 和 left $("p ...

  9. 前端开发之jQuery位置属性和筛选方法

    主要内容: 1.jQuery的位置属性及实例 (1)位置属性 (2)实例 --- 仿淘宝导航栏 2.jQuery的筛选方法及实例 (1)筛选方法 (2)实例一:嵌套选项卡 (3)实例二:小米官网滑动 ...

随机推荐

  1. 理解Volatile关键字,其实看这一篇就够了,写的非常细致

    前言 volatile是Java虚拟机提供的轻量级的同步机制. volatile关键字作用是什么? 两个作用: 1.保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个 ...

  2. java大厂面经-阿里腾讯、网易美团、京东、华为、快手、字节全在这里了

    前言 在这篇文章详细说了该如何去复习,之前也答应各位把面经整理一下,但是因为入职的事情耽搁了,现在整理出来回馈给大家! 美团 一面 0.自我介绍1.问项目(项目详细介绍.用到什么技术.有什么优化)2. ...

  3. 使用CleanMyMac快速管理应用程序 优化Mac

    CleanMyMac作为一款专业的苹果电脑清理软件,它不仅仅能单纯的卸载不用.少用的应用,同时还支持:1.清理应用程序的数据文件,将应用重置回初始状态,减少空间占用:2.自动检查应用更新,保持应用的最 ...

  4. Word文档数据被误删了怎么办,还能恢复吗

    很多时候由于时间紧张或者是思路不想被打断,我们在编辑Word时不能及时的手动保存,一旦遇到电脑意外断电的情况可能就会导致编辑好的Word文档内容丢失.或者是文档编辑好了之后,Word提示是否保存时,误 ...

  5. Vuex form表单处理, 比官网更好的办法

    Vuex form表单处理, 比官网更好的办法 问题, 当使用vuex的state作为表单的v-model元素, 虽然简单粗暴, 但这种修改没有经过mutation方法. 在严格模式下会抛出错误 目录 ...

  6. 你知道第一个C语言C++编译器是如何诞生的吗?

    当今几乎所有的实用的编译器/解释器(以下统称编译器)都是用 C 语言编写的,有一些语言比如 Clojure,Jython 等是基于 JVM 或者说是用 Java 实现的,IronPython 等是基于 ...

  7. MySQL必知必会:简介undo log、truncate、以及undo log如何帮你回滚事物

    目录 一.前言 二.undo log表空间 三.关于undo log默认的配置 四.如何将undo log放到单独的表空间 文章公众号首发,持续更新中 五.rollback segment 六.什么是 ...

  8. Docker一些基本操作

    1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: docker ...

  9. 使用 Jasypt 加密 Spring Boot 配置文件

    一.添加依赖包 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId> ...

  10. flask:蓝图--blueprint

    一.蓝图 1.什么是蓝图?(WHAT) 1)蓝图就是模块化处理的类 2)用于实现单个应用的视图.模板.静态文件的集合 总结:蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关 ...