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

    说到盒子模型,你第一时间会想到css盒子模型,css中的盒子模型包括(内容区+内边距+边框)。那在js中怎么去获取这些属性值呢?下面一起来学习js中的盒子模型。

    css样式

    body {
        margin: 0;
        padding: 0;
    }
    
    .box {
        position: absolute;
        margin: 10px;
        padding: 10px;
        width: 100px;
        height: 100px;
        border: 10px solid #000;
        line-height: 25px;
    }

    html结构

    <div class="box" id="box">
        前端学习之路之JS盒子模型 前端学习之路之JS盒子模型 前端学习之路之JS盒子模型 前端学习之路之JS盒子模型
    </div>

    1.client系列

    clientWidth/clientHeight  如果不设置容器的宽高,用内边距撑开,获取的是内容的实际宽高加上内边距。如果设置宽高,则高度就是设置的宽高加上内边距。

    clientLeft/clientTop  边框的宽度

    1 var box=document.getElementById("box");
    2 console.log(box.clientWidth); //120
    3 console.log(box.clientHeight); //120
    4 console.log(box.clientLeft); //10
    5 console.log(box.clientTop); //10

    2.offset系列

    offsetWidth/offsetHeight (clientWidth+clientLeft*2),(clientHeight+clientTop*2)

    offsetLeft/offsetTop 相对父级盒子的外边距

    offsetParent 盒子的父级盒子

    1 console.log(box.offsetWidth); //140
    2 console.log(box.offsetHeight); //140
    3 console.log(box.offsetLeft); //10
    4 console.log(box.offsetTop); //10
    5 console.log(box.offsetParent); //body

    3.scroll系列

    scrollWidth/scrollHeight 如果内容没有溢出,值和clientWidth/clientHeight一样。如果内容溢出:

    scrollWidth:实际溢出内容宽度+左填充

    scrollHeight:实际溢出内容高度+上填充

    scrollTop: 滚动条卷去的高度

    scrollLeft: 滚动条卷去的宽度

    1 console.log(box.scrollWidth); //120
    2 console.log(box.scrollHeight); //120
    3 console.log(box.scrollTop);  //0
    4 console.log(box.scrollLeft); //0

    获取,设置浏览器盒子模型信息兼容写法

    document.documentElement.clientWidth||document.body.clientWidth

    封装一个函数获取设置盒子模型

    1 function win(attr, value) {
    2     if(typeof value === "undefined") {
    3         return document.documentElement[attr] || document.body[attr];
    4     }
    5     document.documentElement[attr] = value;
    6     document.body[attr] = value;
    7 }

    这就是js中的盒子模型,在开发中常常会用到,而且这几个属性很容易记混淆,要经常练习,才能熟练掌握,明天就是中秋节了,在这里预祝大家中秋节快乐!!!

    <div class="box" id="box">前端学习之路之JS盒子模型 前端学习之路之JS盒子模型 前端学习之路之JS盒子模型 前端学习之路之JS盒子模型</div>

    前端发展速度之快,只有不断的学习积累,才能紧跟时代的步伐。
  • 相关阅读:
    webstorm创建和搭建vue项目
    win10企业版激活方法
    Jquery使用规范(一)
    Json序列化循环引用的问题
    后台调用存储过程
    将金额人民币转化为大写 C#
    谷歌分辨率扩展程序的添加
    MVC 删除文件
    MVC C# 调用存储过程
    XML 转换 lits<>
  • 原文地址:https://www.cnblogs.com/zt123123/p/7624321.html
Copyright © 2011-2022 走看看