jquery 함수에 문제가 있습니다. 여기에서 작동하는 데모를 볼 수 있습니다 - http://dev.sreejesh.in/menuissue/. 사용자가 페이지를 스크롤 할 때 볼 수 있듯이 스크롤 픽셀을 검사하기 위해 jQuery 함수 (스크롤 할 때 trigger 함수)를 작성했습니다. 브라우저가 특정 픽셀 (사이드 메뉴 블록 높이)로 스크롤하면 Menu 블록은 고정 된 상태로 계속 콘텐츠의 & 고정 스크롤됩니다.jQuery - on window 스크롤 지연없이 함수를 실행하십시오.
기능이 작동하지만,이 기능을 실행하면 menublocks가 점프됩니다. 나는 이것이 기능을 실행하는데 지연이 있다고 생각한다. 이 문제를 해결하기위한 멋진 트릭이 있기를 바랍니다.
if/else 함수를 사용하여 스크롤 픽셀을 확인하므로 스크롤 된 픽셀이 menublock 높이보다 클 때 "고정"클래스가 추가됩니다.
다음 코드를 사용합니다. ,
#menubar{
position: fixed;
}
그냥 구글 크롬에서 테스트 :
HTML
<div id="globalwrapper">
<div id="menubar">
---- Menu List items-----
</div>
<div id="mainblock">
----Main content area----
</div>
</div>
jQuery를
$(document).ready(function(){
$(window).scroll(function() {
adjustScroll();
});
});
function adjustScroll(){
var windowHeight = $(window).height();
var menublockHeight = $('#menubar').height();
var scrollValue = $(document).scrollTop();
var posValue = menublockHeight - windowHeight;
var menuStatus = $('#menubar').css('left');
$('#menubar').css('minHeight', windowHeight);
$('#menubar').css('height', menublockHeight);
console.log(menuStatus);
$(document).scroll(function() {
if(menuStatus == '0px') {
if(scrollValue > posValue){
$('#menubar').addClass('fixed');
$('#menubar').css('marginTop', -posValue);
}else {
$('#menubar').removeClass('fixed');
$('#menubar').css('marginTop', '0px');
}
}
});
}
아니요. 나는 이미 고정 된 클래스를 사용한다. 고정 된 위치는 고정되어있다 : fixed. 문제는 jquery가 클래스 적용을 지연시키는 것입니다. – Sree
자바 스크립트를 통하지 않고이 속성을 직접 사용하는 것을 의미합니다. –
특정 픽셀을 스크롤 한 후에 만 menublock을 고정해야합니다. 그래서 나는 자바 스크립트를 피할 수 없다. – Sree