내가 새로 왔을 때 다른 답변에 대해서는 언급 할 수 없습니다.
누군가이 작업을 수행 할 수있는 답변을 찾고 있다면 (현재 자바 스크립트를 사용할 수있는 것처럼 보일 수 있습니다)이 접근법은 나에게 매우 효과적이며 모바일 방향 변경도 설명합니다. 예제 코드에는 Jquery를 사용하지만 vanillaJS로 가능해야합니다.
먼저, 스크립트를 사용하여 장치가 터치 또는 호버링되었는지 감지합니다. 베어 본 예제 :
if ("ontouchstart" in document.documentElement) {
document.body.classList.add('touch-device');
} else {
document.body.classList.add('hover-device');
}
그러면 나중에 높이 스크립트에 사용할 수있는 장치 유형 (호버 또는 터치)에 따라 본문 요소에 클래스가 추가됩니다.
다음으로이 코드를 사용하여로드 및 방향 변경시 장치 높이를 설정하십시오.
if (jQuery('body').hasClass("touch-device")) {
//Loading height on touch-device
function calcFullHeight() {
jQuery('.hero-section').css("height", $(window).height());
}
(function($) {
calcFullHeight();
jQuery(window).on('orientationchange', function() {
// 500ms timeout for getting the correct height after orientation change
setTimeout(function() {
calcFullHeight();
}, 500);
});
})(jQuery);
} else {
jQuery('.hero-section').css("height", "100vh");
}
-시간 초과는 장치가 방향 변경시 새 높이를 정확하게 계산하도록 설정됩니다. 시간 초과가 없으면 내 경험상 높이가 정확하지 않습니다. 500ms는 지나친 것이지만 나를 위해 일했습니다.
브라우저가 CSS 100vh를 대체하는 경우 호버 디바이스의 -100vh가 대체입니다.