1

我正在开发一个涉及 JavaScript 滚动条重新样式化解决方案的 Web 界面,该解决方案试图将浏览器的默认滚动条隐藏在 HTML/CSS 替换之后,同时保留对浏览器默认滚动行为的支持,这是许多流行的 JS 滚动条插件所缺乏的功能。我使用这种方法遇到的唯一问题是,一些浏览器坚持在插件创建的滚动条之上显示默认滚动条,完全破坏了所需的美感。

为了解决这个问题,我尝试将包含滚动条的元素包装在一个 div 中,overflow: hidden;并使用 JS 来检测默认滚动条的宽度并定位它所控制的元素,使其落在父 div 的剪切边界之外。但是,正如你们中的许多人可能知道的那样,跨越元素底部或右侧边界的内容overflow: hidden可能会在鼠标拖动操作期间意外滚动到视图中,例如课程跨过隐藏父元素的底部或剪切边界的文本选择(即:向右拖动将使默认滚动条重新显示)。

但幸运的是,在这种情况下,当内容超出顶部或左侧边界时,不会发生这种行为。知道了这一点,我正在考虑继续使用上面概述的方法,但是设置滚动元素的样式,direction: rtl使其滚动条从右向左翻转,并超出隐藏元素的边界,然后应用于direction: ltr包含其所有内容的子元素否定所有实际内容的方向变化。

到目前为止,这种技术在我进行的每一次测试中都产生了预期的结果。但是,我想知道这个解决方案是否好得令人难以置信,并且我忽略了一个致命的可访问性和/或与滚动条放置的 CSS 方向的兼容性问题,这应该会阻止我使用这种方法。

TL;DR:使用 CSS 方向属性来控制元素滚动条的位置是个坏主意吗?

4

1 回答 1

1

就属性的正确使用而言,这是一个坏主意。direction: rtl正确用于使用替代字符编码(例如阿拉伯语、希伯来语等)翻转文本的阅读方向。尝试找到解决此问题的另一种方法。试着看看前面提到的一些流行的 JS 滚动条插件的来源,看看它们是如何做到的。

于 2013-01-06T00:36:54.197 回答