공부하기

웹 디자인 기능사 시험 레이아웃 따라하기 1

Hyeon been 2023. 4. 2. 22:13

한번씩 읽고 가세요.

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

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

웹 디자인 기능사 시험 레이아웃 따라하기 1

 

레이아웃을 크게 3가지로 분류한다. header,main,footer   다음으론 css에 리셋 값을 줍니다.

        * {
            padding: 0;
            margin: 0;
        }
        a {
            text-decoration: none;
            color: black;
        }
        img {
            width: 100%;
            vertical-align: top;
        }
        #wrap {
            width: 1000px;
            margin: 0 auto;
        }

헤더는 로고(img)와 메뉴(nav) 둘로 나눈 후 css를 적용한다. 

        <header id="header">
            <h1><img src="img/logo.jpg" alt="롯데월드"></h1>
            <nav>
                <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>
            </nav>
        </header>

로고의 크기는 임의로 정해주고 li와 a에 display : inline-block을 주며 가로로 정렬될수있게 해준다 a에는  padding을 주어

각 a 마다의 간격을 설정하고  부모요소인 header에 display:flex를 주며 img와 nav에  justify-content: space-between을 주어 끝과 끝으로 보내준후  align-item:flex-end; 를 주어 아래로 정렬을 맞춰줍니다. 헤더완성.

        #header {
            display: flex;
            justify-content: space-between;
            align-items: flex-end;
        }
        #header h1 img {
            width: 150px;
        }
        #header nav li {
            display: inline-block;
            letter-spacing: normal;
            font-weight: bold;
        }
        #header nav li a {
            display: inline-block;
            padding: 20px;
        }

다음은 main영역을 3개로 분류한다 이미지만 있는 banner, notice, card 이렇게 세 분류로 나눠준다.

첫번째 섹션 - banner엔 이미지 만 들어간다. 그 후 다음 섹션인 notice와 간격을 주기 위해 margin-bottom을 준다.

            <section id="banner">
                <img src="img/banner01.jpg" alt="미라클">
            </section>
        #banner {
            margin-bottom: 20px;
        }

두번째 섹션 - notice는not1 ,not2로 나눠주며  not2엔 이미지를 넣어주면 끝.

not1은 제목태그인<h3>와 li와 그 후 더보기 버튼을 만들어줍니다.

            <section id="notice">
                <div class="not1">
                    <h3>롯데월드 소식</h3>
                        <ul>
                            <li><a href="#">그럴싸진관 미라클</a><span>2018.11.19</span></li>
                            <li><a href="#">드림스테이지</a><span>2018.11.19</span></li>
                            <li><a href="#">힘내 소중한 너</a><span>2018.11.19</span></li>
                            <li><a href="#">이용요금조정안내</a><span>2018.11.19</span></li>
                        </ul>
                        <a href="#" class="more">더보기</a>
                </div>
                <div class="not2"><img src="img/banner02-2.jpg" alt=""></div>
            </section>

헤더와 같이 notice에 flex와 space-between을 주고 not1,2에 각각 width값 47%를 준다.

not1 박스엔 border 1px solid #ccc를 주며 상자 테두리를 희미하게 만들어준다. not1안의 li에 제목과 날짜를 준 후 70%,30%의 비율로 나눠준 뒤 각 css를 설정합니다.제목과 날짜도 가로로 같이 정렬해주기 위해 li에도 flex를 설정해줍니다. 그 후 더보기인  more에 위치를 지정해준 뒤  기준점이 되는 not1에 position-relative를 설정해준뒤 more에 가상요소를 만들어 아이콘을 만들어주면  main영역 두번째 notice 완성.

        #notice {
            display: flex;
            justify-content: space-between;
            margin-bottom: 20px;
        }
        #notice .not1 {
            width: 47%;
            border: 1px solid #ccc;
            padding: 22px;
            position: relative;
        }
        #notice .not1 h3 {
            margin-bottom: 10px;
        }
        #notice .not1 li {
            list-style: none;
            display: flex;
            padding: 5px 0;
        }
        #notice .not1 li a {
            width: 70%;
        }
        #notice .not1 li span {
            width: 30%;
            text-align: right;
        }
        #notice .not1 .more {
            position: absolute;
            right: 30px; top: 25px;
        }
        
        #notice .not2 {
            width: 46.5%;
        }

세번째 섹션 - card는 제목 과 이미지로 나뉜다. 이미지를 담긴 위한 card-inner영역을 만들어주고 그 안에 4개의 div 박스를

또 만들어 각 이미지와 멘트를 써줍니다.

            <section id="card">
                <h2>특별한 경험</h2>
                <div class="card_inner">
                    <div>
                        <img src="img/notice01.jpg" alt="연간회원안내">
                        <strong>연간회원안내</strong>
                    </div>
                    <div>
                        <img src="img/notice02.jpg" alt="프리미엄투어">
                        <strong>프리미엄투어</strong>
                    </div>
                    <div>
                        <img src="img/notice03.jpg" alt="공연참여프로그램">
                        <strong>공연참여프로그램</strong>
                    </div>
                    <div>
                        <img src="img/notice04.jpg" alt="단체프로그램">
                        <strong>단체프로그램</strong>
                    </div>
                </div>
            </section>

제목인 h2에  마진을 줘 간격을 설정하고 카드를 정렬 시키기 위해 card_inner에 flex와space-between을 설정해줍니다.

각 div 상자의 width 값을 일정하게 지정해고 멘트에 패딩과 inline-block를 설정해주면 세번째 card영역 끝이며 메인 완성입니다.

        #card h2 {
            margin: 20px 0 10px;
        }
        .card_inner {
            display: flex;
            justify-content: space-between;
        }
        .card_inner div {
            width: 24%;
        }
        .card_inner div strong{
            padding: 10px 0;
            display: inline-block;
            color: #666;
        }

마지막 footer영역 footer영역은 간단 합니다  글이 들어있는 박스 address를

 만들어  정보를 써준 뒤 마지막 글에 strong를 주어 분류해줍니다.

        <footer id="footer">
            <address>
                서울특별시 송파수 올림픽로 240 호텔롯데 롯데월드 | 대표자 : 박동기<br>
                사업자등록번호 : 219-85-00014 | 통신판매업신고번호 | 송파 | 전화 : 1661-2000
                <strong>COPYRIGHT 2022 LOTTEWORLD.ALL.RIGHT RESERVED</strong>
            </address>
        </footer>

footer 영역 위 실선을 border-top으로 만들어 줍니다.

strong에 display:block을 주어 밑으로 내려오게 해준뒤 간격을 띄어 주면 푸터 영역 까지 완성입니다.

        #footer {
            border-top: 1px solid #ccc;
            margin-top: 50px;
            padding: 50px 0;
        }
        #footer address {
            font-style: normal;
        }
        #footer address strong {
            display: block;
            padding-top: 50px;
            color: #666;
        }

이렇게 해서 모든 페이지가 완성되었습니다.

 

 

코드보기