• DOM盒模型和位置 client offset scroll 和滚动的关系


    概览

    在dom里面有几个描述盒子位置信息的值,

    • pading border margin
    • width height
    • client
      • clientWidth 不要border
      • clientHeight 不要border
    • offset
      • offsetTop
      • offsetLeft
      • offsetWidth  要border
      • offsetHeight  要border
    • scroll
      • scrollTop
      • scrollHeight
      • scrollLeft
      • scrollWidth

    vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

    盒模型

    生产环境一般使用 box-sizing: border-box,
    效果:
        width == content.width + pading + border
        height == content.height + pading + border

    .antd-pro-pages-test-dom-index-box {
        box-sizing: border-box;
         100px;
        height: 100px;
        padding: 5px;
        border-color: grey;
        border-style: solid;
        border- 5px;
        margin: 5px;
    }

    滚动

    <div class="container1" style="overflow: auto; height: 200px;  200px">
      <ul class="container2" style="position: relative">
         <li>1</li>
         <li>1</li>
         <li>1</li>
         <li>1</li>
      </ul>
    </div>
    // 把item 放在container的可视区域范围内
    function scrollToDom(container, item){
      // 当前元素 上边框上边 到 基线 的距离
        const itemTop = item.offsetTop;
      // 当前元素 下边框下边 到 基线 的距离
      const itemBottom = itemTop + item.offsetHeight;
      
      // container 上边框下边 距离 基线距离
      const containerTop = container.scrollTop;
      // container 下边框上边 距离 基线距离
      const containerBottom = containerTop + container.clientHeight;
      
      if(itemTop < containerTop){
         container.scrollTop = itemTop;
       }
      
      if(itemBottom > containerBottom){
         container.scrollTop = itemBottom - container.clientHeight;
      }
    }

    此种结构特点
    如果垂直滚动条已经出来了

    • .container1 的上下 padding 区域也会有内容

    向上滑动

    • 向上滑动, 实质是 .container2 向上滑动了
    • 因为.container2.position == relative  li.offsetParent  也是.container2 , 所以.container1.scrollTop 和 li.offsetTop 基准线都是.container2的上边框, 具有可比性
  • 相关阅读:
    java spring-mvc + maven + hibernate + mysql 注释
    c# log4net
    c# winform richtextbox 锁屏和滚屏
    socket 客户端
    c# winform插件
    c# 注册全局热键
    c# 请求api获得json数据
    java 把一个文件夹里图片复制到另一个文件夹里
    c# UpdateLayeredWindow异形窗口
    【哈希】身份证问题
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/13761210.html
Copyright © 2020-2023  润新知