본문 바로가기

html, css공부

[css] 반응형 웹을 만들어보자(모바일,테블릿,데스크탑,미디어쿼리..)

반응형

반응형 웹이란

 

하나의 웹사이트에서 PC, 스마트폰, 태블릿  PC등 접속하는 디스플레이 종류에

따라 화면 크기가 자동으로 변하게 만드는 기법이다

 

개인적으로 애플 공식홈페이지가 멋있는것 같다

 

요새 사이트에서 반응형웹은 필수이다.

 

알아보자

 


 

반응형 웹 디자인을 체크할 수 있는 가장 쉬운 방법은 크롬 브라우저를 사용하는 것이다 

 

F12를 누르면 다음과 같이 html css 정보 및  모바일 화면을 볼 수 있다

 

 

일반인이라면 허겁지겁 꺼야되는 화면이지만 개발자는 유용하게 사용할 수 있다

 


가장 먼저 해주어야 할 것은

 

HTML파일 내부의 <head> ...</head> 안에 다음과 같이 설정해 주어야 한다

<meta name="viewport" content="width=device-width, initial-scale=1>

 

 

모바일 브라우저의 뷰를 실제 크기인 1로 설정하는것을 의미 한다 써주지 않는다면

모바일 브라우저에서 나오는 글자가 매우 작게 표시되어서 읽을 수 없을 것이다

 


미디어쿼리(Media Query)

 

라는 방법으로 CSS만으로 제어 한다

 

크게 screen과 print로 나뉘는데, screen은 일반적으로 모니터를 의미하며 PC,태블릿,스마트폰까지 의미한다 print는 말그대로 만들어진 웹사이트를 프린트 기기를 이용해 프린트 하는 것이다

 

각 화면크기에 맞게 CSS속성을 적용해 줄 수 있기 때문에 PC에 맞는 CSS 테블릿 또는 스마트폰에 맞는 CSS를 적용 해 줄 수있다

 

 

링크로 미디어 쿼리 적용하기

<link rel="stylesheet" type="text/css" media="screen" href="cssscreen.css">
<link rel="stylesheet" type="text/css" media="print" href="cssprint.css">

 

@import로 미디어 쿼리 적용하기

@import url(cssscreen.css) screen;
@import url(csspprint.css) print;

 

@media로 미디어 쿼리 적용하기

@media screen{ 
  CSS 속성
}

여기서 스크린과 프린트 모든 속성에 똑같이 적용하고 싶다면 media="all" 또는 media 부분 생략하면

된다

 

 

예)

<link rel="stylesheet" media="only screen and (min-width:200px) and (max-width:480px)
href="main.css">

@import url("main.css") only screen and (min-width:200px) and (max-width:480px);

@media only screen and (min-width:200px) and (max-width:480px) {
  css속성
}

 

(min-width:200px) and (max-width:480px) 라는 부분이 있는데 해상도에 따른 CSS파일을 따로 지정해 

줄 수 있다

 

 


이미지 크기 조절하기

 

모바일 기기의 가로 사이즈는 최대 768px이다 만약 크기가 1000px이 넘어간다면 잘려서 보일 것이다

 

.img_responsive{
  width: 100%;      //주목
  height: auto;
}

요로면 어떤 모바일 기기라도 정확하게 보일 것이다

 

이미지를 먼저 반응형으로 처리하면 매우 편리하다 

 

max-width와 min-width를 이용하여 처리를 한다

 

예를 들어 박스의 크기를 max-width: 500px로 지정하면 최대 크기가 500px이고 min-width: 500px이면 최소 크기가 500px이 된다 

==

min같은 경우 브라우저 크기가 작아지면 박스의 크기가 500px밑으로 줄어들지 않고  max는 500px이상으로 늘어나지 않는다

 


미디어 쿼리로 웹 페이지 처리하기

 

미디어 쿼리는 실제 적용하는 기기에 맞게끔 CSS 내부에 별도의 처리를 해주는 것이다

 

스마트폰 , 테블릿, 데스크탑 이렇게 세 종류이고 스마트폰과 테블릿의 경우 가로로 볼 때도 있고 세로로 볼 때도 있다

 

그래서 스마트폰은 세로 해상도를 기본, 테블릿은 가로를 세로를 기본으로 하고 가로를 추가 한다, 데스크탑은 가로를 기본으로 한다

 

스마트폰은 가로 ~768px(최대), 테블릿 세로인 경우 (최소)768px~992px(최대) , 가로화면은 (최소) 992px~1200px(최대), 데스크탑은 최소 1200px~ 로 나누자

 

@media (max-width: 767px){
	//모바일
}

@media (min-width: 768px) and (max-width: 991px) {
    // 테블릿 세로
}

@media (min-width: 992px) and (max-width: 1199px) {
    // 테블릿 가로
}

@media (min-width: 1200px) {
    // 데스크탑 일반
}

 

↑ 요것을 기준으로 나누어 css를 짜자

 

 

 

예) 다음과 같은 웹 페이지를 모바일 화면에서 봐 보자

.container{  //전체를 담는 박스
    width: 100%;
    height: 1000px;
}

.itembox{  //그림과 텍스트가 들어있는 칸
    width: 100%;
    display: flex;
    justify-content: space-around;
    align-items: center;
}

.imgbox{  //이미지 들어있는 박스
  width: 100%;
  height: auto;
  margin: 2%;
}

.image{  //이미지
    width: 100%;
}

.textbox{  //텍스트 들어있는 박스
    padding: 20px;
}

 

@media 를 사용해서 모바일화면(~767px) css를 만들자

 

다음과 같은 속성을 주었다

@media (max-width: 767px){
    .itembox{
        display: block;  //  block으로 만들어 텍스트가 밑에 내려오게 만든다
    }
    .imgbox{  //현재 가로크기에 맞게 꽉차게
        width: 90%;
        padding: 20px;
    }
    .textbox{  //양쪽 정렬
        padding: 20px 20px 10px 20px;
        text-align: justify;
    }
}

 

 

결과: 모바일화면에서 세로로 보여진다 이게 바로 반응형

 

 

 


 

잘 익혀두자

 

 

 

 

참조: '백견불여일타HTML5&CSS3'

반응형