2013-08-19 63 views
32

Firefox 24引入了Lion滚动条支持。这将在Mac OS X上以狮子风格显示滚动条。请参阅:https://wiki.mozilla.org/Lion_Scrollbars/Triage在Mac OS X的Firefox中强制显示滚动条

这会对我造成问题:默认情况下,div上的滚动条现在隐藏。有时我想强制一个可见的滚动条。

对于WebKit的有一个很好的解决方案(在https://davidwalsh.name/osx-overflow提到):在Mac OS X

::-webkit-scrollbar { 
    -webkit-appearance: none; 
    width: 7px; 
} 

::-webkit-scrollbar-thumb { 
    border-radius: 4px; 
    background-color: rgba(0,0,0,.5); 
    -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); 
} 

有谁知道我怎么能强迫可见滚动条在Firefox 24(及以上)?

是否有任何与webkit滚动条匹配的drop-in javascript滚动条?

+1

不幸的是,这在FF中目前是不可能的。请参阅:https://bugzilla.mozilla.org/show_bug.cgi?id=77790解决方法是使用重新实现本机行为的JavaScript滚动条。请记住,浏览器正在考虑在OSX中设置的[用户首选项](http://osxdaily.com/2011/08/03/show-scroll-bars-mac-os-x-lion/),并且用户已经受过培训滚动显示溢出的区域。 –

+1

需要注意的一件事是设计你的页面的方式,它实际上每当它出现溢出时都会溢出。我看到很多网站现在使用“堆叠式屏幕”作为设计,向下滚动并持续看到不同的屏幕或“页面” - 但如果您没有注意到短滚动条,并且“折叠”恰好在上方下一个屏幕的开始,没有什么可以指示存在更多内容。以[frontporch.io](http://frontporch.io/)为例(截至2013年10月14日) –

+0

这里有什么问题?你想强制滚动条的可见性吗?或者你想自定义滚动条的外观? – HerrSerker

回答

20

作为用户thirtydot explained在另一个问题中,无法在Chrome中自定义Firefox中的滚动条。

而且,也没有办法实际上是“力”火狐呈现旧式的滚动条,因为该系统使用的默认滚动条是由操作系统本身预定义(注意,您可以修改的滚动条你想在系统首选项)

换句话说,除非Firefox支持原生自定义滚动条,否则只能使用JavaScript插件(如jScrollPane等)。

-2

这项工作?

html { 
    overflow-y: scroll; 
} 

http://css-tricks.com/snippets/css/force-vertical-scrollbar/

+2

不幸的是没有。它给容器滚动条,但只有当你滚动。否则,滚动条是不可见的。(如果元素是可滚动的,但是没有可见的滚动条,则会非常混乱)。 – theorise

+0

所以这是完全特定于OSX滚动条。很高兴你找到了答案,并且很高兴知道这件事。它是否也会导致页面之间的“居中跳转”,或者是否出现而不影响水平页面宽度? – groovenectar

1

这里有一个解决方案,但你必须使用JavaScript。基本上它会运行一个强制浏览器显示滚动条的循环。

使用此CSS,以确保您的div设置为显示滚动条:

.mydiv{ overflow-y:auto; } 

那么这个脚本附加到你的页面(这需要JQuery的)。

<script type="text/JavaScript"> 
var sc; 
jQuery(document).ready(function(){ 
    //constantly update the scroll position: 
    sc=setInterval(scrollDown,200); 

    //optional:stop the updating if it gets a click 
    jQuery('.mydiv').mousedown(function(e){ 
     clearInterval(sc);    
    }); 
}); 
function scrollDown(){ 
    //find every div with class "mydiv" and apply the fix 
    for(i=0;i<=jQuery('.mydiv').length;i++){ 
     try{ 
      var g=jQuery('.mydiv')[i]; 
      g.scrollTop+=1; 
      g.scrollTop-=1; 
     } catch(e){ 
      //eliminates errors when no scroll is needed 
     } 
    } 
} 
</script> 
+0

不幸的是我无法让你的解决方案工作。 Mac上的Firefox默认没有可见的滚动条。我用你的解决方案创建了一个jsfiddle:http://jsfiddle.net/o92gdd9y/ 我在做什么错? – Boschman

+2

它确实有效,但脚本正在假设垂直滚动。你的div正在假设水平滚动。所以你需要像这样不断更新scrollLeft:http://jsfiddle.net/o92gdd9y/2/(它的工作原理,但它是一个黑客) – Blaise

0

overflow: -moz-scrollbars-vertical怎么样?

+0

为什么这将工作在其他任何东西?一般用另一个问题回答问题并不是好的形式。如果你知道这是有效的,通过解释它是如何帮助的,它是一个真正的答案。如果你不知道这个作品,等到你有足够的代表评论,然后评论。 –