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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
最常用的12种设计模式小结
Aug 09 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
Sep 29 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
Jul 21 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
如何使用VuePress搭建一个类型element ui文档
Feb 14 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
javascript中call,apply,bind的区别详解
Dec 11 Javascript
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
如何在PHP中进行身份认证
2006/10/09 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Python与Redis的连接教程
2015/04/22 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
自考生自我鉴定范文
2013/10/01 职场文书
大学生物业管理求职信
2013/10/24 职场文书
工商企业管理实习自我鉴定
2013/12/04 职场文书
教师节活动总结
2014/08/29 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
个人工作决心书
2015/09/22 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书