JavaScript基础二(offset \ scroll \ client 及 event)

JavaScript基础二(offset \ scroll \ client 及 event)_第1张图片


1,JS中方便的获取元素尺寸的办法就是offset家族

    offsetWidth  、 offsetHeight得到对象的宽度和高度(自己的,与他人无关)

    offsetWidth = width+padding+border

     offsetLeft、offsetTop 返回距离上级盒子(offsetParent-带有定位)左边/上边的位置,如果父级都没有定位则以body为准

    offsetLeft、offsetTop 从父亲的padding 开始算,父亲的border 不算

    offsetParent:返回改对象的父级(带有定位)

        如果当前元素的父级元素没有进行CSS定位  (position为absolute或relative,fixed),  offsetParent为body。

        如果当前元素的父级元素中有CSS定位  (position为absolute或relative,fixed),  offsetParent取最近的那个父级元素。


offsetTop和style.top 区别:

    offsetTop返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。 

    offsetTop只读,而 style.top 可读写。

    如果没有给HTML 元素指定过 top 样式,则   style.top返回的是空字符串。


2,Math函数

•Math.ceil()      向上取整

•Math.floor()        向下取整

•Math.round();  四舍五入


3,Scroll家族

    scrollWidth/scrollHeight 内容的宽高(不包含border,如果有内容超出了显示内容的高度)

    有padding 的情况: scrollWidth =width + padding-left  + padding-right

    内容高度>父盒子高度 :scrollHeight   = height + padding-top      

    内容高度<父盒子高度 :scrollHeight   = height + padding-top + padding-bottom     

• IE67可以比盒子小。IE8+火狐谷歌不能比盒子小


  scrollLeft/scrollTop被卷去的左侧和头部(浏览器无法显示的左/头部)  监听事件 :element.onScroll=function(){}

 有兼容性问题

① 未声明 DTD 时(谷歌只认识他)document.body.scrollTop

② 已经声明DTD 时(IE678只认识他)document.documentElement.scrollTop

③ 火狐/谷歌/ie9+以上支持的  window.pageYOffset

兼容性写法:

(document.title        document.head          document.body            document.documentElement --- 文档的html标签)

var scrollTop= window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

JavaScript基础二(offset \ scroll \ client 及 event)_第2张图片


4,判断是否声明DTD

document.compatMode=== "BackCompat"

•BackCompat  未声明

•CSS1Compat  已经声明(IE678默认识别CSS1Compat,无论有没有dtd)

•注意大小写


5,事件对象event

在触发dom 事件的时候会产生一个事件对象event,该对象包含所有与事件的相关信息。

普通浏览器支持 event(带参,任意参数)

ie 678 支持 window.event(无参,内置)

总结:他是一个事件中的内置对象。内部装了很多关于鼠标和事件本身的信息

兼容性写法,btn.onclick=function(event){  var event = event || window.event;  //(主要用这种)   }

JavaScript基础二(offset \ scroll \ client 及 event)_第3张图片

screenX、pageX和clientX的区别

JavaScript基础二(offset \ scroll \ client 及 event)_第4张图片

PageY/pageX: 鼠标位于整个网页页面的顶部和左侧部分的距离。(页面,(IE67)不支持)

ScreenY/screenX: 鼠标位于屏幕的上方和左侧的距离。(屏幕)

ClientX/clientY: 鼠标位于浏览器的左侧和顶部的距离。(浏览器大小和位置)


兼容写法:在页面位置就等于 = 看得见的+看不见的

pageY/pageX=event.clientY/clientX+scroll().top/scroll().left


JavaScript基础二(offset \ scroll \ client 及 event)_第5张图片


6,client可视区域

clientWidth  获取网页可视区域宽度(两种用法) clientWidth: width + padding 不包含border、margin

clientHeight  获取网页可视区域高度(两种用法)

调用者不同,意义不同:

          盒子调用:指盒子本身。

          body\html浏览器调用:可视区域大小。

clientX       鼠标距离可视区域左侧距离(event调用)

clientY       鼠标距离可视区域上侧距离(event调用)


-------------------------------------------------------三大家族区别----------------------------------------------------

宽高:

clientWidth  = width + padding

clientHeight = height + padding

offsetWidth  =width  + padding +border

offsetHeight =height + padding + border

scrollWidth   =内容宽度(不包含border,包含padding)

scrollHeight  =内容高度(不包含border,内容高包含上padding,容器高包含上padding)

上下:

offsetTop/offsetLeft :

  调用者:任意元素。(盒子为主)

  作用:距离父系盒子中带有定位的距离。

scrollTop/scrollLeft:

  调用者:document.body.scrollTop/.....(window)

  作用:浏览器无法显示的部分(被卷去的部分)。

clientY/clientX:

  调用者:event.clientX(event)

  作用:鼠标距离浏览器可视区域的距离(左、上)。

    

JavaScript基础二(offset \ scroll \ client 及 event)_第6张图片

client家族之检测浏览器的宽/高度

ie9及其以上的版本  window.innerWidth/Height 

标准模式(有DTD)(“CSS1Compat”)

        document.documentElement.clientWidth

        document.documentElement.clientHeight

怪异模式(没有DTD)

        document.body.clientWidth

        document.body.clientHeight


7,Json

var myjson={k1:v1,k2:v2,k3:v3}

获取方式:v1 == myjson.k1  v2 ==myjson.k2


8,清除选中的内容

window.getSelection? window.getSelection().removeAllRanges() :document.selection.empty();

 IE9、Firefox、Safari、Chrome和Opera支持:window.getSelection()

IE9以下支持:document.selection

JavaScript基础二(offset \ scroll \ client 及 event)_第7张图片

你可能感兴趣的:(JavaScript基础二(offset \ scroll \ client 及 event))