반응형에 대해(2)
반응형 웹 디자인 패턴
구글 역시 반응형 웹에 대한 정리를 잘 해놓았다. 정확히 말하면 많이 쓰는 패턴에 대한 정리이다. 반응형 웹 디자인에 대한 표준은 아직 없기때문에 현재는 자주 쓰는 패턴정도라고 말하고 있는것 같다.
반응형 웹 페이지에 사용되는 대부분의 레이아웃은 5가지 패턴 중 하나로 분류된다.
- 유동형
- 열 끌어놓기
- 레아이웃 시프터
- 미세조정
- 오프캔버스
패턴 예시
flexbox를 시용했으며, 각 샘플은 기본 컨테이너 div내에 3개의 콘텐츠 div가 포함된다. 가장 작은 뷰부터 작성되고, 필요한 경우 중단점을 추가했다. 최신브라우저에서는 flexbox 레아이웃 모드가 잘 지원된다.
유동형(Mostly Fluid)
이 패턴은 주로 융동형 그리드로 구성된다. 더 넓은 화면에서는 여백만 조정하므로, 대형 화면이나 중형 화면에서 이 패턴은 일반적으로 동일한 크기를 유지한다. 더 작은 화면에서는 컨텐츠들이 수직으로 쌓이며 기본 콘텐츠가 재배치 된다.
이 패턴의 주요 장점은 대개 소형 화면과 대형 화면에서 하나의 중단점만 필요하다는 것이다.
패턴 적용 사이트
.container {
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
flex-flow: row wrap;
}
.c1, .c2, .c3, .c4, .c5 {
width: 100%;
}
@media (min-width: 600px) {
.c2, .c3, .c4, .c5 {
width: 50%;
}
}
@media (min-width: 800px) {
.c1 {
width: 60%;
}
.c2 {
width: 40%;
}
/* Using 33.33%, doesn't always work right due to rounding */
.c3, .c4 {
width: 33%;
}
.c5 {
width: 34%;
}
}
@media (min-width: 800px) {
.container {
width: 800px;
margin-left: auto;
margin-right: auto;
}
}
열 끌어놓기(Column Drop)
전체 너비가 가득 찬 다중 열 레이아웃의 경우, 열 글어놓기는 창 너비가 콘텐츠에 비해 너무 좁아지면 열을 수직으로 쌓는다. 결국 모든 열이 수직으로 쌓인다. 이 레이아웃의 중단점 선택은 콘텐츠에 따라 다르다.
패턴 적용 사이트
.container {
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
flex-flow: row wrap;
}
.c1, .c2, .c3 {
width: 100%;
}
@media (min-width: 600px) {
.c1 {
width: 60%;
-webkit-order: 2;
order: 2;
}
.c2 {
width: 40%;
-webkit-order: 1;
order: 1;
}
.c3 {
width: 100%;
-webkit-order: 3;
order: 3;
}
}
@media (min-width: 800px) {
.c2 {
width: 20%;
}
.c3 {
width: 20%;
}
}
레이아웃 시프터(Layout shifter)
가장 반응성이 뛰어난 패턴. 여러 화면 너비에 복수의 중단점이 있다. 이 레이아웃의 핵심은 다른 열 아래로 이동 및 재배치하는 방식이 아니라 콘테츠의 자리 이동 방식에 있다. 각 주요 중단점 간의 현저한 차이로 인해 유지 관리가 훨씬 복잡하고 전체 콘텐츠 레이아웃뿐만 아니라 요소 내의 변경도 포함된다.
화면이 커짐에 따라 한 div는 왼쪽, 두 div는 오른쪽에 쌓이게 된다.
.container {
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
flex-flow: row wrap;
}
.c1, .c2, .c3, .c4 {
width: 100%;
}
@media (min-width: 600px) {
.c1 {
width: 25%;
}
.c4 {
width: 75%;
}
}
@media (min-width: 800px) {
.container {
width: 800px;
margin-left: auto;
margin-right: auto;
}
}
미세조정(Tiny tweaks)
미세조정은 글꼴 미세 조정, 이밎 크기 미세 변경 등 콘텐츠 미세 이동 등과 같이 레이아웃을 약간 변경한다. 이 패턴은 1페이지 선형 웹사이트, 텍스트가 많은 문서 등 단일 열 레이아웃에서 잘 작동한다.
패턴 적용 사이트
.c1 {
padding: 10px;
width: 100%;
}
@media (min-width: 500px) {
.c1 {
padding: 20px;
font-size: 1.5em;
}
}
@media (min-width: 800px) {
.c1 {
padding: 40px;
font-size: 2em;
}
}
오프캔버스(Off canvas)
콘텐츠를 수직으로 쌓지 않고, 사용 빈도가 낮은 콘텐츠(탐색 또는 앱메뉴)를 화면 밖에 배치하고, 화면 크기가 충분히 커지면 표시하고, 작은 화며네서는 클릭했을 때만 보여준다.
컨텐츠를 수직으로 쌓지 않고, transform: translate(-250px, 0) 선언을 사용하여 두 개의 콘텐츠 div를 화면에서 숨긴다. 자바스크립트를 사용하여 공개 클래스를 요소에 추가하여 보이게 만들어 div를 표시한다.
body {
overflow-x: hidden;
}
.container {
display: block;
}
.c1, .c3 {
position: absolute;
width: 250px;
height: 100%;
/*
This is a trick to improve performance on newer versions of Chrome
#perfmatters
*/
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transition: -webkit-transform 0.4s ease-out;
transition: transform 0.4s ease-out;
z-index: 1;
}
.c1 {
/*
Using translate3d as a trick to improve performance on older versions of Chrome
See: http://aerotwist.com/blog/on-translate3d-and-layer-creation-hacks/
#perfmatters
*/
-webkit-transform: translate(-250px,0);
transform: translate(-250px,0);
}
.c2 {
width: 100%;
position: absolute;
}
.c3 {
left: 100%;
}
.c1.open {
-webkit-transform: translate(0,0);
transform: translate(0,0);
}
.c3.open {
-webkit-transform: translate(-250px,0);
transform: translate(-250px,0);
}
@media (min-width: 500px) {
/* If the screen is wider then 500px, use Flexbox */
.container {
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row nowrap;
flex-flow: row nowrap;
}
.c1 {
position: relative;
-webkit-transition: none 0s ease-out;
transition: none 0s ease-out;
-webkit-transform: translate(0,0);
transform: translate(0,0);
}
.c2 {
position: static;
}
}
@media (min-width: 800px) {
body {
overflow-x: auto;
}
.c3 {
position: relative;
left: auto;
-webkit-transition: none 0s ease-out;
transition: none 0s ease-out;
-webkit-transform: translate(0,0);
transform: translate(0,0);
}
}
정리
웹페이지를 돌아다니도바면 5가지 패턴은 자주 보인다. 패턴을 외운다기보다는, 이러한 패턴들이 사용된다라고 생각하면 되고, 나한테 필요한 패턴을 골라서 사용하거나, 굳이 패턴을 따르지 않아도 된다. 내 컨텐츠에 잘 맞는 반응형 사이트면 되는 것이다.
출처
Author And Source
이 문제에 관하여(반응형에 대해(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leebonggu12/반응형에-대해2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)