[Day 15] 반응형 웹 image + iframe + video + media query
반응형 웹 이미지
<div class="rwd-container">
<img class="rwd-img" src="../images/normal.jpg" alt="반응형 학습 예시">
</div>
.rwd-container {
width: 50%;
background: yellow;
}
.rwd-img{
max-width: 100%;
height: auto;
}
고해상도 콘텐츠 이미지
-
srcset-pixel-ratio
<div class="rwd-container"> <img class="rwd-srcset-img" src="../images/image-src.png" alt="고해상도 콘텐츠 이미지 예시" srcset="../images/image-1x.png 1x, ../images/image-2x.png 2x, ../images/image-3x.png 3x, ../images/image-4x.png 4x"> </div>
- 해상도 배율에 따라 이미지를 선택한다.
-
srcset-sizes(srcset & sizes)
<div class="rwd-container"> <img class="rwd-srcset-img" src="../images/normal.jpg" alt="고해상도 콘텐츠 이미지 예시" srcset="../images/small.jpg 550w, ../images/medium.jpg 1024w, ../images/large.jpg 1600w" sizes="550px, 1024px, 1600px"> <!-- sizes="(max-width: 999px) 50vw, 100vw" --> </div>
- 1배율일 경우 해당 srcset에 정해진 사이즈 구간별로 정확하게 바뀐다.
- 2배율 이상일 경우 viewport 사이즈에 배율을 곱한 사이즈와 가장 가까운 크기의 이미지를 찾는다.
- sizes 속성을 지정할 경우 해당 사이즈 구간별로 정확하게 바뀐다.
-
<picture>
- picture 요소는 반드시
<img>
요소를 하나 이상 가져야 한다. - picture 요소를 반응형으로 크기 조절하고 싶다면
<picture>
가 아닌 내부의<img>
요소에 css 를 적용해야 한다. <source>
는 선택적으로 사용하는 요소이고, srcset 속성을 지정해서 사용할 수 있다.<source>
요소에 media 속성을 지정해서 media-query 처럼 구간을 설정할 수 있다.
- picture 요소는 반드시
반응형 배경 이미지
<div class="rwd-container">
<div class="rwd-bg">
<!-- 배경 이미지가 보여질 영역 -->
</div>
</div>
.rwd-container {
width: 50%;
}
.rwd-bg {
background-color: yellow;
background-image: url("../images/title.png");
background-repeat: no-repeat;
background-position: 0 0;
/* background-size: 100% 100%; 배경 이미지를 영역 안에 채우기 위해 크기를 줄이거나 늘린다. */
/* background-size: cover; 배경 영역을 채우고 나머지는 잘라낸다. */
/* background-size: contain; 이미지를 배경 영역 안에 온전히 채운다. */
background-size: contain;
width: 100%;
height: 0;
padding-top: 90%; /* 부모(.rwd-container) 크기(width)의 50% 만큼 차지한다. */
transition: all 2s;
}
iframe
- iframe은 html 문서 내부에 새로운 공간(문서)을 만든다. (inline-frame 형태)
- 보통 동영상이나 지도를 iframe 형태로 제공하는 경우가 많다.
video
-
<video>
- video tag 내부에
<source>
태그를 쓰고 src 속성을 사용해 영상을 링크시킨다. <track>
태그를 이용해 자막도 달 수 있다.<a>
태그를 활용해 대체 텍스트를 달 수 있다.
<div class="rwd-container"> <video autoplay controls poster="../media/poster.jpg" muted> <source src="../media/stories.mp4"> <track src="../media/stories-en.vtt" kind="captions" srclang="en" label="English Caption"> <a href="../media/stories.mp4">구글 개발자 이야기</a> </video> </div>
-
video file type
- mp4 (대다수의 브라우저에서 재생 가능)
- mov
- ogg
- vtt (웹 자막 파일)
- webm
-
video tag에
autoplay
속성을 사용하지 않으면 chrome에서는 재생되지 않는다.- chrome 에서는 영상에 autoplay 되면 screen reader 에서 읽어주는 정보와 겹치기 때문에 접근성 차원에서 정책적으로 자동재생이 되지 않도록 막아놓았다.
-
속성들
- autoplay 속성 : 자동 재생
- controls 속성 : 영상을 제어할 수 있는 기능을 제공
- poster=”href” 속성 : 포스터 이미지를 띄워준다.
- muted 속성 : 음소거
-
반응형 비디오 콘텐츠
body { margin: 0; } .rwd-container { width: 50%; background: yellow; } .rwd-video { width: 100%; height: auto; }
- video tag 내부에
미디어 쿼리(media query)
-
특정 구간에 CSS를 cascading 시킨다. (덮어 쓴다.)
-
변화가 발생하는 특정 시점을 break-point 라고 한다.
@charset "utf-8"; /* 공통 코드 */ body { background: yellow; } /* 모바일 디바이스 */ @media screen and (min-width: 320px) and (max-width: 480px) { body { background: pink; } } /* 태블릿 디바이스 */ @media screen and (min-width: 481px) and (max-width: 1024px) { body { background: lime; } } /* 랩탑 및 와이드 스크린 디바이스 */ @media screen and (min-width: 1025px) { body { background: skyblue; } }
댓글남기기