gpt4 book ai didi

jquery - 父级获取滚动条后获取元素的宽度

转载 作者:行者123 更新时间:2023-11-28 13:26:43 25 4
gpt4 key购买 nike

FIDDLE

所以,我一直在尝试找到一种好的 jQuery 方法来查找客户端的滚动条宽度。我以为我已经在我的 fiddle 中弄清楚了,但显然添加滚动条不会改变 child 的宽度。即使在开发工具(chrome、FF)中宽度已经减小。

function scrollbarWidth() {
var div = $('<div class="outer"><div class="inner"></div>');
$('body').append(div);

var w1 = $(".inner").width();
$(".test-text span:first").text(w1);
console.log(w1);

$(".test-div").css('overflow-y', 'scroll');
var w2 = $(".inner").width();
$(".test-text span:last").text(w2);

console.log(w2);
}

scrollbarWidth();​

使用 innerWidth 没有区别。

这怎么可能,解决方案是什么?

最佳答案

这是一个获取滚动条宽度的函数:

function getScrollBarWidth() {
var inner = $('<p />', {style:'width:100%;height:200px;'}),
outer = $('<div />', {style:'position:absolute;top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden;'});

outer.append(inner).appendTo($('body'));

var w1 = inner.get(0).offsetWidth;
outer.css('overflow', 'scroll');
var w2 = inner.get(0).offsetWidth;
if (w1 == w2) w2 = outer.get(0).clientWidth;

outer.remove();
return (w1 - w2);
}

FIDDLE

get() 函数获取 native javascript DOM 元素,这是必需的,因为 offsetWidth 是 native javascript 方法,不适用于 jQuery“元素”。它也可以写成:

var w1 = inner[0].offsetWidth;

关于jquery - 父级获取滚动条后获取元素的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082107/

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