简体   繁体   English

jQuery-在div中平滑滚动

[英]JQuery - Smooth scroll within a div

I have a div with a fixed height, and a style property of overflow-y: scroll; 我有一个固定高度的div,它的样式属性为overflow-y: scroll; . I am needing to know how to use JQuery to scroll to the bottom of this div. 我需要知道如何使用JQuery滚动到该div的底部。 All solutions I've found deal with animating the body and html, but I have yet to find a solution for scrolling a div with overflow-y: scroll; 我发现的所有解决方案都可以对body和html进行动画处理,但是我还没有找到使用overflow-y: scroll;滚动div的解决方案overflow-y: scroll; .

The following code is what I have, but it scrolls to the bottom instantly; 下面的代码是我所拥有的,但是它立即滚动到底部。 I am needing a smooth scroll. 我需要平滑滚动。

$('#my-div').animate({scrollTop: $('#my-div').height()}, 'slow');

Thanks in advance. 提前致谢。

Here it is: 这里是:

 $(window).on('load', function(){ $('.button').on('click', function(){ if ($('.scroller').scrollTop() == 0){ $('.scroller').animate({'scrollTop': $('.scroller')[0].scrollHeight - $('.scroller').height()}, 1000) } else { $('.scroller').animate({'scrollTop': 0}, 1000) } }) }) 
 .scroller { height: 100px; overflow-y: scroll; } .button { border: 1px solid black; cursor: pointer; display: inline-block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="button">Click me again!</div> <div class="scroller"> <pre> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sagittis feugiat erat non varius. Integer molestie mauris et turpis hendrerit, in pulvinar eros pulvinar. Praesent turpis ex, dapibus et pharetra fermentum, faucibus at lectus. Curabitur sollicitudin aliquam sem vel commodo. Vivamus porta, lorem eu gravida luctus. Ipsum metus sodales neque, vel mattis dui metus non nunc. Phasellus ex dui, interdum ut ante sit amet, pretium aliquam risus. Cras elementum lacus non orci scelerisque. Nec finibus nulla dictum. Orci varius natoque penatibus et magnis dis parturient montes. Nascetur ridiculus mus. Donec sed sagittis arcu. Suspendisse potenti. Vestibulum elementum luctus pharetra. Donec scelerisque eros vitae quam faucibus, vel pellentesque sapien efficitur. </pre> </div> 

Explanation: You need to use dom property scrollheight to get scrollable content height. 说明:您需要使用dom属性scrollheight来获取可滚动内容的高度。 For nicer effect, scroll only to the position, where the end of the content is exactly visible. 为了获得更好的效果,请仅滚动到内容结尾完全可见的位置。

Seems to work in my example. 在我的示例中似乎可以正常工作。 Check that you're having all correct values to the jquery scroll function. 检查jquery滚动功能是否具有所有正确的值。

 function scrollMe() { $("#myScrollDiv").animate( { scrollTop: 50 }, 1000); } 
 #myScrollDiv { overflow-y: auto; height: 400px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button onclick="scrollMe()">scrollMe</button> <div id="myScrollDiv"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum aliquam elit vel dolor molestie, commodo malesuada nibh fringilla. Mauris tristique semper nulla, vel pulvinar sapien luctus eget. Mauris vel ipsum ac justo dapibus iaculis. Etiam ornare eros at purus posuere, eu fermentum est vestibulum. Suspendisse non sapien elementum, lobortis justo ut, cursus dolor. Sed dolor ligula, vehicula eu suscipit id, interdum fermentum urna. Vivamus eu tincidunt erat. Sed id finibus urna, eget rhoncus metus. Nam gravida ante quis mauris tincidunt, non aliquam lorem consequat. <br> Cras nec sodales nisi. Donec velit diam, aliquam non ornare et, dignissim nec odio. Aliquam erat volutpat. Proin feugiat, erat eu ullamcorper sagittis, mauris nulla ornare eros, at blandit turpis augue vel turpis. Curabitur porttitor non nisi ut volutpat. Vestibulum massa enim, finibus quis massa molestie, tempor feugiat sem. Aliquam eu sem ac dui ullamcorper blandit. Duis sit amet neque quis nunc fermentum tempor. Curabitur pellentesque ipsum vitae orci mollis tincidunt. Suspendisse dictum quis turpis quis cursus. Cras volutpat sapien eu velit euismod iaculis. Nulla posuere est at dui iaculis, sit amet convallis libero lacinia. Vivamus non blandit tellus. Fusce placerat hendrerit dolor, vel rhoncus mauris interdum venenatis. <br> Praesent mauris tortor, pretium sit amet nunc sed, ultricies porttitor massa. Vivamus vestibulum lobortis ex. Pellentesque non vehicula libero, ac bibendum ligula. Integer placerat, mi et suscipit vulputate, nisi purus maximus arcu, non tristique libero ante non diam. Ut vel purus sed metus euismod convallis. Etiam sit amet venenatis metus. Integer at neque dolor. Mauris maximus semper dignissim. Ut pharetra dui magna, eu feugiat turpis lacinia vitae. Suspendisse semper nisi a tortor aliquam sagittis. Pellentesque convallis imperdiet metus ac elementum. Cras elementum sodales vestibulum. Mauris placerat augue eget augue convallis elementum. <br> Quisque vulputate magna maximus enim gravida egestas. Mauris nec augue tempor, consectetur turpis et, gravida ipsum. Etiam mollis velit in risus efficitur commodo. Proin rhoncus massa et dui pretium, eu scelerisque velit lacinia. In nec orci quis mi volutpat ullamcorper. Nulla bibendum nibh dolor, a bibendum ipsum pharetra a. Aliquam vel erat blandit, lobortis massa in, lobortis velit. Duis et malesuada sem. <br> Pellentesque quis sapien at magna malesuada aliquet eu ac quam. Fusce at risus orci. Phasellus luctus fringilla tincidunt. Duis ornare ex at purus suscipit, et tempus ipsum finibus. Mauris non aliquam dui. Proin in nulla a quam fermentum rhoncus sed a neque. Phasellus mattis, mauris ut fermentum hendrerit, libero nunc ultrices ante, a sollicitudin metus metus quis diam. Sed porttitor elit nec ante efficitur, sit amet convallis neque venenatis. Duis id ultricies mauris, at bibendum leo. Quisque et nibh eu sapien viverra gravida nec quis sem. Praesent et urna mattis, ultrices nunc quis, efficitur neque. Integer blandit neque interdum pellentesque aliquam. </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM