일단 margin 싹 걷어내야지 body나 html height:100% 잘 먹음
그래도 원하는 부분 보다 오버레이 부분이 짧다면
$("#block_bg").css({
"height": scrollHeight + $("#footers").outerHeight() + $("#headers").outerHeight(),
// "height": "1288px",
})
이런 식으로 헤더랑 푸터 따로 높이를 더해보는 것도 방법.
window.addEventListener('scroll', function(){
console.log(window.scrollY)
});
*jquery Ver
$(window).scroll(function(){
console.log($(window).scrollTop());
// console.log($(window).height());
});
*TEST
$(window).scroll(function(){
console.log("scroll left" + $(window).scrollLeft());
console.log("scroll top" + ($(window).scrollTop()));
console.log("window height" + $(window).height());
console.log("for scrollHeight: " + scrollHeight);
});
let scrollHeight = Math.max(
document.body.scrollHeight, document.documentElement.scrollHeight,
document.body.offsetHeight, document.documentElement.offsetHeight,
document.body.clientHeight, document.documentElement.clientHeight
);
console.log('스크롤에 의해 가려진 분을 포함한 전체 문서 높이: ' + scrollHeight);
$(window).scroll(function(){
$(".img_detail_view").css({
// "top": (($(window).height() - $(".img_detail_view").outerHeight()) / 2 + $(window).scrollTop()) + "px",
// "left": (($(window).width() - $(".img_detail_view").outerWidth()) / 2 + $(window).scrollLeft()) + "px",
"top": ($(window).height() / 2 + $(window).scrollTop()) + "px",
"left": ($(window).width() / 2 + $(window).scrollLeft()) + "px",
});
})
// 이런식으로 센터로 따라오도록 마무리 했다 (like sticky effect)
--
외부 라이브러리 사용 할 필요없을 듯
https://ko.javascript.info/size-and-scroll-window
https://qjadud22.tistory.com/7
갤러리 기존 그리드(1fr 1fr 1fr)형식에서 모바일로 가면
flex colume으로 세로로 출력 되게 했더니
window 창크기보다 모바일 창이 3배나 길어지게 된다.
위와 같이 scrollTop으로 계산하는 것 보다
사진과 함께 오버레이도 같이 이동하는 방식으로 적용해본다.
CSS part
#block_bg {
display: none;
cursor: pointer;
background-color: black;
opacity: 0.5;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
/* height: 100%; */
/* height: 165vh; */
z-index: 900;
/*
================================
** 새롭게 센터로 보내도록 유도 **
================================
*/
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.img_detail_view {
cursor: pointer;
display: none;
position: absolute;
/* position: sticky; */
z-index: 999;
max-width: 1000px;
max-height: 1000px;
/* width: 100%;
height: auto; */
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
JS part
$("#block_bg").css({
"height": scrollHeight + $("#footers").outerHeight() + $("#headers").outerHeight(),
})
$(window).scroll(function(){
$(".img_detail_view").css({
"top": ($(window).height() / 2 + $(window).scrollTop()) + "px",
"left": ($(window).width() / 2 + $(window).scrollLeft()) + "px",
});
$("#block_bg").css({
"top": ($(window).height() / 2 + $(window).scrollTop()) + "px",
"left": ($(window).width() / 2 + $(window).scrollLeft()) + "px",
})
})
$("#block_bg").css({
"top": ($(window).height() / 2 + $(window).scrollTop()) + "px",
"left": ($(window).width() / 2 + $(window).scrollLeft()) + "px",
})
최대 높이 없이 무한히 길어지게 끔 작성해 버림
css max-height나 jquery상에서 막아야하는데 어차피 이러면
높이를 쫓아가야함.
add this in overlay css
max-height: 100vh;
스크롤 시에 딱딱 끊겨서 맘에 안들지만 일단 원하는 기능으로는 작동..
transition을 줘볼지 딴 방법이 있을지..
머리 굴리는 중