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 setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
Jun 11 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
完美实现js选项卡切换效果(一)
Mar 08 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
vue-next/runtime-core 源码阅读指南详解
Oct 25 Javascript
vue实现购物车案例
May 30 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
Aug 11 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
Webpack3+React16代码分割的实现
Mar 03 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令牌 Token改进版
2008/07/18 PHP
PHP生成HTML静态页面实例代码
2008/08/31 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js判断屏幕分辨率的代码
2013/07/16 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
详解Vue之事件处理
2020/07/10 Javascript
Python 解析XML文件
2009/04/15 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python 回溯法模板详解
2020/02/26 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
如何编写python的daemon程序
2021/01/07 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
生产现场工艺工程师岗位职责
2013/11/28 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
2014年度个人总结范文
2015/03/09 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
python脚本框架webpy模板控制结构
2021/11/20 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python
python开发人人对战的五子棋小游戏
2022/05/02 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers