gpt4 book ai didi

javascript - 计算浏览器滚动条的大小

转载 作者:行者123 更新时间:2023-12-03 06:52:04 25 4
gpt4 key购买 nike

还有一个问题询问如何计算浏览器的滚动条大小。

我的问题是关于 npm 包 scrollbar-wdith 中实现的解决方案。有人可以解释一下为什么它有效吗?

作为引用,这里是相关代码(.coffee):

scrollbarWidth = null

getScrollbarWidth = (recalculate = false) ->
return scrollbarWidth if scrollbarWidth? and not recalculate

return null if document.readyState is 'loading'

div1 = document.createElement 'div'
div2 = document.createElement 'div'

div1.style.width = div2.style.width = div1.style.height = div2.style.height = '100px'
div1.style.overflow = 'scroll'
div2.style.overflow = 'hidden'

document.body.appendChild div1
document.body.appendChild div2

scrollbarWidth = Math.abs div1.scrollHeight - div2.scrollHeight

document.body.removeChild div1
document.body.removeChild div2

scrollbarWidth

最佳答案

这就是我所做的。捕获了代码的核心并对其进行了一些简化。

<html>
<head>
</head>
<body>
</body>
<script>
var scrollbarWidth;

scrollbarWidth = null;

getScrollbarWidth = function(recalculate) {
var div1, div2;
div1 = document.createElement('div');
div2 = document.createElement('div');
div1.id = "div1";
div2.id = "div2";
div1.style.width = div2.style.width = div1.style.height = div2.style.height = '100px';
div1.style.overflow = 'scroll';
div2.style.overflow = 'hidden';
document.body.appendChild(div1);
document.body.appendChild(div2);
scrollbarWidth = Math.abs(div1.scrollHeight - div2.scrollHeight);
alert(scrollbarWidth);
return scrollbarWidth;
};

getScrollbarWidth();

</script>
<html>

这让我可以尝试这些元素。

发生的情况是,他们创建了两个相同的 div,一个带有滚动条,另一个没有滚动条,然后他们查询这两个 div 的scrollHeight属性,这会忽略滚动条(只是元素和填充)..请参阅此处-http://www.w3schools.com/jsref/prop_element_scrollheight.asp

The scrollHeight property returns the entire height of an element in pixels, including padding, but not the border, scrollbar or margin.

scrollHeights 的差异产生所需的滚动条高度(因为其中一个元素有滚动条,而另一个元素没有)

事实证明,div2的scrollHeight = 100 px (=height),而div1的scrollHeight仅为83px,因此chrome的滚动条高度为17px

请告诉我这对您是否有意义

关于javascript - 计算浏览器滚动条的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37449993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com