크기가 흩어져 있는 이미지를 반응형으로 종횡비를 맞추어 표시시킨다
추가 (2021/10/14)
이 기사의 방법은 오래된 방법입니다.
IE나 과거 버전의 브라우저에 대응하고 싶은 경우에 참고해 주세요.
지금은
aspect-ratio
속성을 사용하십시오.참고 : CSS의 aspect-ratio 속성이 모든 브라우저에서 지원되었습니다. 이미지를 가로 세로 비율로 구현하는 지금과 앞으로의 구현 방법 |
하고 싶은 일
CSS로 이미지를 자르는 방법
CSS로 이미지를 자르려면 ...에서 생각해 내는 것은 2 패턴.
그러나 어느 쪽도 이번에하고 싶은 일을 달성 할 수 없다
object-fit을 사용하는 방법
object-fit - CSS: 캐스케이딩 스타일시트 | MDN
CSS의 object-fit 속성은 대체 요소(예:
<img>
또는 <video>
)와 같은 내용을 컨테이너에 맞추는 방법을 설정합니다.지금 하고 싶은 것이라고 다음과 같이 쓴다.
img {
object-fit: cover;
width: 200px;
height: 150px;
}
cover
라는 값은 종횡비를 유지한 채 요소의 박스에 맞도록 확대 축소된다는 것(위 MDN 보다)부모 요소로 둘러싸는 방법
.image-trim {
position: relative;
overflow: hidden;
padding-top: 60%; /* 比率 */
}
.image-trim img {
width: 100%;
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: auto;
transform: translate(-50%, -50%);
}
이런 느낌 (얇은 회색 땅이 부모 요소의 상자 크기입니다)
해결 방법은 상기 2패턴을 합쳐
이런 느낌.
.image-trim {
position: relative;
overflow: hidden;
padding-top: 60%; /* 比率 */
}
.image-trim img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
object-fit: cover;
}
샘플
샘플로서 크기가 변동한 화상을 준비해 보았다.
(있을 수 없을 정도로 엉망이다……)
그러나, 세로의 화상도 가로의 화상도 작은 사이즈도 보시는 대로!
작은 사이즈의 이미지도 확대되어 가비 가비에.
반응형인지 여부는 아래의 Codepen에서 브라우저의 윈도우 폭을 바꾸어 보세요.
See the Pen responsive trimming image by Beco ( @becolomochi )
on CodePen .
왜 그렇게 되는가
잘 생각하면 간단한 이야기로
- img 에
object-fit:cover
를 지정해, 종횡 100% 를 지정하는 것으로 부모 요소의 크기 의존으로 트리밍할 수 있다. - 부모 요소의 크기 지정이 반응형입니다.
- 위치를 절대치 지정하는 것으로 프레임내에 들어간다.
자르기 위치를 변경하려면
「트리밍 위치를 중앙이 아니고 다른 것이 좋다!」라고 할 때는 object-position
로 바꿀 수 있다.
object-position - CSS: 캐스케이딩 스타일시트 | MDN
object-position: left top; /* 左上 */
object-position: 100px 50px; /* 横方向100px 縦方向50px */
초기값이 50% 50%
라고 하는 것으로 특별히 지정하지 않으면 세로 방향 가로 방향 모두 중앙이 된다.
참고
해결의 실마리가 된 Codepen (감사합니다…)
Responsive image with picturefill and object-fit
Reference
이 문제에 관하여(크기가 흩어져 있는 이미지를 반응형으로 종횡비를 맞추어 표시시킨다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/becolomochi/items/265a7f940a1c809f5ba7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)