2015-04-18 26 views
8

Napisałem fiddle, który automatycznie przewija div, co działa poprawnie. Ale pojawia się problem, gdy przewija się w dół, nie pokazuje ostatniego wiersza ("String4" w tym przypadku). Czy ktoś może mi pomóc to rozwiązać?jQuery auto przewijanie div Up & down

<div class="container"> 
<div class="content"> 
    <p>string1</p> 
    <p>string</p> 
    <p>string</p> 
    <p>string</p> 
    <p>string</p> 
    <p>string</p> 
    <p>string0</p> 
    <p>string1</p> 
    <p>string2</p> 
    <p>string3</p> 
    <p>string4</p> 
    <p> </p> 
</div> 

i js rzeczy:

$(document).ready(function() { 

    if ($('.content').height() > $('.container').height()) { 
     setInterval(function() { 

      start(); 
     }, 3000); 

    } 
}); 

function animateContent(direction) { 
    var animationOffset = $('.container').height() - $('.content').height(); 
    if (direction == 'up') { 
     animationOffset = 0; 
    } 

    console.log("animationOffset:"+animationOffset); 
    $('.content').animate({ "marginTop": (animationOffset)+ "px" }, 5000); 
} 

function up(){ 
    animateContent("up") 
} 
function down(){ 
    animateContent("down") 
} 

function start(){ 
setTimeout(function() { 
    down(); 
}, 2000); 
setTimeout(function() { 
    up(); 
}, 2000); 
    setTimeout(function() { 
    console.log("wait..."); 
}, 5000); 
} 

Odpowiedz

3

Oto dobre rozwiązanie

sprawdzić tutaj tylko

$(document).ready(function() { 
 

 
    if ($('.content').height() > $('.container').height()) { 
 
     setInterval(function() { 
 

 
      start(); 
 
     }, 3000); 
 
    
 
    } 
 
}); 
 

 
function animateContent(direction) { 
 
    var animationOffset = $('.container').height() - $('.content').height()-30; 
 
    if (direction == 'up') { 
 
     animationOffset = 0; 
 
    } 
 

 
    console.log("animationOffset:"+animationOffset); 
 
    $('.content').animate({ "marginTop": (animationOffset)+ "px" }, 5000); 
 
} 
 

 
function up(){ 
 
    animateContent("up") 
 
} 
 
function down(){ 
 
    animateContent("down") 
 
} 
 

 
function start(){ 
 
setTimeout(function() { 
 
    down(); 
 
}, 2000); 
 
setTimeout(function() { 
 
    up(); 
 
}, 2000); 
 
    setTimeout(function() { 
 
    console.log("wait..."); 
 
}, 5000); 
 
}
.container { height:250px; background:red; padding:0 10px; overflow:hidden; } 
 
.content { background:#eee; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="content"> 
 
     <p>string1</p> 
 
     <p>string</p> 
 
     <p>string</p> 
 
     <p>string</p> 
 
     <p>string</p> 
 
     <p>string</p> 
 
     <p>string0</p> 
 
     <p>string1</p> 
 
     <p>string2</p> 
 
     <p>string3</p> 
 
     <p>string4</p> 
 
    </div> 
 
</div>

zrobić

var animationOffset = $('.container').height() - $('.content').height()-30; 

jakie mogą być wyściółka przerywa swoją wysokość.

Usunąłem pusty tag p.

oto Fiddle

+0

Nie, działa tylko wtedy, gdy do akceptowanej odpowiedzi dołączono
. usuń
z fiddle i spróbuj z kodem, to nie działa. Dzięki za próba nirmal. –

+0

wciąż ten sam machan –

+0

możesz sprawdzić kod tutaj. podczas gdy odpowiedź oznaczona jako poprawna. nie widać dolnej granicy. Co nie wydaje mi się, że to dobrze. Innym wyborem do wyboru jest twój wybór. – nirmal

2

Spróbuj to: Może być głupie, ale działa:

<div class="container"> 
    <div class="content"> 
     <p>string1</p> 
     <p>string</p> 
     <p>string</p> 
     <p>string</p> 
     <p>string</p> 
     <p>string</p> 
     <p>string0</p> 
     <p>string1</p> 
     <p>string2</p> 
     <p>string3</p> 
     <p>string4</p> 
     <p><br> </p> 
    </div> 
</div> 

Oto aktualizowane skrzypce: http://jsfiddle.net/f7e3d440/9/

+1

to działa choć nieco rozwiązanie spryt, dzięki bro !! –

+0

Wypróbowałem mój najlepszy dla bro .. –

+0

Jeszcze raz dziękuję. Bardzo doceniane! –

Powiązane problemy