2012-01-07 14 views
26

私はこのウェブサイトに似ホームページに関する500pxなどダウンし、後に各ページを開始しようとしている:http://unionstationdenver.com/HTMLページを自動的にスクロールする方法は?

あなたは、ホームページの後にページを表示したとき、あなたは予告なしに自動的にスクロールダウンしているが、あなたがよりできるわかりますおすすめのスライダーをもう一度表示するには上にスクロールします。

私はscrolledHeightでプレイしましたが、私はそれが私の必要と考えるものではありませんか?

基本的には、すべてのコンテンツページの上にあるおすすめセクションがありますが、上にスクロールするまではこのセクションを表示できません。どんな助け?

+0

あなたはこれを見てみたいことがあります。 http://stackoverflow.com/questions/8773405/how-to-auto-scroll-to-target-div-with-jquery/8773563#8773563 – pixelass

+0

Sweet!私の唯一の懸念は、スクロールのアニメーションがまだ見えていることです。だから私がクリックした各ページは、最初の500ピクセルを読み込み、その下のコンテンツにスクロールします。それはユーザーに迷惑をかけることになります。思考? – Hambone

答えて

1

document.scrollTopを使用して、ドキュメントの位置を変更します。 documentscrollTopをサイトのおすすめセクションのbottomに設定してください。

+0

scrollTopはDOM要素にのみ適用され、文書には適用されません – Luca

+1

'scrollTop'はDOMの一部として文書上で動作します –

2

これを実現するには、2つの方法があります。

最初はjavascriptを使用しています:スクロール可能な要素のscrollTopプロパティを設定してください(例:document.body.scrollTop = 1000;)。

ページの特定のIDを指すようにリンクを設定しています。

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

ターゲットページにそのIDがある場合、そのページは自動的にスクロールされます。

+0

最初の手法では、どのようにして特定の要素の位置? – Wex

+0

はい、私はアンカーをすることについてそれを持っていますが、それが最後の手段です。私はこれらの人たちがhttp:// unionstationdenverをどうやって行ったかは分かりません。com/ – Hambone

+1

@Wexを普通のjavascriptで使うと、ドキュメント内の要素の位置を次のように見つけることができます: 'var topPosition = document.getElementById(" myElement ")。offsetTop;' – Luca

40

これには.scrollIntoView()を使用できます。特定の要素がビューポートに表示されます。

例:

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

デモ:http://jsfiddle.net/ThinkingStiff/DG8yR/

スクリプト:

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

このソリューションはIEの下では動作しますが、Chromeでは動作しません。何か案は? – jfritz42

+1

詳細情報:最初のページの読み込み時にChromeで動作しますが、更新時には動作しません。このバグの原因はhttps://code.google.com/p/chromium/issues/detail?id=280460だと思います。ページをハードリフレッシュすると、URLバーをクリックしてEnterキーを押します。しかし、ページをリフレッシュするか、リフレッシュボタンをクリックする(またはF5を押す)ようなソフトリセットは機能しません。 – 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>

関連する問題