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 相关文章推荐
event.srcElement+表格应用
Aug 29 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
Oct 21 Javascript
javascript中文本框中输入法切换的问题
Dec 10 Javascript
js控制当再次点击按钮时的间隔时间
Jun 03 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
javascript简单链式调用案例分析
May 10 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
vue 文件目录结构详解
Nov 24 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
puppeteer实现html截图的示例代码
Jan 10 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
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
python 容器总结整理
2017/04/04 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python标记语句块使用方法总结
2019/08/05 Python
详解python中的数据类型和控制流
2019/08/08 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python中提高pip install速度
2020/02/14 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
应届大学生的推荐信
2013/11/20 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
施工安全承诺书
2014/05/22 职场文书
供用电专业求职信
2014/07/07 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
教师师德考核自我评价
2014/09/13 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
团委工作总结2015
2015/04/02 职场文书
山楂树之恋观后感
2015/06/11 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
python实现网络五子棋
2021/04/11 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python