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实现Sleep函数的代码
Mar 04 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
checkbox勾选判断代码分析
Jun 11 Javascript
JavaScript中的包装对象介绍
Jan 27 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
js设置随机切换背景图片的简单实例
Nov 12 Javascript
原生js调用json方法总结
Feb 22 Javascript
JavaScript解析JSON数据示例
Jul 16 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
Apr 09 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版(5)
2006/10/09 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
动态样式类封装JS代码
2009/09/02 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
js实现微信分享代码
2020/10/11 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
python获得文件创建时间和修改时间的方法
2015/06/30 Python
python 列表降维的实例讲解
2018/06/28 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
pycharm快捷键汇总
2020/02/14 Python
大学军训感言800字
2014/02/27 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
买房协议书
2014/04/11 职场文书
贺卡寄语大全
2014/04/11 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
法制宣传口号
2014/06/16 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
质检员岗位职责范本
2015/04/07 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL