zoukankan      html  css  js  c++  java
  • js进阶之js三大家族:offset,scroll,client

    offset与style的区别
    offset可以得到任意样式表中的样式值
    offset系列的数值没有单位
    offsetWidth包含padding+border+width
    offsetwidth等属性是只读属性,只能获取,不能赋值
    所以,我们想要获取元素大小的位置,用offset更合适
    style
    style只能获取到行内样式表
    stylewidth获得的是带有单位的字符串
    style.width不包括padding和border的值
    style.width是可读属性,可以获取也可以赋值

    点语法与offset获取元素的区别
    点语法特点:1.可以获取行内标准属性(主要)
    2.可以获取语法动态添加的属性
    3.无法获取行内自定义属性
    4.无法获取行内属性
    offset获取特点:1.可以获取行内外属性
    2.获取属性值为number类型,而且不带单位
    3.获取到的是页面显示的元素的真实宽高(width/height+padding+border)

    三大家族区别(三大家族总结)
    1.2.1 Width和height
    clientWidth = width + padding
    clientHeight = height + padding
    offsetWidth = width + padding + border
    offsetHeight = height + padding + border
    scrollWidth = 内容宽度(不包含border)width + padding
    scrollHeight = 内容高度(不包含border)
    1.2.2 top和left
    offsetTop/offsetLeft:
    调用者:任意元素。(盒子为主)
    作用:距离父系盒子中带有定位的距离。
    scrollTop/scrollLeft:(盒子也可以调用,必须有滚动条)
    调用者:document.body.scrollTop/.....(window)
    作用:浏览器无法显示的部分(被卷去的部分)。
    clientY/clientX:(clientTop/clientLeft 值的是border)
    调用者:event.clientX(event)
    作用:鼠标距离浏览器可视区域的距离(左、上)。
    // width和height
    // offset带border
    // scroll不带border,内容的宽高
    // client不带border

    // top和left
    // offset距离父系盒子带有定位的盒子之间的距离
    // scroll被卷去的部分的距离
    // clientborder的宽高

    //clientX和clientY
    // event调用,鼠标距离浏览器的可视区域的距离
    client家族特殊用法之:检浏览器宽/高度(可视区域)


    Onresize事件
    只要浏览器的大小改变,哪怕1像素,都会触动这个事件。
    事件总结
    区分:
    1.window.onscroll 屏幕滑动
    2.window.onresize 浏览器大小变化
    3.window.onload 页面加载完毕
    4.div.onmousemove 鼠标在盒子上移动
    (注意:不是盒子移动!!!)
    5.onmouseup/onmousedown == onclick获得屏幕宽高
    window.screen.width
    分辨率是屏幕图像的精密度,指显示器所能显示的像素有多少。
    我们的电脑一般:横向1280个像素点,纵向960个像素点。
    我们看电影的时候是满屏和半屏的,就是这。

    offset家族:获取元素真实的宽高和位置
    console.log(box.offsetWidth);
    console.log(box.offsetHeight);
    scroll家族: scrollWidth,scrollHeight,scrollLeft,scrollTop
    作用是:scrollWidth,scrollHeight获取元素内容的宽高(IE8)
    scrollLeft,scrollTop获取元素内容真实的位置
    console.log(box.scrollWidth);
    console.log(box.scrollHeight);
    console.log(box.scrollLeft);
    console.log(box.scrollTop);
    滚动条滚动事件:onscroll

    补充点

    offset 指偏移 包括这个元素在文档中占用的所有显示宽度,包括滚动条、padding、border,不包括overflow隐藏的部分

    offsetParent属性返回一个对象的引用,这个对象是距离调用offsetParent的父级元素中最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素的引用。

    如果当前元素的父级元素中没有进行CSS定位(position为absolute/relative),offsetParent为body
    如果当前元素的父级元素中有CSS定位(position为absolute/relative),offsetParent取父级中最近的元素
    obj.offsetWidth 指 obj 控件自身的绝对宽度,不包括因 overflow 而未显示的部分,也就是其实际占据的宽度,整型,单位:像素。
    offsetWidth = border-width*2+padding-left+width+padding-right
    obj.offsetHeight 指 obj 控件自身的绝对高度,不包括因 overflow 而未显示的部分,也就是其实际占据的高度
    offsetHeight = border-width*2+padding-top+height+padding-bottom
    obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位:像素。
    offsetTop= offsetParent的padding-top + 中间元素的offsetHeight + 当前元素的margin-top
    obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位:像素。
    offsetLeft= offsetParent的padding-left + 中间元素的offsetWidth + 当前元素的margin-left

    scroll指滚动,包括这个元素没显示出来的实际宽度,包括padding,不包括滚动条、border

    scrollHeight 获取对象的滚动高度,对象的实际高度;
    scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
    scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
    scrollWidth 获取对象的滚动宽度


    client指元素本身的可视内容,不包括overflow被折叠起来的部分,不包括滚动条、border,包括padding

    clientWidth 对象可见的宽度,不包括滚动条等边线,会随窗口的显示大小改变
    clientHeight 对象可见的高度
    clientTop、clientLeft 这两个返回的是元素周围边框的厚度,一般它的值就是0。因为滚动条不会出现在顶部或者左侧

  • 相关阅读:
    C
    B
    A
    F
    C
    H
    Fang Fang hdu 5455
    Fire Net hdu1045(DFS)
    Sudoku HDU 5547(DFS)
    UVA 10200 Prime Time (打表)
  • 原文地址:https://www.cnblogs.com/zycs/p/12655987.html
Copyright © 2011-2022 走看看