JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结


Posted in Javascript onJune 27, 2019

本文实例讲述了JS前端知识点offset,scroll,client,冒泡,事件对象的应用。分享给大家供大家参考,具体如下:

关于offset

多用于检测盒子高度,宽度,位置等

- offsetWidth : 盒子的宽度, 包括(width, padding, border)
- offsetHeight: 盒子的高度, 包括(height, padding, border)
- offsetLeft: 返回自身距离带有定位的上级盒子左边的位置
- offsetTop: 返回自身距离带有定位的上级盒子上边的距离
- offsetParent: 返回自身带有定位的父级对象

dom.style.left 与 dom.offsetLeft 的区别

  • offsetLeft 返回的值是数字,style.left 返回的带'px'
  • offsetLeft 只读, style.top 可读写
  • offsetLeft 本身可以无定位, style.left 本身必须有定位属性

关于scroll

  • scrollTop : 盒子或页面滚动距离顶部的距离
  • scrollLeft : 盒子或页面滚动距离左侧的距离
  • scrollTo : 盒子或页面滚动到的位置,参数(x,y)
  • onscroll : 使用onscroll 事件检测window或者dom的滚动

页面scrollTop的兼容写法

var scrolltop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

关于client

  • clientWidth: width + padding
  • clientHeight
  • scrollWidth: width + padding + (如果有溢出,包括溢出部分)
  • scrollHeight: height + padding + (如果有溢出,包括溢出部分)

检测屏幕可视区域宽度的兼容写法

function getClientWidth() {
  if(!window.innerWidth) {
    return {
      width: window.innerWidth,
      height: window.innerHeight
    }
  } else if (document.compatMode === "CSS1Compat") {
    // 标准模式下
    return {
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight
    }
  }
  // 怪异模式
  return {
    width:document.body.clientWidth,
    height:document.body.clientHeight
  }
}

检测电脑屏幕尺寸

  • window.screen.width
  • window.screen.height

事件的冒泡

冒泡顺序演示

  • IE 6.0 : div > body > html > document
  • 其他浏览器:div > body > html > document > window
  • 不存在冒泡的事件: blur, focus, load, unload

阻止冒泡

借助事件对象 evt

  • 标准浏览器:evt.stopPropagation();
  • IE: evt.cancelBubble = true;

通过事件对象获取事件源对象示例

btn.onclick = function(event) {
 var evt = window.event || event;
  var target = evt.target ? evt.target : evt.srcElement;
 console.log(target);
}

常用的 event 对象属性

  • pageX : 光标相对于该网页的水平位置 (非IE6,7,8属性)
  • pageY : 光标相对于该网页的垂直位置 (非IE6,7,8属性)
  • screenX : 光标相对于该屏幕的水平位置
  • screenY : 光标相对于该屏幕的垂直位置
  • clientX : 光标相对于该网页可见区域的水平位置
  • clientY : 光标相对于该网页可见区域的垂直位置
  • target : 该事件被传送到的对象
  • type : 事件的类型

event 对象兼容的写法示例

document.onclick = function(event) {
 var evt = event || window.event;
}

pageX 和 pageY的兼容性

pageX = evt.clientX + document.documentElement.scrollLeft;
pageY = evt.clientY + document.documentElement.scrollTop;

更多关于JavaScript相关内容可查看本站专题:《JavaScript事件相关操作与技巧大全》、《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript调试工具(下载)
Jan 09 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
Jan 15 Javascript
JavaScript设置首页和收藏页面的小例子
Nov 11 Javascript
Flow之一个新的Javascript静态类型检查器
Dec 21 Javascript
javascript自动切换焦点控制效果完整实例
Feb 02 Javascript
jQuery Validate设置onkeyup验证的实例代码
Dec 09 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
微信小程序实现保存图片到相册功能
Nov 30 Javascript
微信小程序云开发 生成带参小程序码流程
May 18 Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 Javascript
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
ES6 let和const定义变量与常量的应用实例分析
Jun 27 #Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 #Javascript
微信小程序实现form表单本地储存数据
Jun 27 #Javascript
ES6 class的应用实例分析
Jun 27 #Javascript
ES6 Promise对象的应用实例分析
Jun 27 #Javascript
使用Vue 实现滑动验证码功能
Jun 27 #Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 #Javascript
You might like
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
PHP多文件上传实例
2015/07/09 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Python实现搜索算法的实例代码
2020/01/02 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
代理协议书
2014/04/22 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
学生检讨书
2015/01/27 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python