关于元素,BOM中各种数值的总结

  最近学了DOM,BOM,还有鼠标事件,对于这里面的各种什么可视区宽高,获取混杂模式下的滚动条距离,以及鼠标到屏幕,文档,可视区的距离绕来绕去都给弄混乱了,因此专门写一遍文章来总结,理清思路。

  首先,先总结DOM元素身上的各种属性和方法。

规定:从内到外,依次是div1,div2,body。

  • offsetParent :最近的有定位属性的节点,如果祖先节点没有定位,默认是body,假设div1 相对于div2定位,那么div1.offsetParent就是div2 。如果div1 不是相对于div2定位,那么div1.offsetParent是body。
  • offsetLeft,offsetTop :外边框到有定位父级的内边框的距离,假设div1相对于div2定位,那么div1.offsetTtop值就是红色上外边框到绿色上内边框的距离。offsetLeft值类似。
  • clientWidth,clientHeight :是指元素的宽高,但是并不包括边框,比如这里的div1.clientWidth和div1.clientHeight其实就是不计算边框的div1的宽和高。
  • offsetWidth,offsetHeight ::与clientheight / clientwidth相反,offsetHeight / offsetWIdth 是指包括边框在内的元素的宽高。
  • getBoundingClientRect():这个方法就是对上面的所有属性的总结,这个方法下面包括left ,right,top,bottom,height,width。
div1.offsetLeft=div1.getBoundingClientRect( ).left;
div1.offsetTop=div1.getBoundingClientRect( ).Top;
div1.offsetwidth=div1.getBoundingClientRect( ).width;
div1.offsetHeight=div1.getBoundingClientRect( ).height;
div1.offsetLeft+div1.offsetWidth=div1.getBoundingClientRect( ).right;
div1.offseTop+div1.offsetHeight=div1.getBoundingClientRect( ).bottom;
  • 可视区宽高:document.documentElement.clientWidth / document.body.clientWidth,记得使用的时候清除body身上的padding,margin值,这样两个得出来的值才相等。在考虑低版本的兼容的情况下,使用上面两个方法。不考虑兼容的情况下(比如说移动端),使用Window对象下的Window.innerWidth和Window.innerHeight。

 BOM:

  • 滚动条滚动距离:在Chrome底下,浏览器认为滚动条是在body底下的,所以获取滚动条距离通过document.body.scrollTop 和document.body.scrollLeft。在IE和火狐底下,获取滚动条距离是根据document.documentElement.scrollLeft,如果在火狐底下使用document.body.scrollTop 和document.body.scrollLeft,得出来的值是0。同理,在Chrome下获取document.documentElement.scrollLeft也是0。
  • 为了规范上面的用法,获取滚动条距离pageXOffset,pageYOffset。
  • 设置滚动条的距离scrollTo(x,y)。
  • 设备尺寸的宽高:screen.width,screen.height。

 事件对象:

  • ev.clientX,ev.clientY:是指鼠标位置到可视区左边,上边的距离。
  • ev.offsetX,ev.offsetY:鼠标位置到触发元素左边,上边的距离。
  • ev.pagetX,ev.pagetY:鼠标位置到文档左,上的距离。
  • ev.screenX,ev.screenY:鼠标位置到设备左,上的距离。
时间: 2024-08-19 10:48:44

关于元素,BOM中各种数值的总结的相关文章

需求:将字符串中的数值进行排序

import java.util.Iterator; import java.util.TreeSet; /* 需求:将字符串中的数值进行排序. 例如String str="8 10 15 5 2 7"; ----> "2 5 7 8 10 15" */ public class Demo8 { public static void main(String[] args) { String str="8 10 15 5 2 7"; Stri

第10章 表单元素(中)

第 10章表单元素[中]学习要点:1.type属性总汇2.type属性解析 本章主要探讨 HTML5中表单中 input元素的 type属性,根据不同的值来显示不同的输入框.一.type属性总汇input元素可以用来生成一个供用户输入数据的简单文本框.在默认的情况下,什么样的数据均可以输入.而通过不同的属性值,可以限制输入的内容. 属性名称 说明text 一个单行文本框,默认行为password 隐藏字符的密码框search 搜索框,在某些浏览器键入内容会出现叉标记取消submit.reset.

黑马程序员——java——对一个字符串中的数值进行从小到大的排序

对一个字符串中的数值进行从小到大的排序 例如: String s = "8 96 88 58 44 52 12 13 39 96 6"; public class SortIntToStringDemo { // 对一个字符串中的数值进行从小到大的排序. public static void main(String[] args) { String s = "8 96 88 58 44 52 12 13 39 96 6"; //调用自定义方法将字符串中的数字进行排序

Oracle EBS-SQL (BOM-6):检查物料失效但BOM中未失效的数据.sql

select msi.segment1                   装配件编码 , msi.description                  装配件描述 , msi.item_type                   类型 , msi.planner_code               计划员 , msi1.segment1                  部件编码 , msi1.description                部件描述 , msi1.primary

[ jquery 过滤器 prev([expr]) ] 此方法用于在选择器的基础之上搜索查找取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合

取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合,可以用一个可选的表达式进行筛选.只有紧邻的同辈元素会被匹配到,而不是前面所有的同辈元素 expr 用于筛选前一个同辈元素的表达式 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <

[ jquery 过滤器 siblings(expr) ] 此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选

此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='

QString::arg()//用字符串变量参数依次替代字符串中最小数值

Cpp代码   QString i = "iTest";           // current file's number QString total = "totalTest";       // number of files to process QString fileName = "fileNameTest";    // current file's name QString status = QString("Proc

[ jquery 文档处理 prependTo(content) ] 此方法用于把所有匹配的元素前置到另一个、指定的元素元素集合中

把所有匹配的元素前置到另一个.指定的元素元素集合中 实际上,使用这个方法是颠倒了常规的$(A).prepend(B)的操作,即不是把B前置到A中,而是把A前置到B中 在jQuery 1.3.2中,appendTo, prependTo, insertBefore, insertAfter, 和 replaceAll这个几个方法成为一个破坏性操作,要选择先前选中的元素,需要使用end()方法,参见 appendTo 方法的例二 实例: <html lang='zh-cn'> <head&g

[ jquery 文档处理 appendTo(content) ] 此方法用于把所有匹配的元素追加到另一个指定的元素集合中

把所有匹配的元素追加到另一个指定的元素元素集合中. 实际上,使用这个方法是颠倒了常规的$(A).append(B)的操作,即不是把B追加到A中,而是把A追加到B中. 在jQuery 1.3.2中,appendTo, prependTo, insertBefore, insertAfter, 和 replaceAll这个几个方法成为一个破坏性操作,返回值是所有被追加的内容,而不仅仅是先前所选中的元素.所以,要选择先前选中的元素,需要使用end()方法,参见例二. 实例: <html lang='z