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 相关文章推荐
jQuery 1.5最新版本的改进细节分析
Jan 19 Javascript
一个简单的jquery进度条示例
Apr 28 Javascript
详解JavaScript中双等号引起的隐性类型转换
May 30 Javascript
JSON 数据格式详解
Sep 13 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
vue和webpack安装命令详解
Jun 15 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
npm的lock机制解析
Jun 20 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 Javascript
Vue.js自定义指令学习使用详解
Oct 19 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调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
AJAX的使用方法详解
2017/04/29 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python生成IP段的方法
2015/07/07 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
python实现图书借阅系统
2019/02/20 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
艺术用品:Arteza
2018/11/25 全球购物
杠杆的科学教学反思
2014/01/10 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
小升初自荐信范文
2015/03/05 职场文书
离婚案件答辩状
2015/05/22 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js