zoukankan      html  css  js  c++  java
  • offsetWidth clientWidth scrollWidth 的区别

    了解 offsetWidth clientWidth scrollWidth 的区别

    最近需要清除区分开元素的width,height及相应的坐标等,当前这篇用来区分offsetWidth clientWidth scrollWidth的区别

    各自的概念

    假设有一个元素,width有以下几个进行组合

    • content
    • padding-left
    • padding-right
    • scrollbar 垂直的滚动条宽度(假设有,没有便为0)
    • border-left
    • border-right

    clientWidth = content + padding-left + padding-right

    offsetWidth = content + padding-left + padding-right + border-left + border-right + scrollbar

    scrollWidth = content + padding-left + padding-right + scrollbar + border-left + border-right +滚动进入不可见的内容

    示例

    在上述中,我们可以计算出 scrollbar

    const scrollbar = el.offsetWidth - (border-left + border-right) - clientWidth
    

    示意图

    html

    <section class="client-xyz">
        <p>我是很长很长的内容我是很长很长的内容我是很长很长的内容我是很长很长的内容我是很长很长的内容我是很长很长的内容</p>
    </section>
    

    css

    p {
        margin: 20px;
        padding: 20px;
        /* border: 30px solid #333; */
        /* border: 10vw solid #333; */
        /* border: calc(100px - 70px) solid #333; */
        border: 30px solid #333;
        word-break: keep-all;
        overflow-y: scroll;
    }
    

    js

    const Box = document.querySelector('p')
    
    let border = 0
    // 获取元素的style信息
    const style = window.getComputedStyle(Box, null)
    // border不管设置的单位如何,最终都会转为 px 
    border = parseFloat(style['borderRightWidth'].replace('px', '')) + parseFloat(style['borderLeftWidth'].replace('px', ''))
    
    const scollbar = Box.offsetWidth - Box.clientWidth - border
    

    总结

  • 相关阅读:
    FastReport报表控件使用技巧总结
    WinAPI: ShellExecute
    Delphi Excel 操作大全
    DATEADD和DATEDIFF函数、其他日期处理方法 、已打开的端口、FORMAT函数
    javascript-时间戳
    js-jquery-插件开发(二)【最终插件是最后一个,中间是过程】
    js-jquery-插件开发(一)
    Java-idea-eclipse-快捷键【mac,win】
    Java-idea-生成for循环
    Java-idea-设置类头注释和方法注释
  • 原文地址:https://www.cnblogs.com/sinosaurus/p/11080084.html
Copyright © 2011-2022 走看看