2012-05-16 108 views
8

我分離出的最讓我可以在我的代碼到這個:http://jsfiddle.net/uXVWu/Scrollto滾動時

HTML:

<a id="stopHere" >Hi !</a> 
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 

JS:

var theAnchor=document.getElementById("stopHere"); 
var tempX,tempY; 

function stopScroll(e) 
{ 
    var c=parseInt(document.getElementById('stopHere').offsetWidth); 
    var d=parseInt(document.getElementById('stopHere').offsetHeight); 
    if(tempX<=c&&tempY<=300+d&&0<=tempX&&300<=tempY)window.scrollTo(0,200); 
} 

function update(e) 
{ 
    var doc=document.documentElement; 
    var body=document.body; 
    tempX=(e.pageX)?e.pageX:e.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0); 
    tempY=(e.pageY)?e.pageY:e.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0); 
} 

window.onscroll=stopScroll; 
window.onmousemove=update; 

CSS:

#stopHere 
{ 
    float:left; 
    width:100%; 
    border:1px solid black; 
    text-align:center; 
} 

什麼該程序如果光標位於<a>上,則您滾動,<a>將位於頂部。我想要的是你滾動它,它在頂部。它如何運作?

+2

可能的重複:http://stackoverflow.com/questions/2907367/have-a-div-cling-to-top-of-screen-if-scrolled-down-past-it – Richard

+0

您可以重複所需的結果,也許還有幾個字 - 我無法理解你想要存檔的內容,所以目前我無法提供幫助...... – Chris

+0

這意味着你繼續滾動,同時光標經過錨點。 – user1365010

回答

2

你的意思是這樣的:http://jsfiddle.net/GTSaz/1/

所以,如果,當你滾動,你的鼠標移動到該元素的滾動將在此跳下有元素在視口的頂部(0,300案件)。

另外,如果你不想硬編碼位置(0,300),那麼你可以在腳本中檢測,看http://www.quirksmode.org/js/findpos.html

2

如果我理解正確的話,你可以在頂部設置它頁面更簡單,使用類似:

document.getElementById('stopHere').style.position="fixed" 
document.getElementById('stopHere').style.top="0" 
0

我不太確定你想要什麼。你想要一個fixed股利或window.scroll(0,0)

但是,我已經結合你的和亞當的代碼,以解決方案的情況。

http://jsfiddle.net/c3CJF/1/

標記:

<a id="stopHere" >Hi !</a> 
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 

CSS:

#stopHere 
{ 
    position:absolute; 
    top:300px; 
    left:0px; 
    width:100%; 
    border:1px solid black; 
    text-align:center; 
} 

的Javascript:

var theAnchor=document.getElementById("stopHere"); 
var tempX,tempY; 
var docBody = document.body, 
    docEl = document.documentElement, 
    scrollElement = /WebKit/.test(navigator.userAgent) || document.compatMode == 'BackCompat' ? docBody : docEl; 
var lastScrollTop = scrollElement.scrollTop; 
function stopScroll(e) 
{ 
    // Extra check to make if your scroll passes the element on its movement 
    if((scrollElement.scrollTop - lastScrollTop + tempY) >= 300){ 
     window.scrollTo(0,300); 
    } 
    lastScrollTop = scrollElement.scrollTop; 
    var c=parseInt(document.getElementById('stopHere').offsetWidth); 
    var d=parseInt(document.getElementById('stopHere').offsetHeight); 
    /* the if is to test if the mouse is over the anchor */ 
    if(tempX<=c&&tempY<=300+d&&0<=tempX&&300<=tempY)window.scrollTo(0,300); 
} 

function update(e)//to have the x and y of the mouse 
{ 
    var doc=document.documentElement; 
    var body=document.body; 
    tempX=(e.pageX)?e.pageX:e.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0); 
    tempY=(e.pageY)?e.pageY:e.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0); 

} 

window.onscroll=stopScroll; 
window.onmousemove=update; 
相關問題