Chris Coyier의 ‘유연한 이미지 (flexible images)’는 max-width와 더불어, height를 auto로 잡아주어서 가로 세로 비율을 ‘강제로’ 유지하는 것도 필요하다고 합니다. (출처: 링크) 또한 -ms-interpolation-mode 를 이용해서 위와 같은 문제를 해결할 수도 있다고 합니다.
img {
max-width: 100%;
// just in case, to force correct aspet ratio */
height: auto !important;
}
img {
-ms-interpolation-mode: bicubic;
}
하지만, EM의 댓글에서 보면, 위 -ms-interpolation-mode: bicubic이 작동은 하지만, 너무 느리다고 지적하고 있습니다.
유동형 비디오
위 유동형 이미지 글에서 다뤘듯이, 비디오도 간단히 max-width:100% 로 처리한다고 했지만, 몇몇 경우에는 간단히 처리되지 않을 수 있습니다. 구체적인 문제점으로 가로/세로 비율이 맞지 않거나 비디오 오브젝트의 종류에 따라서 달리 처리해야 합니다.
Fitvids.js
Css-tricks.com의 Chris Coyier와 Paravel 이 제작한 Fitvids.js 는 유동형/반응형 비디오를 처리하기 위한 간단한 jQuery 플러그인 입니다. 사용방법은 다음과 같습니다. (출처: github/fitvids.js)
이러한 코드가 적용되면, 해당 요소 (이경우는 #thing-with-videos)를 둘러싸는 div.fluid-width-video-wrapper 가 생성되고 필요한 CSS가 적용됩니다. 현재 처리되는 비디오 소스로는, youtube, vimeo, blip.tv, viddler, kickstarter 라고 합니다.
그렇다면 유동형 이미지와 반응형 이미지의 차이점은 무엇일까요? 즉 유동형 이미지만으로 해결되지 않는 문제점은 무엇일까요? 대표적인 문제점으로, 데스크탑에서 사용하는 화일크기가 큰 이미지를, 모바일에서 단순히 이미지 가로/세로만 줄인다는 것입니다.
이 문제점을 해결하기 위한 합리적인 방법은, 데스크탑용과 모바일용 이미지를 선별적으로 제공/사용하는 것일것입니다. 반응형 이미지는, 이러한 선별적 이미지 제공/사용을 처리하기 위한 기법들을 뜻합니다. (참고로, 본 강좌에서는, ‘반응형 이미지’ 가 ‘유동형 이미지’를 포함하는 개념/기법으로 사용합니다.)
반응형 이미지의 선택적 화일 사용은 기본적으로 데스크탑용 이미지 화일과 모바일 기기용 (여러크기의) 이미지 화일들을 미리 준비해두어야 합니다. 이렇게 준비된 기기별 이미지를 전송하는 접근 방법은, 모바일용 이미지를 기본으로 보내는 방법 (모바일 퍼스트)과 기기에 따라서 선별적으로 보내는 방법으로 나눌 수 있습니다.
모바일 퍼스트 접근방법
기본적으로 모바일용 작은 이미지는 기본적으로 로딩을 하고, 데스크탑 환경에서는 큰 이미지 화일을 별도로 ‘더’ 다운 받는 방법입니다.
즉, 스크린 폭이 640px보다 작을때는 small.jpg, 그렇지 않을때는 med.jpg를 소스로 사용하고, 또한 고해상도 (2x)일때는 각각 small-hd.jpg와 med-hd.jpg를 사용하도록 설정할 수 있습니다.
또한, 화일 크기 뿐만아니라 (resolution switching), 화면 폭에 따라서 이미지의 어느 부분을 사용하는 가 (art direction) 도 고려되고 있습니다. 아래 그림에서 보듯이, 스크린의 크기에 따라서 이미지의 특정 부분만을 사용하도록 설정하는 접근방법입니다.
이번것은 위 본문의 백악관 개 (^^;;) 그림으로 설명했던 art direction를 가능하게 하는 css 입니다.
한마디로 말하면 이미지가 너무 작아질때 이미지의 일부만 보이고 싶을때 특정 영역 (포칼포인트)을 중심으로 보여주는 기법입니다.
http://www.cdnconnect.com/docs/focal-point-css/pure-html-css-responsive-high-resolution-images-solution (영어죄송 ^^)
사용방법은
<div class="focal-point right-3 up-3">
<div><img src="guy.jpg" alt="guy"></div>
</div>
처럼 이미지를 감싸는 div를 두개 만들고, 맨 상위 div에 focal-point 클래스 선언과 함께,
그림에서 어느 부분을 중심으로 할지를 right-3 up-3 식으로 알려주는 것입니다.
설명그림: http://designshack.co.uk/wp-content/uploads/focalpoint-5.jpg
현재는 767px을 경계치로 사용하고 있어서 그 이하가 되면, 위에서 선택된 중심영역을 중심으로 이미지를 일부만 보여줍니다.
설명그림: http://designshack.co.uk/wp-content/uploads/focalpoint-7.jpg]
/* Landscape up (Total 6em) */
.up-3 div {
margin-top: -1.5em;
margin-bottom: -4.5em;
}
.right-3 div {
margin-left: -6em;
margin-right: -2em;
}
}
와 같이 이미지를 감싸는 div의 마진을 기본 폰트크기를 단위로 해서 조정하는 방법을 사용합니다..
폰트크기를 기본으로 하였기에, 767 이하의 화면 폭의 경우
@media all and (max-width: 550px) {
h1 {
font-size: 23px;
}
}
와 같은식으로 폰트 크기를 지정하면 이미지의 크롭비율도 같이 조정되는 방식입니다.
자바스크립트 없이 css로만 art direction 을 이룬 노력에 감탄을 했습니다. ^^;
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기