css

aspect-ratio

Bittersweet- 2021. 9. 13. 11:46
728x90

이미지 또는 특정 엘리먼트를 정해진 비율로 작게 보이거나 크게 보이게 하고 싶을 때 특히, 이미지가 img 태그가 아닌 background를 사용할 경우, 유용하게 사용됨.

 

padding-top 또는 padding-bottom을 이용하는 방법

container 요소에 적용된 width의 값을 기준으로 inner에 padding-top 또는 bottom을 지정해줌.

* 이 방법을 사용하기 위해서는 하나의 조건과 다른 하나의 엘리먼트가 필요함 (즉 아래 예제와 같이 container 요소와 하위 요소가 필요)

<div class="container">
  <div class="inner"></div>
</div>

 

예제

1:1 Aspect Ratio (height equal to width)

.container {
  background-color: red;
  width: 100%; 
}

.inner {
  padding-top: 100%; /* 1:1 aspect ratio */
}

calc() 사용

.container {
  background-color: red;
  width: 200px;
}

.inner {
  paddint-top: calc(200px * 0.3); /* 30% 적용 */
}

16:9 비율 적용

.inner {
  padding-top:calc(200px / 16*9); /* 고정 px 뿐 아니라 %도 입력 가능 */
}

 

inner 안에 텍스트 작성 (inner 태그 안에 text라는 클래스를 가진 하위요소를 추가)

.container {
  width: 200px;
}

.inner {
  padding-top: 50%;
  position: relative;
}

.text {
  position: absolute;
  topo:0;
  left:0;
}

 

알아두면 좋은 비율 예시

4:3  = (3 ÷ 4 = 0.75) = 75% (the universal video format of the 20th century)

16:9 = (9 ÷ 16 = 0.5625) = 56.25% (universal for HD television and European digital television, and default for Youtube video)

 

미디어쿼리에 활용할 경우, 설정된 비율에 따라 보여지는 ui를 개별 설정할 수 있음.

/* Minimum aspect ratio */
@media (min-aspect-ratio: 8/5) {
  div {
    background: #9af; /* blue */
  }
}

/* Maximum aspect ratio */
@media (max-aspect-ratio: 3/2) {
  div {
    background: #9ff;  /* cyan */
  }
}

/* Exact aspect ratio, put it at the bottom to avoid override*/
@media (aspect-ratio: 1/1) {
  div {
    background: #f9a; /* red */
  }
}

* 현재까지는 aspect-ratio : 16 / 9를 클래스 또는 태그의 값으로 적용할 경우, IE 와의 호환이 되지 않는다. (미디어쿼리의 조건으로는 사용 가능하므로 사용 시 유의할 것)

'css' 카테고리의 다른 글

scroll-snap-type / scroll-snap-align  (0) 2021.09.13
@supports (selector() 포함)  (0) 2021.09.13
다시 보아야할 CSS  (0) 2021.09.01
pointer-events:none;  (0) 2020.09.04
unicode range 사용  (0) 2020.09.01