예제로 공부하기/사이트 만들기

마지막에 오는 FOOTER 유형! 만들기!

Hyeon been 2023. 3. 22. 19:45

한번씩 읽고 가세요.

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

FOOTER유형

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* reset */
        * {
            padding: 0;
            margin: 0;
        }
        a {
            text-decoration: none;
            color: #000;
        }
        h1,h2,h3,h4,h5,h6 {
            font-weight: normal;
        }
        img {
            vertical-align: top;
            width: 100%;
        }

        .mt10 {margin-top: 10px !important}
        .mt20 {margin-top: 20px !important}
        .mt30 {margin-top: 30px !important}
        .mt40 {margin-top: 40px !important}
        .mt50 {margin-top: 50px !important}
        .mt60 {margin-top: 60px !important}
        .mt70 {margin-top: 70px !important}

        .mb10 {margin-bottom: 10px !important}
        .mb20 {margin-bottom: 20px !important}
        .mb30 {margin-bottom: 30px !important}
        .mb40 {margin-bottom: 40px !important}
        .mb50 {margin-bottom: 50px !important}
        .mb60 {margin-bottom: 60px !important}
        .mb70 {margin-bottom: 70px !important}

        /* commmon */
        .container {
            width: 1160px;
            margin: 0 auto;
            padding: 0 20px;
            /* background-color: rgba(0, 0, 0, 0.1); */
        }
        li {
            list-style: none;
        }
        .nexon {
            font-family: 'NexonLv1Gothic';
            font-weight: 400;
        }
        .section {
            padding: 120px 0;
        }
        .section.center {
            text-align: center;
        }
        .section__h2 {
            font-size: 50px;
            font-weight: 400;
            margin-bottom: 30px;
            line-height: 1;
        }
        .section__desc {
            font-size: 22px;
            color: #666;
            margin-bottom: 70px;
            font-weight: 300;
            line-height: 1.5;
        }
        /* footer__wrap */
        .footer__wrap {
            background-color: #f5f5f5;
        }

        .footer__inner {
            box-sizing: border-box;
            height: 600px;
        }

        .footer__menu {
            display: flex;
        }
        .footer__menu > div {
            width: 16.666%;

        }
        .footer__menu > div h3 {
            margin-bottom: 13px;
        }
        .footer__menu  > div li {
            font-size: 14px;
            line-height: 1.9;
        }
        .footer__menu  > div li a {
            color: #666;
        }
        .footer__right {
            margin-top: 50px;
            border-top: 1px solid #d9d9d9;
            padding-top: 50px;
            text-align: center;
            font-style: normal;
            line-height: 1.6em;
            color: #666;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <footer class="footer__wrap section nexon">
        <div class="container">
            <h2></h2>
            <div class="footer__inner">
                <div class="footer__menu">
                    <div>
                        <h3>가구 사이트</h3>
                        <ul>
                            <li><a href="#">소개하기</a></li>
                            <li><a href="#">가구 고르는 방법 첫번째</a></li>
                            <li><a href="#">나에게 맞는 인테리어</a></li>
                            <li><a href="#">가구 고르는 방법 두번째</a></li>
                            <li><a href="#">셀프 플래닝</a></li>
                            <li><a href="#">요즘 대세는 미니멀리즘</a></li>
                        </ul>
                    </div>
                    <div>
                        <h3>고객문의</h3>
                        <ul>
                            <li><a href="#">고객지원</a></li>
                            <li><a href="#">자주 묻는 질문</a></li>
                            <li><a href="#">문의하기</a></li>
                            <li><a href="#">배송조회</a></li>
                            <li><a href="#">교환 환불</a></li>
                        </ul>
                    </div>
                    <div>
                        <h3>제품문의</h3>
                        <ul>
                            <li><a href="#">품질 보증</a></li>
                            <li><a href="#">제품 리콜</a></li>
                            <li><a href="#">피드백</a></li>
                            <li><a href="#">부품신청</a></li>
                        </ul>
                    </div>
                    <div>
                        <h3>쇼핑하기</h3>
                        <ul>
                            <li><a href="#">쇼핑하기</a></li>
                            <li><a href="#">헤이오더</a></li>
                            <li><a href="#">Furniture for Business</a></li>
                            <li><a href="#">Furniture 모바일 앱</a></li>
                            <li><a href="#">제품 사용 팁/가이드</a></li>
                            <li><a href="#">제품 구매 가이드</a></li>
                        </ul>
                    </div>
                    <div>
                        <h3>서비스</h3>
                        <ul>
                            <li><a href="#">Furniture 서비스</a></li>
                            <li><a href="#">배송 서비스</a></li>
                            <li><a href="#">조립 서비스</a></li>
                            <li><a href="#">설치 서비스</a></li>
                            <li><a href="#">주방 서비스</a></li>
                            <li><a href="#">구매 상담 서비스</a></li>
                            <li><a href="#">인테리어 디자인 서비스</a></li>
                            <li><a href="#">바이백 서비스</a></li>
                        </ul>
                    </div>
                    <div>
                        <h3>Furniture 이야기</h3>
                        <ul>
                            <li><a href="#">Furniture 이야기</a></li>
                            <li><a href="#">브랜드 소개</a></li>
                            <li><a href="#">집에서의 생활</a></li>
                            <li><a href="#">지속가능한 생활</a></li>
                            <li><a href="#">내가 아끼는 집, </a></li>
                            <li><a href="#">나를 아끼는 집</a></li>
                            <li><a href="#">뉴스룸</a></li>
                            <li><a href="#">채용정보</a></li>
                        </ul>
                    </div>
                </div>
                <address class="footer__right">
                    2023 kimhyeonbeen 가구 사이트 Portfolio is Power<br>All Right  Reserved
                </address>
            </div>
        </div>
    </footer>
</body>
</html>

푸터 유형은 섹션이 하나여서 이름을 푸터로 만들었다.

그 섹션 안에 main__menu 박스를 만든 뒤 그 안에 6개의 div 박스를 넣어 6구역으로 텍스트를 배치한다.

각  박스 별 CSS를 설정합니다. 안 쪽  여섯개 박스를  옆으로 정렬 해주기 위해  main__menu 에 display : flex 를 설정 해줍니다.

        .footer__menu {
            display: flex;
        }
        .footer__menu > div {
            width: 16.666%;

        }
        .footer__menu > div h3 {
            margin-bottom: 13px;
        }
        .footer__menu  > div li {
            font-size: 14px;
            line-height: 1.9;
        }
        .footer__menu  > div li a {
            color: #666;
        }
        .footer__right {
            margin-top: 50px;
            border-top: 1px solid #d9d9d9;
            padding-top: 50px;
            text-align: center;
            font-style: normal;
            line-height: 1.6em;
            color: #666;
            font-size: 14px;
        }

여섯개 박스마다 넓이 값을 16.6666% 씩 주고  안 쪽 각 h3 li a 태그에 마진과  각각 폰트 사이즈를 설정해줍니다.

 

CSS 상대 단위 - em과 rem

상대 단위란?

상대(relative) 단위란 고정되지 않고 어떤 기준에 따라서 유동적으로 바뀔 수 있는 길이를 나타내는 단위입니다. 본 포스팅에서 다룰 em과 rem을 포함해 %, vw, vh 등이 대표적인 CSS의 상대 단위입니다.

반면 절대(absolute) 단위는 어떤 상황에서든 항상 고정된 길이를 나타내는 단위입니다. 대표적으로 예전부터 현재까지 많이 사용되는 px와 pt를 들 수 있고, cm나 in와 같은 실생활에서 많이 사용되는 단위들도 이 절대 단위에 범주에 속합니다.

쉽게 말해, 실생활에서 1cm가 항상 1cm인 것처럼, 1px는 항상 1px(=0.02645833cm)이지만, 1em이나 1rem은 항상 고정된 길이를 나타나지 않고 대신 브라우저가 어떤 기준에 따라 계산을 하여 px로 변환을 해줍니다. 따라서 그 기준이 무엇인지를 파악하는 것이 em과 rem을 정확히 이해하는데 핵심이 됩니다.

em과 rem의 공통점

뭐 적어도 px나 pt와 같은 절대 단위를 쓰는 것 보다는 나을테니라는 생각으로 많은 분들이 em과 rem을 혼용해서 사용하시는 것 같습니다. 사실 브라우저에서 이 두 단위가 같은 길이로 계산될 때가 상당히 많고, 둘 중에 뭐를 쓰든 큰 차이가 나지 않아서 그럴 수도 있을 것입니다.

em과 rem의 차이점

em과 rem 단위의 기준은 font-size 속성 값이라고 했는데, 정확히 어디에 있는 font-size 속성 값인지에 따라 차이가 발생합니다. em의 경우, 해당 단위가 사용되고 있는 요소의 font-size 속성 값이 기준이 됩니다. 반면에 rem에서 r은 root, 즉 최상위 요소를font-size 속성 값 의미합니다. HTML에서 최상위 요소는 <html> 입니다. 따라서 rem 경우, html 요소의 font-size 속성 값이 기준이 됩니다.

 

vw / vh

CSS 작업을 할 때 주로 사용하는 단위는? 픽셀(px)입니다.
하지만 고정 단위인 px 대신 유동 단위인 %를 사용하면 좀 더 유연한 코드를 만들 수 있습니다.
예를 들어 width:50%로 지정해두면 항상 부모의 절반 사이즈를 가지니까 이것 역시 좋은 반응형 CSS입니다

vw와 vh 활용법

이들 단위는 뷰포트 영역 전체를 차지하게 하거나, 그 일부분만 차지하게 하는 데 유용하게 쓸 수 있습니다.

당장 100vw, 100vh만 써도 너비와 높이를 꽉꽉 채울 수 있습니다.

사용자가 브라우저 창 크기를 바꾸거나 모바일 화면을 회전시켜도 상관이 없습니다.

 

또, 이들을 calc()와 결합하면 좋은 시너지를 낼 수 있습니다.
헤더영역 높이가 50px이고 컨텐츠 영역 높이를 '헤더를 제외한 나머지 높이 전체'로 만들고 싶다면, height: calc(100vh - 50px);을 지정해주면 됩니다.