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 相关文章推荐
js 加载并解析XML字符串的代码
Dec 13 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
js单向链表的具体实现实例
Jun 21 Javascript
jquery中each方法示例和常用选择器
Jul 08 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
Mar 02 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
Aug 05 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
Aug 29 Javascript
微信小程序wxs实现吸顶效果
Jan 08 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 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
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHP Cookie学习笔记
2016/08/23 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python模块学习 re 正则表达式
2011/05/19 Python
Python Socket编程入门教程
2014/07/11 Python
Python运用于数据分析的简单教程
2015/03/27 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
天地会口号
2014/06/17 职场文书
感谢信怎么写
2015/01/21 职场文书
教师党员个人自我评价
2015/03/04 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
浅谈MySQL之select优化方案
2021/08/07 MySQL
关于MySQL中的 like操作符详情
2021/11/17 MySQL
Docker官方工具docker-registry案例演示
2022/04/13 Servers