scroll 이벤트 질문입니다!
본문
마우스 내릴때는 헤더를 없애고 올릴때 나타내기 위해서
$(document).on("mousewheel", function (e) {
const wheel = e.originalEvent.wheelDelta;
const header = $("header");
if (wheel > 0) {
header.removeClass("fixed");
} else {
header.addClass("fixed");
}
});
이렇게 코드를 줬는데요 이 이벤트는 잘 먹히는데
top button을 눌려 scroll의 위치를 0으로 했을때 헤더가 나타나지 않습니다
if (scrollTop >= 0) {
header.removeClass('fixed'); css: header {top:0;} header.fixed {top:-100%;}
} 를 줘도 안나타나네요ㅜㅜ 마우스 내리다가 top button누르면 안나타나네요 반드시 마우스를 위로 올려야만 나타납니다 어떻게 하면 좋을까요?!
답변 3
<!DOCTYPE html>
<html>
<head>
<style>
.navi {
background-color: #000;
color: #fff;
position: fixed;
top: 0;
width: 100%;
}
.fixed {
top: -100%;
}
.wrap {
height: 1024px;
}
</style>
<script src="http://code.jquery.com/jquery.min.js"></script>
<script>
$(function () {
let scrolltop_before = 0;
let scrolltop_after = 0;
function fn_evt_scroll(e) {
// const wheel = e.originalEvent.wheelDelta;
const header = $("header");
scrolltop_after = document.documentElement.scrollTop;
// if (wheel > 0) {
if (scrolltop_before > scrolltop_after) {
header.removeClass("fixed");
} else {
header.addClass("fixed");
}
scrolltop_before = document.documentElement.scrollTop;
}
// $(document).on("mousewheel", fn_evt_scroll);
$(window).on("scroll", fn_evt_scroll);
});
</script>
</head>
<body>
<header class="navi">
<nav>
<ul>
<li>123</li>
<li>456</li>
<li>789</li>
</ul>
</nav>
</header>
<div class="wrap"></div>
<div>123<a href="#">top</a></div>
</body>
</html>
$(window).on('scroll', function() {
let header = $("header");
if ($(window).scrollTop() > 50) {
header.addClass("fixed");
} else {
header.removeClass("fixed");
}
});
$(function () {
let scrolltop_before = 0;
let scrolltop_after = 0;
function fn_evt_scroll(e) {
const header = $("#gnb");
scrolltop_after = document.documentElement.scrollTop;
if (scrolltop_before > scrolltop_after) {
$('#gnb').css({
"position": "fixed",
"top": "0",
"display": "block",
"width": "100%",
"z-index" : "10000"
});
$('#wrapper').css({
"padding-top":"30px"
});
} else {
$('#gnb').css({
"display": "block",
"position": "relative",
"z-index" : "10000"
});
$('#wrapper').css({
"padding-top":"30px"
});
}
if (scrolltop_after < 1) {
$('#gnb').css({
"display": "block",
"position": "relative",
"z-index" : "10000"
});
}
scrolltop_before = document.documentElement.scrollTop;
}
$(window).on("scroll", fn_evt_scroll);
});
답변을 작성하시기 전에 로그인 해주세요.