代码之家  ›  专栏  ›  技术社区  ›  Byron Sommardahl

如何在一个分区的顶部和底部获得水平滚动条?

  •  27
  • Byron Sommardahl  · 技术社区  · 14 年前

    因为我很确定没有本地的HTML或CSS方式来实现这一点,所以我愿意用JavaScript来实现这一点。显然,我可以在我的分区底部使用overflow:auto在css中得到一个滚动条。是否有一些javascript可以从底部“克隆”滚动条并将其放在DIV的顶部?也许还有别的办法?

    2 回复  |  直到 7 年前
        1
  •  35
  •   rap-2-h    7 年前

    您可以在实际元素的上方创建一个具有相同内容宽度的新虚拟元素,以获得额外的滚动条,然后将滚动条与 onscroll 事件。

    function DoubleScroll(element) {
        var scrollbar = document.createElement('div');
        scrollbar.appendChild(document.createElement('div'));
        scrollbar.style.overflow = 'auto';
        scrollbar.style.overflowY = 'hidden';
        scrollbar.firstChild.style.width = element.scrollWidth+'px';
        scrollbar.firstChild.style.paddingTop = '1px';
        scrollbar.firstChild.appendChild(document.createTextNode('\xA0'));
        scrollbar.onscroll = function() {
            element.scrollLeft = scrollbar.scrollLeft;
        };
        element.onscroll = function() {
            scrollbar.scrollLeft = element.scrollLeft;
        };
        element.parentNode.insertBefore(scrollbar, element);
    }
    
    DoubleScroll(document.getElementById('doublescroll'));
    #doublescroll
    {
      overflow: auto; overflow-y: hidden; 
    }
    #doublescroll p
    {
      margin: 0; 
      padding: 1em; 
      white-space: nowrap; 
    }
    <div id="doublescroll">
        <p>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
            eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
            enim ad minim veniam, quis nostrud exercitation ullamco laboris
            nisi ut aliquip ex ea commodo consequat.
        </p>
    </div>

    这是一个可以改进的概念证明,例如通过投票或监听可能改变 scrollWidth 属于 element ,例如,当 % 正在使用长度、字体大小更改或由其他脚本驱动的内容更改。IE选择在元素内部呈现水平滚动条,以及IE7的页面缩放(与往常一样)也存在问题。但这是一个开始。

        2
  •  2
  •   Sampson    8 年前

    您可以使用jquery的用户界面 Slider control . 您可以在nettus上在线阅读有关实现此效果的教程: http://net.tutsplus.com/tutorials/javascript-ajax/making-a-content-slider-with-jquery-ui/