반응형 동영상 + 동영상의 높이 값에 따라 바뀌는 header css
2022. 5. 3. 10:30ㆍjQuery
*HTML
<header>
<nav>
<ul>
<li>메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
</ul>
</nav>
</header>
<section id="video">
<video autoplay muted loop>
<source src="./video/ex.mp4" type="video/mp4">
</video>
</section>
video, iframe 등 동영상을 링크하는 태그를 부모요소로 감싸준 마크업을 준비
*CSS
/* 헤더 기본 css */
header {
height: 90px;
width: 100%;
position: fixed;
top: 0;
background-color: #fff;
opacity: .8;
transition: all .3s;
z-index: 100;
/* 반응형 동영상 */
#video {
position: relative;
width: 100%;
height: 0;
padding-bottom: 56.25%;
}
#video video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
헤더메뉴
상단에 고정되는 헤더메뉴를 만들 경우 동영상 요소를 넘어 스크롤 됐을 때 투명도를 조절하려 한다
반투명->투명으로 변경하기 위해 opacity값을 지정하고 애니메이션 효과를 주고 싶을 경우 transition을 지정한다.
동영상
부모요소에 포지션을 부여하고 동영상의 비율(16:9)를 맞추기 위해 padding-bottom으로 높이값을 설정해준다.
video태그는 부모요소의 크기에 따라 동적으로 변할 수 있게 만들어준다
보통은 video, iframe 등은 부모요소의 크기에 상관없이 크기를 갖기 때문에 position으로 종속시킨다.
jQuery
$(window).on("scroll",function(){
const videoHeight = $("video").height();
if($(window).scrollTop()>videoHeight) {
$("#header").css({"opacity":"1"});
} else {
$("#header").css({"opacity":"0.8"});
}
});
(header의 바로 아래에 동영상이 출력되는 경우)
window의 scroll이벤트를 이용하여 header의 css를 변경했다
우선 video의 높이값을 변수에 저장한 뒤 윈도우를 스크롤 했을 때의 스크롤값이 video의 높이값보다 커질 경우 header을 불투명하게 하고 아닐경우 반투명하게 하도록 했다.
'jQuery' 카테고리의 다른 글
jQuery)쿠키를 사용하여 하루만 뜨는 모달창 만들기2 (+체크박스) (0) | 2022.11.03 |
---|---|
jQuery 최신 버전 cdn (0) | 2022.08.29 |
jQuery)쿠키를 사용하여 하루만 뜨는 모달창 만들기 + 로딩 시 첫 화면 스크롤 막기 (0) | 2022.05.23 |
클릭한 요소만 css 요소를 추가하는 방법 (.find()) + 클릭했을 때 특정 요소만 보여지기 (0) | 2022.04.20 |
slideToggle 중복실행 시 (0) | 2022.04.07 |