JavaScript元素位置与距离:client&scroll&offset&MouseEvent&滚动条宽度计算

client:

clientWidth/clientHeight:

  • 元素内部的宽度/高度,仅包含包含content和padding,不包含滚动条
  • clientWidth = content width + padding - scrollbar Width
  • clientHeight = content Height + padding - scrollbar Height

clientLeft/clientTop:

元素的左border宽度,当文字方向为右至左且出现滚动条时(direction: rtl),需要加上滚动条宽度

clientLeft = border Width + scrollbar Width(对于行内元素这个值为0)

clientTop = borderTop

计算浏览器或元素滚动条宽度:

elem.offsetWidth - elem.borderLeftWidth - elem.borderRightWidth - elem.clientWidth

export default class myUtils {
     // 计算元素滚动条宽度
     static getScrollWidth(elemOrSelect) {
        if (!elemOrSelect) return;
        if (elemOrSelect.constructor === String) elemOrSelect = document.querySelector(elemOrSelect);
        //参数为html或body时获取浏览器默认滚动条宽度
        if (/BODY|HTML/.test(elemOrSelect.nodeName)) {
            elemOrSelect.style.padding = 0;
            elemOrSelect.style.margin = 0;
            return window.innerWidth - elemOrSelect.clientWidth;
        }
        //兼容
        var style = elemOrSelect.currentStyle ? elemOrSelect.currentStyle : getComputedStyle(elemOrSelect).style;
        //获取某个元素滚动条宽度
        var width =
            elemOrSelect.offsetWidth
            - Math.ceil(parseFloat(style.borderLeftWidth))
            - Math.ceil(parseFloat(style.borderRightWidth))
            - elemOrSelect.clientWidth;
        return width;
    }
}

offsetWidth/offsetHeight/offsetLeft/offsetTop:

offsetWidth/offsetHeight: content + padding + border(包含滚动条)

offsetLeft:

offsetTop:

一张经典的图片:

原文地址:https://www.cnblogs.com/ltfxy/p/12275352.html

时间: 2024-08-10 11:21:21

JavaScript元素位置与距离:client&scroll&offset&MouseEvent&滚动条宽度计算的相关文章

Client Scroll Offset

clientWidth/clientHeight 是我们设置的宽和高加上内边距(没有边框) clientLeft/clientTop 就是我们设置的边框值 offsetWidth/offsetHeight 是我们设置的宽和高加上边框加上内边距 offsetLeft/offsetTop 是元素外边距离父级的内边距的距离 scrollWidth/scrollHeight 就是我们设置的宽高加上内边距(内容没有溢出的前提下)如果超出了范围就按内容而定 scrollTop/scrollLeft   滚动

js 元素offset,client , scroll 三大系列总结

1,element.offsetWidth : 包括 padding 和 边框 2,element.clientWidth : 包括 padding ,不包含边框 , 内容超出会溢出盒子的时候,就用scrollWidth 3,element.scrollWidth : 不包含边框 主要用法: 1,offset 系列 经常用于获得元素位置 offsetLeft  offsetTop 2,client经常用于获取元素大小, clientWidth , clientHeight 3,scroll经常用

JavaScript中的 offset, client,scroll

在js 中我们要用到的 offset, client, scroll 在这我把自己理解的给大家分享一下. offset div.offsetTop 指div距离上方或上层控件的距离,单位像素 div.offsetLeft 指div距离左侧或上层控件的距离,单位像素 div.offsetWidth 指div 控件本身的宽度,单位像素 div.offsetHeight 指div 控件本身的高度,单位像素 混淆点 clientWidth 指对象看到的宽度,不包含border scrollWidth 是

JavaScript获取DOM元素位置和尺寸大小

在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽略的一部分,要想写出预想效果的JavaScript代码,我们需要了解一些基本知识. 基础概念 为了方便理解,我们需要了解几个基础概念,每个HTML元素都有下列属性 offsetWidth clientWidth scrollWidth offsetHeight clientHeight scrollHeight offsetLeft clientL

js,jquery 获取滚动条高度和位置, 元素距顶部距离

一,获取滚动条高度和位置 jQuery 获取览器显示区域的高度: $(window).height();  获取浏览器显示区域的宽度:$(window).width(); 获取页面的文档高度:$(document).height(); 获取页面的文档宽度:$(document).width(); 获取滚动条到顶部的垂直高度:$(document).scrollTop()或$(window).scrollTop() 获取滚动条到左边的垂直宽度:$(document).scrollLeft()或$(

offset client scroll pageXOffset属性,mouseover与mouseenter事件区别

offset 概述 使用 offset 系列属性可以动态得到该元素的位置(偏移),大小等 offset系列属性 说明(只读属性) ele.offsetTop 返回元素带有定位的父元素上方的偏移,父元素没有定位以body为准 ele.offsetLeft 返回元素带有定位的父元素左边的偏移,父元素没有定位以body为准 ele.offsetWidth 返回自身包括padding,边框,内容去的宽度 ele.offsetHeight 返回自身包括padding,边框,内容去的高度 ele.offse

client 、 offset 、 scroll

HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 scrollWidth:获取对象的滚动宽度 offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 offsetLeft:

4.client、offset、scroll系列

client.offset.scroll系列 他们的作用主要与计算盒模型.盒子的偏移量和滚动有关 clientTop 内容区域到边框顶部的距离 ,说白了,就是边框的高度 clientLeft 内容区域到边框左部的距离,说白了就是边框的乱度 clientWidth 内容区域+左右padding 可视宽度 clientHeight 内容区域+ 上下padding 可视高度 client演示 <!DOCTYPE html> <html> <head> <meta cha

JavaScript获取DOM元素位置和尺寸

每一个HTML元素都有下列属性: offsetWidth clientWidth scrollWidth offsetHeight clientHeight scrollHeight offsetLeft clientLeft scrollLeft offsetTop clientTop scrollTop 首先,要理解HTML元素的实际内容可能会比分配给这个元素容纳内容的盒子要大,比如说一段很长的文字,把它放在了一个固定长宽的盒子里面,因此可能会出现滚动条. 1.clientHeight和cl