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去除空格的几种方法
Oct 03 Javascript
JavaScript 通过模式匹配实现重载
Aug 12 Javascript
自动最大化窗口的Javascript代码
May 22 Javascript
JS+css 图片自动缩放自适应大小
Aug 08 Javascript
Jquery通过JSON字符串创建JSON对象
Aug 24 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
Apr 24 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
Angular2搜索和重置按钮过场动画
May 24 Javascript
原生JS写Ajax的请求函数功能
Dec 22 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 Javascript
JS制作简易计算器的实例代码
Jul 04 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 21 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二分查找二种实现示例
2014/03/12 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
工商管理系学生的自我评价分享
2013/11/29 职场文书
政治表现评语
2014/05/04 职场文书
社团活动总结书
2014/06/27 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB