JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • js中的scroll和offset 使用比较的实例与分析

    1.offsetTop     :当前对象到其上级层顶部的距离.不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性. 2.offsetLeft    :当前对象到其上级层左边的距离.不能对其进行赋值.设置对象到页面左部的距离请用style.left属性. 3.offsetWidth   :当前对象的宽度.与style.width属性的区别在于:如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,style.width都返回此百分比,而offsetWidth则返回在不同页面中

  • js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth   (包括边线的宽);网页可见区域高: document.body.offsetHeight  (包括边线的宽);网页正文全文宽: document.body.scrollWidth;网页正文全文高: document.body.scrollHeight;网页被卷去的高: documen

  • javascript中offset、client、scroll的属性总结

    HTML元素有几个offset.client.scroll开头的属性,总是让人摸不着头脑.在书中看到记下来,分享给需要的小伙伴.主要是以下几个属性: 第一组:offsetWidth,offsetHeight,offsetLeft,offsetTop,offsetParent   第二组:clientWidth,clientHeight,clientLeft,clientTop 第三组:scrollWidth,scrollHeight,scrollLeft,scrollTop 详细定义如下: 1.

  • JS的Event事件对象使用方法

    fasdf function bb(e){ alert(e); } var container = document.getElementById("contentq"); container.onclick=function(e){ if(document.all){//IE var a=window.event; alert(a.type); }else{ alert(e.type); } } [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 事件对象获取统一的方法:(来

  • javascript事件冒泡详解和捕获、阻止方法

    一.事件的发生顺序 这个问题的起源非常简单,假设你在一个元素中又嵌套了另一个元素 复制代码 代码如下: ----------------------------------- | element1                        | |   -------------------------     | |   |element2               |     | |   -------------------------     | |                 

  • Js获取事件对象代码

    一般做法: 复制代码 代码如下: <input type="button" id="test" value="点我测试" /> <script type="text/javascript"> var testBtn = document.getElementById('test'); testBtn.onclick = testFun; function testFun(e) { var evt = e

  • javascript scrollLeft,scrollWidth,clientWidth,offsetWidth 完全详解

    scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 scrollWidth:获取对象的滚动宽度 offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 offsetTop:获取对象相

  • javascript的offset、client、scroll使用方法详解

     offsetTop 指元素距离上方或上层控件的位置,整型,单位像素. offsetLeft 指元素距离左方或上层控件的位置,整型,单位像素. offsetWidth 指元素控件自身的宽度,整型,单位像素. offsetHeight 指元素控件自身的高度,整型,单位像素. 网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线的宽) 网

  • js中获取事件对象的方法小结

    复制代码 代码如下: var evt = window.event || arguments[0]; 下面分三种添加事件的方式讨论,你也许会看到以前没有看到过的获取方式. 1,第一种添加事件的方式,直接在html的属性中写JS代码 复制代码 代码如下: <div onclick="alert(4);">Div1 Element</div> 大概这是上世纪90年代的写法,那时候直接把js代码写在网页中很普遍,也许那时候的js并不太重要,只是用来做做验证或一些花哨的

  • 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)

    cancelBubble在IE下有效 stopPropagation在Firefox下有效 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml

  • js之事件冒泡和事件捕获详细介绍

    (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozilla 1.0: div -> body -> html -> document -> window (2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开

随机推荐