2015-04-18 6 views
8

Ho scritto un fiddle che scorre automaticamente un div su e giù che funziona perfettamente. Ma c'è un problema quando scorre verso il basso, non mostra l'ultima riga ("String4" in questo caso). qualcuno può aiutarmi a risolvere questo per favore.jQuery auto scroll a 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> 

e js roba:

$(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); 
} 

risposta

3

Ecco buona soluzione

controllo qui solo

$(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>

fanno

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

come può essere imbottitura interrompe la tua altezza.

Ho rimosso il tag p vuoto.

Ecco l'Fiddle

+0

no, funziona solo se è stato aggiunto
come risposta accettata. rimuovere il
dal violino e provare con il codice, non funziona. Grazie per il tentativo. –

+0

ancora lo stesso machan –

+0

è possibile controllare il codice proprio qui. mentre la risposta che hai contrassegnato come corretta. non puoi vedere il tuo bordo inferiore. Quale io non la penso così è la buona cosa. Altro selezionare per andare con quale è la vostra scelta. – nirmal

2

Try This: Potrebbe essere stupido, ma fa il lavoro:

<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> 

Ecco il violino aggiornamento: http://jsfiddle.net/f7e3d440/9/

+1

questo sta lavorando anche se un po soluzione di astuzia, grazie bro !! –

+0

Ho provato il mio meglio per voi bro .. –

+0

Grazie ancora .. davvero apprezzato! –