이미지 가로 세로 비율이 올바르게 완료되었습니다 😍

페이지에 600x200픽셀의 이미지가 있는 경우 해당 크기로 정확하게 표시되지 않을 가능성이 있습니다. 대부분의 경우 너비를 정의하는 컨테이너 안에 넣고 이미지가 width: %100 로 설정되기 때문입니다. 그러나 이 시점에서 이미지의 크기는 그다지 중요하지 않습니다. 중요한 것은 이미지가 로드되면 DOM 리플로우가 발생한다는 것입니다. 충분히 명확하지 않습니까? 예를 들어 살펴보겠습니다.

문제



이것을 실제로 봅시다. Glitch을 사용하여 신속하게 데모를 만들겠습니다. 3개div가 필요합니다. 그 중 2개는 텍스트를 포함하고 그 사이에 이미지를 포함합니다.

<head>
  <title>Image aspect ratio</title>
  <style>
    .image-container {
      width: 500px;
    }

    img {
      width: 100%;
    }
  </style>
</head>
<body>
  <h1>Image aspect ratio done right</h1>

  <div >
    <p>
      This is the first bit of text here!
    </p>        
  </div>

  <div class="image-container">
    <img src="https://www.hindustantimes.com/rf/image_size_960x540/HT/p2/2018/09/08/Pictures/_7ae928c8-b34e-11e8-bb15-a1f88311a832.jpg"
          width="960" height="540"/>
  </div>

  <div>
    <p>
      This is the second bit of text here!
    </p>  
  </div>
</body>


this Glitch app에서 전체 페이지를 볼 수 있습니다.

지금 느린 네트워크에서 사이트를 로드하면(고속 네트워크에서는 큰 차이를 볼 수 없음) 페이지가 다음과 같이 로드됩니다.



먼저 두 단락이 서로 가깝게 표시되고 네트워크 요청이 완료되면 이미지가 간격을 채우고 DOM 리플로우가 수행되어 두 번째 단락을 아래로 밀어냅니다. 얼마나 슬플까😥?

솔루션 #1



가장 먼저 할 수 있는 일은 이미지 높이를 auto 로 설정하는 것입니다. 이것은 FireFox와 Chrome에 도입된 새로운 기능입니다. 이렇게 하면 이미지 속성에서 메타데이터를 찾아 필요한 높이를 계산하고 해당 공간을 예약하도록 브라우저에 지시합니다. 따라서 우리가 해야 할 일은 다음과 같습니다.

<style>
  img {
    width: 100%;
  }
</style>


그리고 동일한 네트워크에서 페이지를 다시 로드합니다. 페이지가 다음과 같이 로드되는 것을 볼 수 있습니다.



얼마나 좋은가요 😍?

솔루션 #2



well aspect-ratio 이라는 새로운 CSS 속성을 도입하는 new proposal in a draft state 이 있습니다. 이를 통해 속성을 img 태그에 추가하고 widthheight 속성을 사용하여 예약할 공간을 브라우저에 알릴 수 있습니다.

img {
  aspect-ratio: attr(width) / attr(height);
}


많은 사람들이 이미 이미지에 widthheight 속성을 넣었기 때문에 매우 간단하고 읽기 쉬우며 웹에 있는 대부분의 이미지를 지원한다는 이점이 있습니다.

반면에 HTML과 CSS로 시작하는 주니어 개발자는 무슨 일이 일어나고 있는지, 어떤 일을 제대로 하기 위해 해야 할 일이 얼마나 적은지 이해하는 데 아무런 문제가 없습니다.

이것은 Firefox, Chrome 및 Edge에서 구현되었습니다.

요약



이미지 종횡비를 얻는 것은 특히 사이트의 사용자 경험에 영향을 미치는 경우 매우 중요합니다. 따라서 해당 문제를 해결하는 방법을 아는 것도 중요합니다. 이 기사를 즐기셨기를 바라며 다음 시간까지 👋🏼.

좋은 웹페이지 즐겨찾기