【问题标题】:Scrollbar color change in FirefoxFirefox 中的滚动条颜色变化
【发布时间】:2010-10-08 12:31:56
【问题描述】:

我想更改 Firefox 中的滚动条颜色。我该怎么做?

【问题讨论】:

  • 我认为这只有在 IE 和 Opera 中才有可能......
  • 不,这是不可能的,我很高兴 Firefox 不允许任何人更改我的滚动条。
  • 你知道,我让 jQuery 工作 (martinsmucker.com/demo/scroller.html),所以我更新了我的答案,提供了一些分步说明和正在发生的事情的解释。如果您还有任何问题,请告诉我。
  • Firefox 对页面上的视觉元素施加这种控制是完全愚蠢的。谁能说他们设计滚动条的方法对于视障人士来说是正确的。失败!
  • 上述 cmets 中的 40%(5 个中有 2 个)似乎不是很有帮助。如果您不打算提供帮助,请不要发表评论。不确定您是否找到了解决方案,但我发现这篇文章很有帮助。它在 IE 或 Firefox 中不起作用,因为它们只允许您控制滚动条样式的几个方面。 css-tricks.com/custom-scrollbars-in-webkit

标签: css firefox scroll scrollbar


【解决方案1】:

在 Firefox 中更改滚动条颜色并不像在 Internet Explorer 和 Opera 中那样简单。 Firefox 只允许主题设置滚动条的样式。这是一件好事。许多用户不喜欢在设计师的心血来潮时随意改变界面小部件的外观和感觉。对于可能使用高对比度主题的视障访问者来说,更改界面部分的外观可能会成为更大的问题。

也就是说,如果滚动条包含在页面中的 <div> 中,您可以创建自定义滚动条并使用 JavaScript 使其正常工作。这个 jQuery 插件看起来可以很好地解决问题:http://jscrollpane.kelvinluck.com/

我认为这或多或少是你想要做的:http://martinsmucker.com/demo/scroller.html

它是这样工作的:

在文档的<head> 中,我们必须引用几个样式表和脚本(您可能已经从http://jscrollpane.kelvinluck.com/ 下载。

这是大部分魔法发生的地方:

<!-- Styles -->
<link rel="stylesheet" type="text/css" href="jquery.jscrollpane.css" />
<style type="text/css">
    html, body {
        height: 100%;
        margin: 0;
        padding:0;
    }
    #container {
        height:100%;
        width:100%;
        margin: 0;
        padding:0;
        overflow: auto;
    }
</style>

<!-- Scripts -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery.mousewheel.js"></script>
<script type="text/javascript" src="jquery.jscrollpane.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('.scroll-pane').jScrollPane();
    });
</script>

这假设 css 和 js 文件与您的 html 文件位于同一目录中。我们首先链接到提供的样式表。

然后,添加一些 CSS 以防止显示正常的滚动条。将html和body的marginpadding设置为0,将height设置为100%。我们所有的内容都将被包装在一个 id 为“container”的 div 中。这个容器完全填满了页面(高度:100%;宽度:100%;),它窃取了滚动,以便我们可以自定义滚动条(overflow: auto;)。

然后我们引用所有适当的脚本。在这里,我使用的是由 Google 托管的 jQuery 副本,并且我再次假设所有本地脚本都与 html 文件位于同一目录中。最后一点 jquery 找到所有带有“滚动窗格”类的 div,并为它们添加适当的元素和滚动功能。

那么 html 就非常简单了。

<body>
    <div class="scroll-pane" id="container">
    All of your content for the page goes here.
    </div>
</body>

如果你做的一切都正确,你的页面应该看起来像我的例子。

【讨论】:

  • $('.scroll-pane-arrows ').jScrollPane( { showArrows: true, Horizo​​ntalGutter: 10 } );
  • 您是否还包含了 jQuery javascript 库?
  • @Rahul,您能否编辑您的原始帖子以显示您网站中当前的代码?我认为这会很有帮助。
【解决方案2】:

Chrome 和 Safari 确实支持滚动条的着色。将以下代码放入您的 css 中,看看会发生什么:

::-webkit-scrollbar {
  height: 12px;
  width: 12px;
  background: #969696;
  -webkit-border-radius: 1ex;
}

::-webkit-scrollbar-thumb {
  background: #2B2B2B;
  -webkit-border-radius: 1ex;
  -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.75);
}

::-webkit-scrollbar-corner {
  background: #1A1A1A;
}

唯一缺少的是 Firefox 支持此功能。

【讨论】:

    【解决方案3】:

    自 64 版以来,Firefox 允许有限的滚动条样式:

    .my-scrollable {
       scrollbar-color: red blue;
       scrollbar-width: thin;
    }
    

    https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color

    【讨论】:

      【解决方案4】:

      直接通过 CSS 是不可能的。

      但如果你会使用 jQuery,jscrollpane 可能会对你有所帮助。

      【讨论】:

      • $('.scroll-pane-arrows ').jScrollPane( { showArrows: true, Horizo​​ntalGutter: 10 } ) ;但它不明白为什么
      • 您还需要一个指向 jScrollPane.js 文件的&lt;script&gt;&lt;/script&gt;(在此之前,您需要确保您引用的是 jQuery 库)。如果您在原始问题中发布更大的代码块可能会有所帮助。
      • 我也包含了 jquery 文件
      • 您可以编辑您的问题并发布您尝试过的内容吗? cmets 中的代码很难阅读。尝试发布逻辑完整的块
      【解决方案5】:

      你不能。如您所见here,这仅适用于 IE5+ 和 Opera7.2+。

      编辑: 使用一点 javascript 可以构建您自己的“html-scrollbars”,可以按照您想要的样式设置它们 - 但我认为您不应该这样做,写这个只是为了详细。

      【讨论】:

        【解决方案6】:

        嗯,我听到有人说“这不可能”... 但我不相信不可能的事。

        在以下示例中,我只想对主侧边栏中的&lt;ul&gt; 列表进行样式化。只需为 Firefox 滚动条样式尝试此解决方案:

        <div class="parent">
        <div class="sidebar">
        <ul class="scrollable">
        <li></li>
        </ul>
        </div>
        </div>
        

        CSS 将是:

        .scrollable {
        overflow: auto;
        max-height:80vh;
        overflow-y: scroll;
        scrollbar-color: #0A4C95 #C2D2E4;
        }
        
        .scrollable::-webkit-scrollbar {
        width: 0.5em!important;
        }
        
        .scrollable::-webkit-scrollbar-track-piece {
        -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.1);
        }
        
        .scrollable::-webkit-scrollbar-thumb:vertical {
        background-color: #ddd;
        outline: 1px solid slategrey;
        }
        

        以下是最终结果:

        (注意:第一张图片是默认的滚动条颜色)。

        【讨论】:

        • 注意:如果你想让滚动条的宽度比图片中显示的更窄,只需将scrollbar-width:thin; 添加到 div .scrollable。谢谢
        【解决方案7】:

        据我所知,这并不是很有用,但值得注意的是,控制是否在 Firefox 中显示滚动条的属性是:(reference link)

        Attribute....scrollbars
        Type.........nsIDOMBarProp
        Description..The object that controls whether or not scrollbars 
                     are shown in the window. This attribute is "replaceable" 
                     in JavaScript. Read only
        

        Firefox 还具有以下供应商特定属性:

        溢出:-moz-scrollbars-none

        其他有效值为 -moz-scrollbars-horizo​​ntal 和 -moz-scrollbars-vertical。

        【讨论】:

          【解决方案8】:

          对于 Firefox 或跨浏览器,您可以使用: jQuery custom content scroller

          更简单易用

          这是我在 magento 中实现并在 firefox、opera、chrome 和 safari 上测试的示例:http://i.stack.imgur.com/wnRCL.png

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-03-05
            • 2014-11-07
            • 2011-02-26
            • 1970-01-01
            • 2012-03-22
            • 2016-05-25
            • 1970-01-01
            相关资源
            最近更新 更多