zoukankan      html  css  js  c++  java
  • JS 盒子模型

    盒子模型

    内容的宽度和高度:
    我们设置的width/ height这两个样式就是内容的高和宽, 如果没有设置height, 容器的高度会根据里面内容自己进行适应, 这样获取的值就是真实的内容; 如果设置固定的高度了, 不管内容是多了还是少了, 其实我们内容的高度指的都是设定的那个值;

    真实内容的宽度和高度:
    这个代指的是实际内容的宽高(和我们设置的height没有必然的联系), 例如: 我设置高度为200px, 如果内容溢出, 那么真实内容的高度还要加上我们溢出的高度

    client

    获取当前元素可视区域的宽度

    clientWidth / clientHeight:
    内容的宽度/高度 + 左右/上下填充(和内容溢出没有关系)

    clientLeft: 左边框的宽度, clientTop:
    上边框的高度( border[Left/Top]Width )

    offset

    offsetWidth/ offsetHeight:
    在client的基础上加上border

    offsetTop/ offsetLeft:
    获取当前盒子距离其父级参照物的偏移量(上偏移/ 左偏移) 当前盒子的外边框开始 ~ 父级参照物的内边框

    offsetParent:
    当前盒子的父级参照物
    "参照物":
    同一个平面中, 元素的父级参照物和结构没有必然联系, 默认他们的父级参照物都是BODY(当前平面最外层的盒子)BODY的父级参照物是NULL

    scroll

    scrollWidth/ scrollHeight:
    容器中的内容没有溢出时: 和我们的clientWidth/ ClientHeight的值一样.
    如果容器中的内容有溢出时: 我们获取的结果是如下规则:
    scrollWidth:
    真实内容的宽度(包含溢出) + 左填充
    scrollHeight:
    真实内容的宽度(包含移除) + 上填充

    获取的值都是约等于值
    因为: 同一个浏览器, 我们是否设置overflow="hidden"对于最终的结果是有影响的, 在不同的浏览器中我们获取到的结果也是不相同的.

    scrollLeft/ scrolTop:
    滚动条卷去的宽度/ 高度

    JS盒子模型

    我们通过这13个属性值获取的结果永远不可能出现小数, 都是整数; 浏览器在获取结果的时候, 在原来真实结果的基础上进行四舍五入.

    关于操作浏览器本身盒子模型

    scrollWidth/ scrollHeight 是当前页面的真实宽度/ 高度, (所有屏加起来的宽度和高度 但是是一个越等于的值)
    我们不管那些属性, 也不管是什么浏览器, 也不管是获取还是设置, 想要都兼容的话, 需要写两套
    document.documentElement[attr] || document.body[attr];
    必须document.documentElement在前
    设置, 也要写两套
    document.documentElement.scrollTop = 0;
    document.body.scrollTop = 0;

    兼容写法
    function win(attr, value){
        if(typeof value === "undefined"){
            return documentElement[attr] || document.body[attr];
        }
        document.documentElement[attr] = value
        document.body[attr] = value
    }
    
  • 相关阅读:
    【剑指offer】判断二叉树是否为平衡二叉树
    【剑指offer】数字在排序数组中出现的次数
    八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
    约瑟夫环问题-循环链表VS数组
    告别2014,你是否感谢这一年的自己?
    浅谈WEB页面提速(前端向)
    HTML5- Canvas入门(七)
    浅谈WEB安全性(前端向)
    是时候搁置Grunt,耍一耍gulp了
    前端神器avalonJS入门(二)
  • 原文地址:https://www.cnblogs.com/xiaoxu-xmy/p/13655922.html
Copyright © 2011-2022 走看看