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中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 Javascript
jquery实现的用户注册表单提示操作效果代码分享
Aug 28 Javascript
JS中常用的正则表达式
Sep 29 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 Javascript
Angular中自定义Debounce Click指令防止重复点击
Jul 26 Javascript
详解vue-cli3多页应用改造
Jun 04 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
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 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
YII实现分页的方法
2014/07/09 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python 实现敏感词过滤的方法
2019/01/21 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
使用Python pip怎么升级pip
2020/08/11 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
数学专业推荐信范文
2013/11/21 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
个人党性锻炼总结
2015/03/05 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP