I have a horizontal div:
i need to scroll to the specific element in this div via JavaScript button (after the click div must be scrolled to that element). How can I do this?
<div class="group" id="frames"> <div class="item frames-item"> <img src="1.jpg"> </div> <div class="item frames-item"> <img src="2.jpg"> </div> .... .... </div>
Set the overflow-y: hidden; and overflow-x: auto; that will automatically hide the vertical scroll bar and present only the horizontal scrollbar. The white-space: nowrap; property is used to wrap text in a single line. Here the scroll div will be horizontally scrollable.
In jQuery, we can make any element tag move horizontally using the built-in function scrollLeft() function for scrolling the scrollbar horizontally according to either the position which is set as the parameter or without setting the position which would specify the position in pixel number of the scrollbar.
To enable horizontal scrolling, we can use the CSS property overflow-x. If we assign the value scroll to the overflow-x property of the container element, the browser will hide horizontally overflowing content and make it accessible via horizontal scrolling.
You can use $('html, body'). scrollLeft() to get the horizontal scrolling position if you use jQuery.
Or you could use the following snippet:
$('.scrollable').animate({scrollLeft: $('#dstElement').position().left}, 500);
Where position()
returns the #dstElement
's relative position to `.scrollable' if scrollable is positioned.
var $scroller = $('.scroller'); // assign click handler $('button').on('click', function () { // get the partial id of the div to scroll to var divIdx = $('input').val(); // retrieve the jquery ref to the div var scrollTo = $('#d'+divIdx) // change its bg .css('background', '#9f3') // retrieve its position relative to its parent .position().left; console.log(scrollTo); // simply update the scroll of the scroller // $('.scroller').scrollLeft(scrollTo); // use an animation to scroll to the destination $scroller .animate({'scrollLeft': scrollTo}, 500); });
.scroller { width: 300px; height: 100px; overflow-x: auto; overflow-y: hidden; } .container { position: relative; /*important for the .position() method */ height: 100px; width: 770px; } .container div { height: 90px; width: 60px; float: left; margin: 5px; background: #39f; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="scroller"> <div class="container"> <div id="d1"></div> <div id="d2"></div> <div id="d3"></div> <div id="d4"></div> <div id="d5"></div> <div id="d6"></div> <div id="d7"></div> <!-- ... --> </div> </div> <button>Scroll to: </button> <input type="text" value="4"/>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With