Search code examples
jqueryjquery-pluginsscrolltojquery-scrollable

scrollTo and horizontal tables


I am attempting to make a horizontal scrolling portfolio site. I want to users to be able to click through the images using a next/previous button as well as scrolling as per usual with the mouse and scroll bars. I am, however, having trouble implementing this using jquery.

The table is used as this is best practice in horizontal websites. I wish to use the scrollTo() plugin to allow the table to scroll forwards or backwards depending on which button is clicked.

The end product would resemble this, although I have tried to utilise the code on this site with NO luck at all!

I am lost on how to do this.

My HTML is as follows:

     <div id="content">

  <div id="contentRight">

   <ul id="direction">

    <li id="next"><a class="forward">Next</a></li>
    <li id="prev"><a class="back">Previous</a></li>

   </ul>

   <table id="work">

    <tr>

     <td id="horseOneImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseTwoImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseThreeImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseFourImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseFiveImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseSixImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseSevenImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>
     <td id="horseEightImage" class="mainImage"><img src="media/images/horse.jpg" alt="" /></td>

       </tr>

      </table> 

  </div>

 </div>

I have no current jQuery to add as anything I have tried is just a mess.

Any help would be great!


Solution

  • HTML

    <!DOCTYPE html>
    
    <html>
    <title>Slider !!</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js" ></script>
    </head>
    <body>
        <div id="content">
            <div id="contentRight">
                <ul id="direction">
                    <li id="next"><a href="#" class="forward">Next</a></li>
                    <li id="prev"><a href="#" class="back">Previous</a></li>
                </ul>
    
                <center>
                    <table id="work">
                        <tr>
                             <td id="horseOneImage"    class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseTwoImage"    class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseThreeImage"  class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseFourImage"   class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseFiveImage"   class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseSixImage"    class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseSevenImage"  class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
                             <td id="horseEightImage"  class="mainImage"><img src="http://blog.foreignpolicy.com/files/images/bird.jpg" alt="" /></td>
    
                        </tr>
                    </table> 
                </center>
        </div>
    </div>
    
    </body>
    
    </html>
    

    javascript

    <script type="text/javascript">
    
    
    $(document).ready(function() {
        var margin = 0;
    
    
        var length = $('.mainImage').length;
        var width  = $('img:first').width();
        var height = $('img:first').height();
    
        $('table#work').width(width).height(height).css({overflow:'hidden'});
        $('table#work tr').css({width:width*length,height:height,overflow:'hidden',position:'absolute'});
        $('td.mainImage,td.mainImage img').css({width:width,height:height});
    
        $('#next').click(function() {
                margin +=width;
                if(margin > width*(length-1)) { margin = width*(length-1); return;}
            $('#wrap').stop().animate({left:"+="+width},1000);  
            $('html,body,table').stop().animate({scrollLeft:"+="+width},1000); 
        });
    
        $('#prev').click(function() {
                margin -=width;
                if(margin<0) { margin = 0; return;}
            $('#wrap').stop().animate({left:"-="+width},1000);  
            $('#prev,#next,html,body,table').stop().animate({scrollLeft:"-="+width},1000 );
        });
    });
    </script>
    

    here's the Demo