본문 바로가기
개발/Html, Css

[css] 반응형 16:9 비율 유지 박스 컨텐츠 영상 삽입

by 코딩하는 갓디노 2021. 6. 4.

16대 9 유튜브 영상 삽입

 

16:9의 비율을 유지하는
이미지, 컨텐츠 영역을 만듭니다.

 

웹 또는 앱에 유튜브 영상 화면을 삽입할 경우,
유튜브 영상의 비율(영상 화면 삽입 이미지 사이즈)인 16대 9의 비율로 영역을 만들어 컨텐츠를 삽입니다.

css에서 부모 요소와 padding-top 속성을 이용하여 너비와 높이를 일정 비율로 하는 크기의 박스를 만들 수 있습니다.
이런 방법으로 유튜브 영상 사이즈 16:9 비율 크기의 요소를 만들어 사이트에 삽입할 수 있습니다. 

일정 비율 크기 설정 예제

html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div class="container">
    <div class="item"></div>
  </div>
</body>
</html>

 

css

.container {
  width: 400px;
  background-color: gold;
}
.item {
  width: 100%;
  height: 0;
  padding-top: 50%;
}

 

화면

 

해당 요소에 height: 0; padding-top: 50% 을 주면 높이가 200px인 영역이 표시됩니다.
padding 속성의 특징은 요소의 크기를 늘려줍니다. padding-top에 일정 수치의 퍼센트를 주면
부모 요소의 width를 기준으로 수치만큼 늘어나게 됩니다.

이 예제에서는 부모 요소의 너비가 400px이기 때문에 높이가 50%인 200px이 되게 됩니다.
즉, 너비와 높이가 2:1의 비율을 박스가 생겼습니다.

 

유튜브 영상 사이즈 16:9비율의 크기를 만드는 방법 

부모 요소 { width: 특정 수치px }
해당 요소 {
  width: 100%;
  height: 0;
  padding-top: 56.25%; //56.25-> 100% : 56.25% = 16 : 9
}

 

다른 비율 계산

16:9 비율이 아닐 경우, 사이즈에 맞게 비율을 조정할 경우는 calc로 계산 공식을 입력합니다. 

padding-top {calc(세로/가로) * 100};} 

 

16:9 비율의 박스 안에 컨텐츠 가운데 삽입

유튜브 삽입시 일반적인 너비 560px에 맞추어 삽입하고,
컨텐츠가 브라우저의 가운데에 위치합니다. 

html

<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>Document</title>
  </head>

  <body>
    <div class="wrap">
      <div class="container">
        <div class="video">
       		<iframe width="560" height="315" src="https://www.youtube.com/embed/...></iframe>
        </div>
      </div>
    </div>
  </body>

</html>

 

css

video선택자는 비디오 컨텐츠가 들어가기 때문에, container와 video 사이에  요소가 추가로 필요합니다.

style을 위해서 필요한 요소라면 html 코드 내에 요소를 추가 생성할 필요 없이,
css 내에서 가상 요소 선택자(::before) 이용해 마크업 합니다.

.wrap {
  position: relative;
  height: 300px;
  background-color: skyblue;
  overflow: hidden; //포토샵의 마스크 기능처럼 높이 300px에 맞게 비디오 컨텐츠가 넘치는 부분은 잘려나감
}

.container {
  width: 560px; //<iframe> 태그로 영상 삽입시 유튜브 너비
  background-color: gold;
  position: absolute;
  left: 50%; //수평 가운데 정렬
  margin-left: calc(560px/-2);
  top: 50%; //수직 가운데 정렬
  margin-top: calc(560px*9/16/-2);
}

.container::before {
  //html 요소 추가 없이 css에 가상요소 선택자 사용
  content: "";
  display: block; //가상 요소는 inline 요소이므로 크기 지정을 위해 block으로 변경
  width: 100%;
  height: 0;
  padding-top: 56.25%; //부모 요소 너비를 기준으로 높이 지정
}

.video {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

 

유튜브 영상 삽입시 화면

넓은 화면 시 배경 색상이 skyblue이고, 영상이 가운데에 위치하게 됩니다. 

 

반응형 동작으로 브라우저의 너비가 줄었을 경우, 배경 영역이 줄어들면서 가운데의 영상만 나오게 됩니다. 

 

16대 9 비율 유지하는 반응형 박스

16대 9의 가로 세율 비율을 유지하면서 박스가 유동적으로 크기가 반응하고, 브라우저의 가운데에 위치합니다. 

html

<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>Document</title>
  </head>

  <body>
    <div class="wrap">
      <div class="container">
        <div class="video">
       	  <iframe width="100%" height="100%" src="https://www.youtube.com/embed/...></iframe>
        </div>
      </div>
    </div>
  </body>

</html>

 

css

.wrap {
  position: relative;
  height: 300px;
  background-color: skyblue;
  overflow: hidden;
}

.container {
  width: 100%; //너비 100%에 max-width를 줌
  max-width: 560px;
  background-color: gold;
  position: absolute; 
  left: 0; //수평 가운데 설정
  right: 0;
  margin: 0 auto;
}

.container::before {
  content: "";
  display: block;
  width: 100%;
  height: 0;
  padding-top: 56.25%;
}

.video {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

 

유튜브 영상 삽입시 화면

넓은 화면 시 배경 색상이 skyblue이고, 영상이 가운데에 위치하게 됩니다. 

 

반응형 동작으로 브라우저의 너비가 유튜브의 영상 너비(560px) 보다 줄었을 경우, 유튜브 영상 영역 박스가 16대 9의 비율대로 작아집니다. 

반응형

댓글