【问题标题】:How to detect scroll bar's side?如何检测滚动条的侧面?
【发布时间】:2011-10-19 01:24:17
【问题描述】:

我在页面上有一个带有overflow:visibledirection:rtl 的div。 问题是 IE 在左侧显示滚动条,而 Chrome 和 FF 在右侧显示滚动条。 有没有js方法检测滚动条的侧边?

我知道如果 IE 位于左侧,其他所有位于右侧,您可以使用,但我对这个解决方案不满意

【问题讨论】:

  • 滚动条的位置似乎是浏览器自己决定的,你可能无法通过 JS 读取/设置自己。但也许有一些(专有的?)CSS 属性会迫使它位于一侧或另一侧?不过我不知道
  • 您可以像@cmdecho 显示的那样“破解”它。但我不喜欢它。我更喜欢以某种方式检测它。
  • 有办法绕过它,是的,但我的意思是,因为它看起来你不能直接设置 scroll-bar:left/right 属性或类似的东西,它只是作为一个侧面发生-其他设置的影响,我怀疑有没有办法读取它的位置。它根本不是一个暴露的属性(我猜)。

标签: javascript jquery html css


【解决方案1】:
<div style="overflow:auto; width:100px; height:100px">
    <div style="direction:rtl;">
        text text text text text text text text text text 
        text text text text text text text text text text 
        text text text text text text text text text text
    </div>
</div>

【讨论】:

  • 我不想添加额外的 DOM 来强制特定的一方。
【解决方案2】:

这是一个非常老套的想法:

获取 div 内第一个子元素的相对 x 偏移量(或简单地从子元素的 x 位置减去 div 的 x 位置)

如果滚动条在左侧,第一个子元素的 x-offset/-position 应该高于滚动条在右侧的情况,因为左侧滚动条会将元素向右推一点。

也许它会起作用(我没有方便的 IE 来检查它)

这是一个未经测试的 jsfiddle 概念:http://jsfiddle.net/tKGS2/

【讨论】:

  • 好主意。我想我会试一试。谢谢
  • 谢谢。我在那里几乎没有修复,我确实完成了工作(请注意,它仅在 IE 中可见)jsfiddle.net/tKGS2/1
  • @IgalSt 注意,如果你放大到最大,你可以得到 .left 小于 5,因为滚动条的宽度变小了
【解决方案3】:

我这样做是为了让您可以从 javascript 获取滚动条位置,而无需可见 div http://jsfiddle.net/tKGS2/27/

var d = $("<div></div>");
d.css("overflow-y","scroll");
d.append('<p/>');

$('#pivot').append(d);

var x = d.find('p').position().left
d.css('display','none');

document.body.innerHTML += x;
var pos = x < 3 ? "right" : "left";
document.body.innerHTML += pos;

【讨论】:

    猜你喜欢
    • 2012-08-02
    • 2013-12-23
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2017-11-15
    相关资源
    最近更新 更多