Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

scroll to element in horizontal div

Tags:

I have a horizontal div:

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> 
like image 997
ysokolovsky Avatar asked Jul 10 '13 15:07

ysokolovsky


People also ask

How do I scroll horizontally in a 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.

How do I horizontally scroll a div using jQuery?

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.

How do I scroll horizontally in CSS?

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.

How do I get horizontal scroll position?

You can use $('html, body'). scrollLeft() to get the horizontal scrolling position if you use jQuery.


1 Answers

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.

Code & Demo

    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"/>
like image 165
Matyas Avatar answered Nov 01 '22 11:11

Matyas