gpt4 book ai didi

javascript - 计算滚动条的宽度并在 calc() css 中使用结果

转载 作者:行者123 更新时间:2023-11-30 11:51:16 24 4
gpt4 key购买 nike

我想计算滚动条的宽度,以便在 CSS calc() 声明中使用结果。

目前,我假设滚动条的宽度总是17px,像这样:

body { 
width:calc(100vw - 17px);
}
.container {
max-width:calc(100vw - 17px);
}

问题是当您选择不同的浏览器缩放百分比时,滚动条的宽度会发生变化。所以我想使用计算结果来做一些事情:

body { 
width:calc(100vw - CALCULATED SCROLL-BAR WIDTH);
}
.container {
max-width:calc(100vw - CALCULATED SCROLL-BAR WIDTH);
}

编辑: 我现在已经借助 question 解决了这个问题

用于计算滚动条宽度的 JavaScript(不过,我发现您需要一个时间间隔才能使其自动更新):

function getScrollbarWidth() {
var outer = document.createElement("div");
outer.style.visibility = "hidden";
outer.style.width = "100px";
outer.style.msOverflowStyle = "scrollbar"; // needed for WinJS apps

document.body.appendChild(outer);

var widthNoScroll = outer.offsetWidth;
// force scrollbars
outer.style.overflow = "scroll";

// add innerdiv
var inner = document.createElement("div");
inner.style.width = "100%";
outer.appendChild(inner);

var widthWithScroll = inner.offsetWidth;

// remove divs
outer.parentNode.removeChild(outer);

return widthNoScroll - widthWithScroll;
}

我的代码(用于将函数的结果嵌入到 CSS calc() 声明中)。

$('body').css({ 
'width':'calc(100vw - ' + getScrollbarWidth() + 'px)'
});

$('.container').css({
'max-width':'calc(100vw - ' + getScrollbarWidth() + 'px)'
});

最佳答案

实际上,您可以仅使用 css 和自定义属性(完全不需要 javascript)来获取滚动条宽度:

body {
--scrollbar-width: calc(100vw - 100%);
}

然后你可以像这样在子元素中使用这个变量:

.container { 
max-width: calc(100vw - var(--scrollbar-width));
}

这是因为 100vw 始终是 View 的内部宽度,但是 body 的 100% 不包括滚动条。

关于javascript - 计算滚动条的宽度并在 calc() css 中使用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39392423/

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