728x90

이 시리즈는 필자가 웹프로그래밍을 겪으면서 생각처럼 잘안되고 짜증나는 css를 효율적이게 쓰기위해서 만든 시리즈이다.

여기에 들어온 여러분들도 이 쓰레기 같은 css의 고통을 같이 덜수 있기를 바란다.

 

참고:

css지옥에서 탈출하자(1) - 인라인 요소(inline element)와 블록 요소(block element)는 다르다.

css지옥에서 탈출하자(2) - display와 인라인(inline), 블록(block) 그리고 div를 display를 이용해서 옆으로 나열

css지옥에서 탈출하자(3) - display와 flex, 세로로 뭔가 배치하고 싶다면 flexbox를 쓰자, (추가로 div를 flex로 나열, 비율에 맞게 div 세로로 배치)

css지옥에서 탈출하자(4) - display: flex와 margin: auto를 이용해서 기존의 문제 해결(header나 nav에서 한 엘리먼트만 좌측 배치, 바닥에 붙는 footer, 수직 중앙정렬)

css지옥에서 탈출하자(5) - 엘리먼트를 드래그 앤 드랍(drag and drop)으로 자유롭게 옮긴다고?

css지옥에서 탈출하자(6) - css로 삼각형을 그려보자

css지옥에서 탈출하자(7) - display inline-block 나열시 공백 제거하기

css지옥에서 탈출하자(8) - div에 transition을 줘서 부드럽게 애니메이션 효과로 움직이기

css지옥에서 탈출하자(9) - 스크롤바가 없는 스크롤을 만든다?

css지옥에서 탈출하자(10) - 현재 내가 얼마나 스크롤(scroll)했는지 부여주고 싶을 때, 진행도(progressed) 표시

css지옥에서 탈출하자(11) - css로 원을 그려보자. 원속의 원 만들기(과녁처럼)

반응형을 사용하기 위해서는 미디어 쿼리를 사용해야한다.

미디어 쿼리라는 것은 이름만 거창하지 그냥 반응형이라고 생각하면된다.

사용하는 양식은 아래와 같다.

 

@media
<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="my-div"></div>
    <style>

        #my-div {
            width: 50px;
            height: 50px;
            background-color: red;
        }

        @media(min-width:768px) {
            #my-div {
                width: 100px;
                height: 100px;
                background-color: red;
            }
        }
        @media(min-width:1024px){
            #my-div {
                width: 200px;
                height: 200px;
                background-color: red;
            }
        }
        @media(min-width:1280px){
            #my-div {
                width: 300px;
                height: 300px;
                background-color: red;
            }
        }
    </style>
</body>
</html>

 

반응형으로 사용하는 미디어 쿼리는 간단하게 min-width와 max-width로 나뉜다.

min-width의 의미는 "이것보다 크면 이 형식을 사용한다" 이다.

그럼 반대로 max-width의 의미는 "이것보다 작으면 이 형식을 사용한다"이다.

가령 위의 예제에서 min-width:768px이라는 의미는

최소 크기가 768px이므로 768보다 큰 경우에는 해당 미디어 쿼리가 사용되게 된다.

 

위의 예제에서는 미디어 쿼리가 4개가 사용되는데 이 순서는 "유의미"하다.

이는 css가 순서대로 적용되는 점을 생각하면 당연하다고 할 수 있다.

가령

 

@media(min-width:768px) {
    #my-div {
        width: 100px;
        height: 100px;
        background-color: red;
    }
}
@media(min-width:1024px){
    #my-div {
        width: 200px;
        height: 200px;
        background-color: red;
    }
}

이러한 예제와

 

@media(min-width:1024px){
    #my-div {
        width: 200px;
        height: 200px;
        background-color: red;
    }
}
@media(min-width:768px) {
    #my-div {
        width: 100px;
        height: 100px;
        background-color: red;
    }
}

이러한 예제는 다른 결과가 나온다.

그 이유는 아까도 말했지만 css는 순서가 중요하기 때문이다.

무슨 말인지 모르겠다면 한번 해보면된다.

+ Recent posts