的頂部我有一個是從瀏覽器窗口的頂部定位在100px的一個div
。當用戶向下滾動時,我想讓div
保持在的位置,直到它到達屏幕的頂部。然後,我將使用JQuery更改一些CSS,以便將位置更改爲固定值,並將margin-top設置爲0.如果此div
位於屏幕的頂部,我如何在JQuery中進行測試?測試在JQuery的元素是否在屏幕
28
A
回答
49
var distance = $('div').offset().top,
$window = $(window);
$window.scroll(function() {
if ($window.scrollTop() >= distance) {
// Your div has reached the top
}
});
P.S.爲了獲得更好的性能,您應該可以調節滾動事件處理程序。
查看John Resig的文章:Learning from Twitter。
2
沒有太多的答案,但可能有助於其他人。使用上面接受的答案,並參考「從Twitter學習」鏈接(謝謝@Joseph Sibler),我提出了以下內容。
我使用的是Twitter Bootstrap Navbar我的主導航。它的ID爲megamenu
。
我也有我的頁面上的「登錄」按鈕,單擊時,滑動導航欄和下方下來的所有內容以顯示登錄表單。所以呢?那麼,現在我的導航欄的位置已經改變了,如果我沒有更新那個位置,當我滾動導航欄時,它將飛到瀏覽器的頂部 - 儘管它並不是真正的頂部。
我想出了這個更新導航欄位置,如果用戶點擊「登錄」,然後滾動,導航欄將正確自身固定在頂部。
logincollapse
是我的容器div,它保存登錄表單和其他隱藏內容,直到點擊了login
按鈕。
我敢肯定有改進的餘地 - 所以請大家指正,我會相應地更新。
jQuery的
var did_scroll = false,
$window = $(window),
megamenu_distance = $('#megamenu').offset().top; // The default position of the navbar
$('#logincollapse').slideToggle(300, 'easeInOutQuint', function() {
megamenu_distance = $('#megamenu').position().top; // Updated position of the navbar
....
});
$window.scroll(function (event) {
did_scroll = true;
});
setInterval(function() {
if (did_scroll)
{
did_scroll = false;
if ($window.scrollTop() >= megamenu_distance)
{
$('#megamenu').addClass('navbar-fixed-top');
}
else
{
$('#megamenu').removeClass('navbar-fixed-top');
}
}
}, 250);
0
當你有頭
。然後放在一邊吧。用於固定一邊吧,當它在屏幕的頂部:
的Javascript:
var scroll_happened = false;
var aside_from_top = $('aside').offset().top;
$window = $(window);
$window.scroll(function()
{
scroll_happened = true;
});
setInterval(function()
{
if(scroll_happened == true)
{
scroll_happened = false;
if($window.scrollTop() >= aside_from_top)
{
$('#aside_container').addClass('fixed_aside');
}
else
{
$('#aside_container').removeClass('fixed_aside');
}
}
} , 250);
的CSS:
.fixed_aside
{
position: fixed;
top: 0;
bottom: 0;
}
HTML:
<aside>
<div id="aside_container">
<section>
</section>
<section>
</section>
<section>
</section>
</div>
</aside>
0
嘿,你可以這樣做這個:
var distance = $('.yourclass').offset().top;
$(window).scroll(function() {
if ($(this).scrollTop() >= distance) {
console.log('is in top');
} else {
console.log('is not in top');
}
});
-1
$(document).ready(function(){
var $doc = $(document);
var position = 0;
var top = $doc.scrollTop(); // 현재 스크롤바 위치
var screenSize = 0; // 화면크기
var halfScreenSize = 0; // 화면의 반
/* 사용자 설정 값 시작 */
var pageWidth = 1000; // 페이지 폭, 단위:px
var leftOffet = 409; // 중앙에서의 폭(왼쪽 -, 오른쪽 +), 단위:px
var leftMargin = 909; // 페이지 폭보다 화면이 작을때 옵셋, 단위:px, leftOffet과 pageWidth의 반만큼 차이가 난다.
var speed = 1500; // 따라다닐 속도 : "slow", "normal", or "fast" or numeric(단위:msec)
var easing = 'swing'; // 따라다니는 방법 기본 두가지 linear, swing
var $layer = $('#quick'); // 레이어 셀렉팅
var layerTopOffset = 140; // 레이어 높이 상한선, 단위:px
$layer.css('z-index', 10); // 레이어 z-인덱스
/* 사용자 설정 값 끝 */
// 좌우 값을 설정하기 위한 함수
function resetXPosition()
{
$screenSize = $('#contact').width(); // 화면크기
halfScreenSize = $screenSize/2; // 화면의 반
xPosition = halfScreenSize + leftOffet;
if ($screenSize < pageWidth)
xPosition = leftMargin;
$layer.css('left', xPosition);
}
// 스크롤 바를 내린 상태에서 리프레시 했을 경우를 위해
if (top > 0)
$doc.scrollTop(layerTopOffset+top);
else
$doc.scrollTop(0);
// 최초 레이어가 있을 자리 세팅
$layer.css('top',layerTopOffset);
resetXPosition();
// 윈도우 크기 변경 이벤트가 발생하면
$(window).resize(resetXPosition);
// 스크롤이벤트가 발생하면
$(window).scroll(function(){
yPosition = $doc.scrollTop() + layerTopOffset;
$layer.animate({"top":yPosition }, {duration:speed, easing:easing, queue:false});
});
});
+0
你可以解釋你添加或改變了什麼? – lalithkumar
相關問題
- 1. jQuery的:測試是否元素在屏幕上
- 2. 測試元素是否存在jquery
- 3. 確定元素是否在屏幕上
- 4. 當元素在屏幕上可見時測試
- 5. 測試是否屏幕是開/關在iphone
- 6. 檢測對象是否在屏幕上
- 7. 確定iframe中的元素是否在屏幕上可見
- 8. 如何檢查元素是否在屏幕上
- 9. 檢查元素是否在屏幕上與斷言,NoSuchElementException發生
- 10. 屏幕閱讀器是否可以在DIV元素中「鎖定」?
- 11. 如何知道html元素是否在屏幕上?
- 12. 如何知道元素是否在屏幕上?
- 13. 的jQuery:輸入變量測試是否是DOM元素
- 14. PowerShell的:測試在網頁是否存在一個元素
- 15. 在android xml屏幕外的元素
- 16. 測試div是否沒有元素
- 17. 測試元素是否爲數組c
- 18. 測試對象是否爲DOM元素
- 19. 在jQuery中,如何測試一個元素是否是同一類的多個元素中的第一個?
- 20. 測試一個元素是否與jQuery具有某個類
- 21. 元素寬度:100%在屏幕外
- 22. 不在屏幕上時丟失元素
- 23. MoveToElement元素剛剛在屏幕上時
- 24. 在屏幕中心定位div元素
- 25. 在屏幕上放置一個元素
- 26. 在屏幕上顯示div元素
- 27. 檢查元素在屏幕上
- 28. 如何在屏幕上定位元素?
- 29. 測試像素是否在blob中forxOpenCV
- 30. 在測試過程中是否有任何解鎖手機屏幕的方法?
我可以把一個像素#進行距離是多少? –
@Hubrid - 好的。請確保不要包含字母'px',因爲您希望它是一個數字。 –