[웹 UI 개발] 반응형 웹 - 1 / 태블릿 PC 환경

2023. 3. 30. 12:26

이전 포스트에서 만든 PC버전 웹페이지를 그대로 사용한다.

 

 

아래 조건에 맞는 태블릿 PC버전 웹페이지를 제작.

  • header : 배경색 lightseagreen, 로고 폰트 크기 40px, 로고 폰트 색 #fff, 메뉴 폰트 25px, 메뉴 폰트 색 #fff
  • content : 리스트 간격 8px, 리스트 폰트 크기 14px, 리스트 폰트 색 #fff
  • footer : 배경색 lightcoral, 폰트 크기 14px, 폰트 색 #000

태블릿 가이드 예시

 

 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width==device-width, initial-scale=1.0">
        <title>반응형 웹</title>
        <link rel="stylesheet" href="css/reset.css">
        <link rel="stylesheet" href="css/responsive.css">
    </head>
    <body>
        <div class="wrap">
            <header>
                <a href="#" class="logo"><h1>LOGO</h1></a>
                <nav>
                    <a href="#">MENU1</a>
                    <a href="#">MENU2</a>
                    <a href="#">MENU3</a>
                    <a href="#">MENU4</a>
                    <a href="#">MENU5</a>
                    <a href="#">MENU6</a>
                    <a href="#">MENU7</a>
                    <a href="#">MENU8</a>
                </nav>
            </header>
            <section>
                <ul class="list">
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                긴~~~~~~~~~~~~~~~~~~~~~~~~~~~~~타이틀
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                    <li>
                        <a href="" class="inner">
                            <div class="thumb">
                                <img src="img/thumb.png" alt="썸네일이미지">
                            </div>
                            <div class="title">
                                타이틀입니다.
                            </div>
                        </a>
                    </li>
                </ul>
            </section>
            <footer>
                <p>footer--footer--footer--footer--footer--footer</p>
            </footer>
        </div>
    </body>
</html>

 

@charset "UTF-8";

a {
    text-decoration: none;
}

header {
    overflow: hidden;
    background-color: pink;
    padding: 20px;
}

.logo {
    float: left;
    font-size: 20px;
    color: #fff;
}

nav {
    float: right;
}

nav a {
    padding: 0 5px;
    font-size: 20px;
    color: #fff;
}

footer {
    height: 50px;
    line-height: 50px;
    text-align: center;
    background-color: #ccc;
    font-size: 14px;
    color: #000;
}

section {
    overflow: hidden;
    max-width: 900px;
    margin: 50px auto;
}

.list {
    margin: -5px;
    overflow: hidden;
}

.list li {
    float: left;
    width: 20%;
}

.inner {
    display: block;
    margin: 5px;
    border: 1px solid #000;
}

.thumb img {
    width: 100%;
    height: auto;
}

.title {
    padding: 5px 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
    font-size: 14px;
    color: #555;
}

@media screen and (min-width: 768px) and (max-width: 1024px){
    header {
        background-color: lightseagreen;
    }

    .logo {
        width: 100px;
        float: none;
        display: block;
        margin: 0 auto;
        font-size: 40px;
        text-align: center;
    }

    nav {
        overflow-x: auto;
        overflow-y: hidden;
        margin-top: 20px;
        float: none;
        white-space: nowrap;
    }

    nav a {
        font-size: 25px;
    }

    footer {
        background-color: lightcoral;
        color: #fff;
    }

    .list {
        margin: -4px;
    }

    .list li {
        width: 25%;
    }

    .inner {
        position: relative;
        margin: 4px;
    }

    .title {
        position: absolute;
        right: 0;
        bottom: 0;
        left: 0;
        padding: 10px 0;
        background-color: rgba(0, 0, 0, 0.2);
        color: #fff;
    }
}

 

브라우저 화면

 

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

태블릿 PC나 모바일 환경에 맞는 웹페이지를 제작할 때 이 메타태그를 넣어주지 않으면 여전히 PC버전으로 웹페이지가 보이는 문제가 발생할 수 있다.

 

@media screen and (min-width: 768px) and (max-width: 1024px){
	...
}

미디어 쿼리를 사용해서 브라우저의 가로 크기가 768px~1024px일 때만 내부의 css가 동작하도록 한다.

 

.logo {
    width: 100px;
    float: none;
    display: block;
    margin: 0 auto;
    font-size: 40px;
    text-align: center;
}

float되어 있던 것을 해제하고 display를 block으로 수정한다.

그 후 디자인 가이드대로 수정한다.

 

nav {
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 20px;
    float: none;
    white-space: nowrap;
}

float되어 있던 것을 해제한다.

"white-space: nowrap;"속성으로 요소의 크기를 무시하고 한 줄로 표현되도록 한다.

"overflow-x: auto;"속성으로 x축에 스크롤이 생기도록 한다.

"overflow-y: hidden;" 속성으로 y축 스크롤은 보이지 않도록 한다.

 

.list {
    margin: -4px;
}

.inner {
    position: relative;
    margin: 4px;
}

리스트 간 간격을 8px로 수정하기 위해 inner의 margin을 4px로 수정한다.

그 후에 list의 margin을 -4px로 수정해서 콘텐츠가 section에 딱 맞도록 한다.

 

.title {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    padding: 10px 0;
    background-color: rgba(0, 0, 0, 0.2);
    color: #fff;
}

태블릿 PC에서는 썸네일 타이틀이 썸네일 이미지 안에 있도록 가이드가 제시되어 있다.

position을 absolute로 두고 inner를 relative로 둔다.

위치를 조정하고 디자인 가이드대로 수정한다.


부스트코스의 강의 내용을 정리한 포스트입니다.

https://www.boostcourse.org/web344

 

웹 UI 개발

부스트코스 무료 강의

www.boostcourse.org

BELATED ARTICLES

more