2015-04-18 16 views
8

Tôi đã viết fiddle để cuộn một div lên xuống tự động đang hoạt động tốt. Nhưng có một vấn đề khi nó cuộn xuống, nó không hiển thị hàng cuối cùng ("String4" trong trường hợp này). bất cứ ai có thể giúp tôi để sắp xếp này ra xin vui lòng.jQuery tự động cuộn một div Lên và xuống

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

và js thứ:

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

Trả lời

3

Đây là giải pháp tốt

kiểm tra ở đây chỉ

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

làm

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

như có thể đệm ngắt chiều cao của bạn.

Tôi đã xóa thẻ p trống của bạn.

đây là Fiddle

+0

không, nó chỉ hoạt động nếu bạn đã thêm
làm câu trả lời được chấp nhận. loại bỏ các
từ fiddle và thử với mã của bạn, nó doen't làm việc. Cảm ơn bạn đã thử nirmal. –

+0

vẫn là cùng một machan –

+0

bạn có thể kiểm tra mã ngay tại đây. trong khi câu trả lời bạn đánh dấu là chính xác. bạn không thể nhìn thấy đáy biên giới của mình. Mà tôi không nghĩ như vậy là điều tốt. Khác lựa chọn để đi với đó là sự lựa chọn của bạn. – nirmal

2

Hãy thử này: Có thể là ngu ngốc nhưng không công việc:

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

Đây là fiddle Cập nhật: http://jsfiddle.net/f7e3d440/9/

+1

này đang làm việc mặc dù một chút giải pháp khôn ngoan, nhờ bro !! –

+0

Đã cố gắng hết sức mình cho u .. –

+0

Cảm ơn một lần nữa..thực sự được đánh giá cao! –

Các vấn đề liên quan