2012-01-07 67 views
26

Tôi đang cố gắng bắt đầu mỗi trang sau khi trang chủ khoảng 500px xuống, tương tự trang web này: http://unionstationdenver.com/cách tự động cuộn xuống một trang html?

Bạn sẽ nhận thấy khi xem các trang sau trang chủ, bạn sẽ tự động cuộn xuống mà không cần thông báo nhưng bạn có thể cuộn lên để xem lại thanh trượt nổi bật một lần nữa.

Tôi đã chơi với scrolledHeight nhưng tôi không nghĩ rằng đó là những gì tôi cần ????

Về cơ bản tôi có một phần nổi bật ở trên đầu tất cả các trang nội dung của tôi, nhưng bạn không thể thấy phần này cho đến khi bạn cuộn lên. Bất kỳ giúp đỡ?

+0

bạn có thể muốn xem xét điều này. http://stackoverflow.com/questions/8773405/how-to-auto-scroll-to-target-div-with-jquery/8773563#8773563 – pixelass

+0

Ngọt ngào! Mối quan tâm duy nhất của tôi là bạn vẫn thấy hoạt hình của cuộn giấy. Vì vậy, mỗi trang tôi nhấp vào sẽ tải 500px đầu tiên và di chuyển tôi đến nội dung bên dưới nó. Điều đó sẽ gây phiền nhiễu cho người dùng. Suy nghĩ? – Hambone

Trả lời

1

Sử dụng document.scrollTop để thay đổi vị trí của tài liệu. Đặt số scrollTop của số document bằng bottom của phần nổi bật trên trang web của bạn

+0

scrollTop chỉ áp dụng cho phần tử DOM, không áp dụng cho tài liệu – Luca

+1

'scrollTop' hoạt động trên tài liệu như là một phần của DOM –

2

Bạn có thể sử dụng hai kỹ thuật khác nhau để đạt được điều này.

Đầu tiên là với javascript: đặt thuộc tính scrollTop của phần tử có thể cuộn (ví dụ: document.body.scrollTop = 1000;).

Thứ hai là đặt liên kết trỏ đến một id cụ thể trong trang, ví dụ:

<a href="mypage.html#sectionOne">section one</a> 

Sau đó, nếu trong trang mục tiêu của bạn, bạn sẽ có ID đó trang sẽ được cuộn tự động.

+0

Với kỹ thuật đầu tiên của bạn, làm thế nào bạn có được nó để nó xuống vị trí của một phần tử cụ thể ? – Wex

+0

Có, tôi có điều đó về việc neo đậu nhưng đó là phương sách cuối cùng. Tôi chỉ không thể biết làm thế nào những kẻ đã làm điều đó http: // unionstationdenver.com/ – Hambone

+1

@Wex trong javascript đơn giản, bạn có thể tìm vị trí của phần tử bên trong tài liệu như sau: 'var topPosition = document.getElementById (" myElement "). offsetTop;' – Luca

40

Bạn có thể sử dụng .scrollIntoView() cho việc này. Nó sẽ đưa một phần tử cụ thể vào khung nhìn.

Ví dụ:

document.getElementById('bottom').scrollIntoView(); 

Demo: http://jsfiddle.net/ThinkingStiff/DG8yR/

Script:

function top() { 
    document.getElementById('top').scrollIntoView();  
}; 

function bottom() { 
    document.getElementById('bottom').scrollIntoView(); 
    window.setTimeout(function() { top(); }, 2000); 
}; 

bottom(); 

HTML:

<div id="top">top</div> 
<div id="bottom">bottom</div> 

CSS:

#top { 
    border: 1px solid black; 
    height: 3000px; 
} 

#bottom { 
    border: 1px solid red; 
} 
+0

Giải pháp này phù hợp với tôi trong IE chứ không phải Chrome. Bất kỳ ý tưởng? – jfritz42

+1

Thông tin khác: nó hoạt động trong Chrome khi tải trang đầu tiên nhưng không hoạt động trên làm mới. Tôi nghĩ rằng đó là do lỗi này: https://code.google.com/p/chromium/issues/detail?id=280460. Nếu tôi làm mới trang hoạt động, nghĩa là nhấp vào thanh URL và nhấn enter. Tuy nhiên, các cài đặt lại mềm như làm mới trang hoặc nhấp vào nút làm mới (hoặc nhấn F5) sẽ không hoạt động. – jfritz42

0

function scrollpage() { \t \t 
 
\t function f() 
 
\t { 
 
\t \t window.scrollTo(0,i); 
 
\t \t if(status==0) { 
 
    \t \t \t i=i+40; 
 
\t \t \t if(i>=Height){ \t status=1; } 
 
\t \t } else { 
 
\t \t \t i=i-40; 
 
\t \t \t if(i<=1){ \t status=0; } // if you don't want continue scroll then remove this line 
 
\t \t } 
 
\t setTimeout(f, 0.01); 
 
\t }f(); 
 
} 
 
var Height=document.documentElement.scrollHeight; 
 
var i=1,j=Height,status=0; 
 
scrollpage(); 
 
</script>
<style type="text/css"> 
 

 
\t #top { border: 1px solid black; height: 20000px; } 
 
\t #bottom { border: 1px solid red; } 
 

 
</style>
<div id="top">top</div> 
 
<div id="bottom">bottom</div>

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