gpt4 book ai didi

jquery - 检测不同类型的滚动条(例如正常/隐藏的 osx)

转载 作者:技术小花猫 更新时间:2023-10-29 11:02:44 24 4
gpt4 key购买 nike

使用响应式布局和大量 CSS 来创建网页时,我遇到了隐藏或显示滚动条以及将布局更改 17 像素的问题。

主要问题是在 OSX 上,滚动条悬停在整个布局上而不影响它,但在 Windows 上的任何浏览器中,例如滚动条是布局的一部分,因此将其向左移动 17px 的宽度。

为了解决这个问题,我开始检测如下浏览器:

if($.browser.chrome) {
// adapt layout by 17px
} else if ($.browser.mozilla) {
// adapt layout by 17px
} else if ($.browser.safari) {
// dont adapt layout by 17px
}

但在阅读了很多关于该主题的帖子后,我意识到许多人建议使用功能检测而不是检测浏览器。那么有没有办法找出浏览器是如何处理滚动条的呢?它们是页面布局的一部分,还是只是像在 safari 中一样悬停在所有内容之上?

感谢您的帮助!

最佳答案

这很容易衡量。在可滚动元素上,滚动条的粗细很简单:

var scrollbarWidth = scrollableEl.offsetWidth - scrollableEl.clientWidth;`

作为explained very well大卫沃尔什。滚动条宽度/高度为零:

  • OSX(除非修改了鼠标设置,或者在 Lion 之前)。

  • 触摸设备浏览器(Android、iOS、Windows Phone)。

  • 平板电脑模式下的 IE12 Edge(可动态更改,当平板电脑模式更改时,滚动条显示和隐藏以及页面重绘。我认为可以通过注册调整大小事件并测试滚动条宽度来检测更改)。

  • 可以通过 CSS 改变,例如::-webkit-scrollbar { width: 1em; }例如-ms-overflow-style: none (documentation)。

  • 如果元素不在文档中,则可能为零(如果脚本在 <head> 中运行,也可能是零?)。

其他说明:

  • Modernizr 有一个 hidscrollbar 特征检测,可以检测是否使用了零宽度滚动条。

  • 高度差也应该衡量这一点,但它在 IE8 中并不可靠(尤其是在由于缩放更改而调整大小事件后不可靠),所以我一直使用宽度差。

  • 如果宽度不为零,它也可能由于以下原因而发生变化:(1) 页面缩放变化(在某些浏览器上宽度与物理像素保持相同,因此逻辑像素发生变化。尽管捏合缩放的行为不同) , (2) 样式变化如-webkit-scrollbar , (3) 桌面主题变化(主要主题宽度不同,或个性化主题)。

以下是测试人员的一些链接:

关于jquery - 检测不同类型的滚动条(例如正常/隐藏的 osx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494468/

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