【问题标题】:How do I add scroll onto this div?如何在这个 div 上添加滚动?
【发布时间】:2012-08-15 22:12:40
【问题描述】:

我需要能够滚动的 div 是:我需要它在 timeholder div 中滚动,最好有一个自定义滚动条,但这不是必需的。我尝试过插件和 css 解决方案,但无济于事。我最好在 jquery 中寻找解决方案...

    <div class="timeHolder">
        <div class="timeView">              
<!-- Year Markers -->            
                <div class="yearMarker">1943</div><div class="yearMarker">1944</div><div class="yearMarker">1945</div><div class="yearMarker">1946</div><div class="yearMarker">1947</div><div class="yearMarker">1948</div><div class="yearMarker">1949</div><div class="yearMarker">1950</div><div class="yearMarker">1951</div><div class="yearMarker">1952</div><div class="yearMarker">1953</div><div class="yearMarker">1954</div><div class="yearMarker">1955</div><div class="yearMarker">1956</div><div class="yearMarker">1957</div><div class="yearMarker">1958</div><div class="yearMarker">1959</div><div class="yearMarker">1960</div><div class="yearMarker">1961</div><div class="yearMarker">1962</div><div class="yearMarker">1963</div><div class="yearMarker">1964</div><div class="yearMarker">1965</div><div class="yearMarker">1966</div><div class="yearMarker">1967</div><div class="yearMarker">1967</div><div class="yearMarker">1969</div><div class="yearMarker">1970</div><div class="yearMarker">1971</div><div class="yearMarker">1972</div><div class="yearMarker">1973</div><div class="yearMarker">1974</div><div class="yearMarker">1975</div><div class="yearMarker">1976</div><div class="yearMarker">1977</div><div class="yearMarker">1978</div><div class="yearMarker">1979</div><div class="yearMarker">1980</div><div class="yearMarker">1981</div><div class="yearMarker">1982</div><div class="yearMarker">1983</div><div class="yearMarker">1984</div><div class="yearMarker">1985</div><div class="yearMarker">1986</div><div class="yearMarker">1987</div><div class="yearMarker">1988</div><div class="yearMarker">1989</div><div class="yearMarker">1990</div><div class="yearMarker">1991</div><div class="yearMarker">1992</div><div class="yearMarker">1993</div><div class="yearMarker">1994</div><div class="yearMarker">1995</div><div class="yearMarker">1996</div><div class="yearMarker">1997</div><div class="yearMarker">1998</div><div class="yearMarker">1999</div><div class="yearMarker">2000</div><div class="yearMarker">2001</div><div class="yearMarker">2002</div><div class="yearMarker">2003</div><div class="yearMarker">2004</div><div class="yearMarker">2005</div><div class="yearMarker">2006</div><div class="yearMarker">2007</div><div class="yearMarker">2008</div><div class="yearMarker">2009</div><div class="yearMarker">2010</div><div class="yearMarker">2011</div><div class="yearMarker">2012</div><div class="yearMarker">2013</div><div class="yearMarker">2014</div><div class="yearMarker">2015</div><div class="yearMarker">2016</div><div class="yearMarker">2017</div><div class="yearMarker">2018</div><div class="yearMarker">2019</div>

<!-- End Year Markers -->           

        </div>
    </div>    

</aside>

CSS:

/*---------- Start Timeline 2 ---------*/

.timeContainer { position: fixed; width: 100px; height: 90%; margin: 2% 0% 5% 0%; top: 0px; right: 30px; overflow:hidden;}

 .timeHolder { position: absolute; width: 100px; margin: 50px 0px 50px 0px; top: 0px; left: 0px;}

.timeView { position:absolute; width: 100px; height: 28105px; max-height: 28105px; top: 0px; left: 0px; background-image:url(../img/longTimeBG3.png); background-repeat:repeat-y; background-position: top left; z-index: 90;; 
}



/*---------- End Timeline 2 ---------*/

--------------编辑添加另一个问题---- ------------

好的,我有这个文档准备好的动画,将 timeView div 移动到 2011 年(或 -24820 像素)

现在滚动位置现在设置在 2011 年的顶部,并且不会再向上滚动

这里是初始化动画的脚本:

$('.timeView').animate({         
        easing: 'easeInExpo',
        top: '-=24820px',
}, 10000);

【问题讨论】:

  • 你能把你的代码减少到这个问题所需的最低限度吗?我怀疑很多这样的代码根本不需要......而且可能是一个 JSFiddle。
  • 您应该尝试在jsfiddle.net 上做一个简化的例子来帮助我们帮助您。

标签: jquery scroll overflow positioning css-position


【解决方案1】:

你的

position : absolute;

与卷轴冲突...你真的需要它是绝对的吗?尝试设置

position : relative 

到你的内部 div 就像在这个小提琴中:http://jsfiddle.net/GSzZw/27/ 关键是让你的 timeView 高度大于你的 timeHolder 高度(两个高度都必须设置)并添加

overflow-y : scroll;

overflow-y : auto;

-- 编辑 ------ 如果您更改“顶部”值,您将能够向上滚动。

如果你想 scroll 到一个特定的地方,请使用 jQuery 的 scrollTop 并看看这个小提琴: http://jsfiddle.net/GSzZw/48/

动画使用:

$(document).ready(function() {
    $(".timeHolder").animate({         
        scrollTop: '24800',
     }, 10000);
});    

而不是:

$(document).ready(function() {
    $(".timeHolder").scrollTop(24800);
});    

​ ​

希望对您有所帮助。

【讨论】:

  • 好的,把这个小花絮放在一边,但看看我对主要问题的编辑,很好的解决方案,但真正的问题来了......
  • 好的,我知道您的其他问题,但我认为您应该针对您的其他问题发布一个新问题。请为我们添加小提琴以帮助您。
  • 我编辑了我的答案以完成您的新问题。如果您在滚动动画方面需要更多帮助,请发布新问题
  • 所以你是说没有办法按照我尝试的方式对其进行动画处理?
  • 好吧,一切都很好,不过有点奇怪...如果你一直滚动到顶部,滚动会停在鼠标指针所在的位置。如果您滚动 div,它只会向下滚动。我为所有类设置了最大高度,但它仍然可以
【解决方案2】:

JQuery Scrollable 是最好和最简单的解决方案。

http://jquerytools.org/download/

其他解决方案是 ScrollTo 插件。

【讨论】:

    【解决方案3】:

    放入你的css

    overflow: auto;
    

    在你的 div 上你想要滚动条。

    【讨论】:

    • 你可能必须为你的 timeHolder 指定一个高度?
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 2020-06-05
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2021-09-04
    相关资源
    最近更新 更多