FrontEnd/CSS

#37. CSS(화면구조잡기 및 통합)

열하나요 2023. 8. 23. 20:50

37-1. 화면 구조 잡기

<!DOCTYPE html>
<html lang="en">
<head>
    <title>화면을 나누자~</title>
    <style>
        div{
            border : 1px solid red;
            box-sizing : border-box;
        }

        /* 전체를 감싸는 div */
        #wrap{
            width : 1000px;
            height : 800px;
            margin : auto;
        }

        /* 크게 4등분 */
        #wrap > div{width : 1000px;}
        #header, #footer{height : 20%;}
        #navigator{height : 5%;}
        #content{height : 55%;}

        /* 세부 div를 속성 */
        /* 공통속성 */
        #header > div, #content > div{
            height : 100%;
            float : left;
        }

        /* 각각의 요소들 가로길이를 정해주기 */
        #header_1{width : 20%;}
        #header_2{width : 65%;}
        #header_3{width : 15%;}

        #content_1{width : 15%;}
        #content_2{width : 60%;}
        #content_3{width : 25%;}




    </style>
</head>
<body>

    <div id="wrap">
        <div id="header">
            <div id="header_1"></div>
            <div id="header_2"></div>
            <div id="header_3"></div>
        </div>
        <div id="navigator"></div>
        <div id="content">
            <div id="content_1"></div>
            <div id="content_2"></div>
            <div id="content_3"></div>
        </div>
        <div id="footer"></div>
    </div>

    
</body>
</html>

37-2. footer 만들기

<!DOCTYPE html>
<html lang="en">
<head>
    <title>안녕 나는 footer야</title>
    <style>
        div{
            box-sizing : border-box;
        }

        /* 전체를 감싸는 div속성 */
        #footer{
            width : 1000px;
            height : 160px;
            background-color : #FEE500;
        }

        /*----------------------------------------------------------------*/

        /* 세부속성 */
        #footer_1, #footer_2{
            width : 100%;
        }

        #footer_1{
            height : 20%;
            background-color : #3A1D1DE7;
            color : white;
        }

        #footer_2{
            height : 80%;
        }

        /* footer_1의 a태그 속성 */
        #footer_1 > a{
            text-decoration : none;
            font-weight : 650;
            color : white;
            margin : 15px;
            vertical-align : middle; /* vertical-align은 안먹히는 요소가 있음 */
        }

        #footer_1 > a:hover{
            color : forestgreen;
        }

        /* p태그에 대한 세부적인 속성들 */
        #footer_2 > p{
            width : 100%;
            /* p태그의 특성상 두 개의 p태그 사이에 margin이 기본적으로 위, 아래 16px씩 들어가 있음 */
            margin : 0;
            box-sizing : border-box;
            /* p태그의 테두리까지 부모의 20/80%로 지정해야 부모 영역안에 잘 담김 */
            color : #000000 85%;
            font-size : 12px;
            font-weight : lighter;
        }

        #p1{
            height : 80%;
            padding-top : 12px;
            padding-left : 15px;
        }

        #p2{
            height : 20%;
            text-align : center;
        }

    </style>
</head>
<body>
    
    <div id="footer">
        <div id="footer_1">
            <a href="#">이용약관</a> |
            <a href="#">개인정보처리방침</a> |
            <a href="#">훈련비 게시</a>
        </div>
        <div id="footer_2">
            <p id="p1">
                강남지원 1관 : 서울특별시 강남구 테헤란로14길 6 남도빌딩 2F, 3F, 4F, 5F, 6F <br>
                강남지원 2관 : 서울특별시 강남구 테헤란로10길 9 그랑프리 빌딩 4F, 5F, 7F <br>
                강남지원 3관 : 서울특별시 강남구 테헤란로 130 호산빌딩 5F, 6F <br>
                종로지원 : 서울특별시 중구 남대문로 120 그레이츠 청계(구 대일빌딩) 2F, 3F <br>
                당산지원 : 서울특별시 영등포구 선유동2로 57 이레빌딩(구관) 19F, 20F
            </p>
            <p id="p2">
                Copyright © 1998-2023 KH Information Educational Institute All Right Reserved
            </p>

        </div>
    </div>

</body>
</html>

37-3. 로그인영역만들기

<!DOCTYPE html>
<html lang="en">
<head>
    <title>로그인영역 만들기 ㅎ.ㅎ</title>

    <style>
        div, form{
            box-sizing : border-box;
        }

        /* 전체를 감싸는 div 속성 */
        #content_3{
            width : 250px;
            height : 550px;
            background-color : #FEE500;
        }

        /* 1번 */
        #login_form{
            width : 100%;
            height : 30%;
        }

        /* 2_1번, 2_2번 */
        #login_form > * {
            width : 100%;
        }
        #login_form_input{
            height : 80%;
        }
        #login_form_etc{
            height : 20%;
        }

        /* 3_1번, 3_2번 */
        #login_form_input > div{
            height : 100%;
            float : left;
        }
        #login_input_id_pwd{width : 70%;}
        #login_input_btn{width : 30%;}

        /* input태그 늘려주기 */
        #login_input_id_pwd > input{
            width : 100%;
            height : 50%;
            box-sizing: border-box;
            border : 1px solid rgba(82, 82, 82, 0.5);
        }
        #login_input_btn > input{
            width : 100%;
            height : 100%;
            background-color : #3A1D1D;
            border : none;
            color : white;
            border-radius : 4px;
        }

        #login_form_etc > a{
            text-decoration : none;
            color : #000000;
            font-size : 12px;
            margin : 5px;
        }
    </style>
</head>
<body>

    <div id="content_3">
    
        <!-- 1. 로그인과 관련된 전체 내용을 감싸는 div -->
        <div id="login_form">
            <!-- 2_1. 입력받을 input태그들이 존재할 영역 -->
            <form action="login.do" method="post" id="login_form_input">
                <!-- 3_1. 왼쪽 : 아이디, 비밀번호 입력받을 text box 영역 -->
                <div id="login_input_id_pwd">
                    <input type="text" name="userId" placeholder="아이디" required>
                    <input type="password" name="userPwd" placeholder="비밀번호" required>
                </div>
                <!-- 3_2. 오른쪽 : 요청전송을 보낼 수 있는 button 영역 -->
                <div id="login_input_btn">
                    <input type="submit" value="로그인">
                </div>

            </form>
            <!-- 2_2. 회원가입 / ID / PWD 찾기 페이지를 요청할 a태그들이 존재할 영역 -->
            <div id="login_form_etc">
                <a href="#">회원가입</a> |
                <a href="#">아이디 / 비밀번호 찾기</a>
            </div>
        </div>
    </div>


    
</body>
</html>

37-4. 검색창만들기

<!DOCTYPE html>
<html lang="en">
<head>
    <title>검색창</title>
    <style>
        div, form{
            box-sizing : border-box;
        }
        /* 전체를 감싸는 div */
        #header_2{
            width : 650px;
            height : 200px;
        }

        /*------------------------------------------------------------------*/
        /* 자식요소를 부모요소 정중앙에 위치 */
        #header_2{
            position : relative;
        }

        #search_form{
            width : 70%;
            height : 20%;
            position : absolute;
            top : 0px;
            bottom : 0px;
            right : 0px;
            left : 0px;
            margin : auto;            
        }

        /* 검색창 form 태그 내부 div 속성 */
        #search_form > div{
            height : 100%;
            float : left;
        }

        #search_text{width : 90%;}
        #search_btn{width : 10%;}

        /* input태그 늘려주기 */
        #search_form input{
            width : 100%;
            height : 100%;
            box-sizing : border-box;
            border : 1px solid #FEE500;
        }

        #search_form input[type=submit]{
            background-color : #FEE500;
            color : #3A1D1D;
            font-weight : 600;
        }


    </style>
</head>
<body>
    <div id="header_2">

        <form action="search.do" method="get" id="search_form">
            <div id="search_text">
                <input type="text" name="query">
            </div>
            <div id="search_btn">
                <input type="submit" value="검색">
            </div>
        </form>
    </div>

</body>
</html>

37-5. navi만들기

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Nav만들기</title>
    <style>
        div{
            box-sizing : border-box;
        }

        #navigator{
            width : 1000px;
            height : 40px;
        }

        /*-----------------------------------------------------------------------*/

        #navi{
            list-style : none;
            /* ul요소는 기본적으로 위, 아래 margin이 존재 + 왼쪽에는 padding도 있음 */
            margin : 0;
            padding : 0;
            height : 100%;
        }

        #navi > li{
            float : left;
            height : 100%;
            width : 13%;
            text-align : center;
        }

        #navi a{
            text-decoration : none;
            color : #FEE500;
            font-weight : 800;
            width : 100%;
            height : 100%; /* a태그는 인라인 요소기 때문에 width, height속성이 적용 X */
            display : block; /* 인라인 요소를 블록으로 바꿔줌 */
            /* vertical-align : middle; //블록에선 못씀 */
            line-height : 35px; /* 줄간격 속성 px / % / em */
        }

        #navi a:hover{
            font-size : 18px;
            color : #FFE600;
        }

        #navi > li > ul{
            list-style : none;
            padding : 0;
            display : none; /* 평소에는 안보이다가 마우스가 올라가는 순간 펼쳐지는 효과 1 */
        }

        #navi > li > a:hover + ul{
            display : block; /* 평소에는 안보이다가 마우스가 올라가는 순간 펼쳐지는 효과 2 */
        }

        #navi > li > ul:hover{
            display : block; /* 평소에는 안보이다가 마우스가 올라가는 순간 펼쳐지는 효과 3 */
        }

        #navi > li > ul a{font-size : 11px;}
        #navi > li > ul a:hover{font-size : 14px;}

    </style>
</head>
<body>

    <div id="navigator">

        <ul id="navi">
            <li><a href="">Java</a></li>
            <li><a href="">Oracle</a></li>
            <li>
                <a href="">FrontEnd</a>
                <ul>
                    <li><a href="">HTML</a></li>
                    <li><a href="">CSS</a></li>
                    <li><a href="">JavaScript</a></li>
                    <li><a href="">JQuery</a></li>
                </ul>
            
            </li>
            <li>
                <a href="">Server</a>
                <ul>
                    <li><a href="">JDBC</a></li>
                    <li><a href="">Servlet</a></li>
                    <li><a href="">JSP</a></li>
                    <li><a href="">AJAX</a></li>
                </ul>
            </li>

            <li>
                <a href="">Framework</a>
                <ul>
                    <li><a href="">MyBatis</a></li>
                    <li><a href="">Spring</a></li>
                    <li><a href="">Sprint Boot</a></li>
                    <li><a href="">React</a></li>
                </ul>
            </li>

        </ul>
    </div>

</body>
</html>

37-6. 최종본

화면 통합 시 이슈 발생 : 메인메뉴의 a태그와 서브메뉴의 ul태그가 연결이 미세하게 끊겨있음
transform : 애니메이션 효과를 줄 수 있는 속성
scale() : 크기
           =>  transform : scale(1);

<!DOCTYPE html>
<html lang="en">
<head>
    <title>화면을 나누자~</title>
    <style>
        div{
            border : 1px solid red;
            box-sizing : border-box;
        }

        /* 전체를 감싸는 div */
        #wrap{
            width : 1000px;
            height : 800px;
            margin : auto;
        }

        /* 크게 4등분 */
        #wrap > div{width : 1000px;}
        #header, #footer{height : 20%;}
        #navigator{height : 5%;}
        #content{height : 55%;}

        /* 세부 div를 속성 */
        /* 공통속성 */
        #header > div, #content > div{
            height : 100%;
            float : left;
        }

        /* 각각의 요소들 가로길이를 정해주기 */
        #header_1{width : 20%;}
        #header_2{width : 65%;}
        #header_3{width : 15%;}

        #content_1{width : 15%;}
        #content_2{width : 60%;}
        #content_3{
            width : 25%;
            background-color : #FEE500;
        }

        /* --- 여기부터는 footer 영역 --- */

        /* 세부속성 */
        #footer_1, #footer_2{
            background-color : #FEE500;
            width : 100%;
        }

        #footer_1{
            height : 20%;
            background-color : #3A1D1DE7;
            color : white;
        }

        #footer_2{
            height : 80%;
        }

        /* footer_1의 a태그 속성 */
        #footer_1 > a{
            text-decoration : none;
            font-weight : 650;
            color : white;
            margin : 15px;
            vertical-align : middle; /* vertical-align은 안먹히는 요소가 있음 */
        }

        #footer_1 > a:hover{
            color : forestgreen;
        }

        /* p태그에 대한 세부적인 속성들 */
        #footer_2 > p{
            width : 100%;
            /* p태그의 특성상 두 개의 p태그 사이에 margin이 기본적으로 위, 아래 16px씩 들어가 있음 */
            margin : 0;
            box-sizing : border-box;
            /* p태그의 테두리까지 부모의 20/80%로 지정해야 부모 영역안에 잘 담김 */
            color : #000000 85%;
            font-size : 12px;
            font-weight : lighter;
        }

        #p1{
            height : 80%;
            padding-top : 12px;
            padding-left : 15px;
        }

        #p2{
            height : 20%;
            text-align : center;
        }

        /* --- 여기부터는 login 영역 --- */

        /* 1번 */
        #login_form{
            width : 100%;
            height : 30%;
        }

        /* 2_1번, 2_2번 */
        #login_form > * {
            width : 100%;
        }
        #login_form_input{
            height : 80%;
        }
        #login_form_etc{
            height : 20%;
        }

        /* 3_1번, 3_2번 */
        #login_form_input > div{
            height : 100%;
            float : left;
        }
        #login_input_id_pwd{width : 70%;}
        #login_input_btn{width : 30%;}

        /* input태그 늘려주기 */
        #login_input_id_pwd > input{
            width : 100%;
            height : 50%;
            box-sizing: border-box;
            border : 1px solid rgba(82, 82, 82, 0.5);
        }
        #login_input_btn > input{
            width : 100%;
            height : 100%;
            background-color : #3A1D1D;
            border : none;
            color : white;
            border-radius : 4px;
        }

        #login_form_etc > a{
            text-decoration : none;
            color : #000000;
            font-size : 12px;
            margin : 5px;
        }        

        /* --- 여기부터는 검색 영역 --- */

        #header_2{
            position : relative;
        }

        #search_form{
            width : 70%;
            height : 20%;
            position : absolute;
            top : 0px;
            bottom : 0px;
            right : 0px;
            left : 0px;
            margin : auto;            
        }

        /* 검색창 form 태그 내부 div 속성 */
        #search_form > div{
            height : 100%;
            float : left;
        }

        #search_text{width : 90%;}
        #search_btn{width : 10%;}

        /* input태그 늘려주기 */
        #search_form input{
            width : 100%;
            height : 100%;
            box-sizing : border-box;
            border : 1px solid #FEE500;
        }

        #search_form input[type=submit]{
            background-color : #FEE500;
            color : #3A1D1D;
            font-weight : 600;
        }

        /* --- 여기부터는 navi --- */

        #navi{
            list-style : none;
            /* ul요소는 기본적으로 위, 아래 margin이 존재 + 왼쪽에는 padding도 있음 */
            margin : 0;
            padding : 0;
            height : 100%;
        }

        #navi > li{
            float : left;
            height : 100%;
            width : 13%;
            text-align : center;
        }

        #navi a{
            text-decoration : none;
            color : #FEE500;
            font-weight : 800;
            width : 100%;
            height : 100%; /* a태그는 인라인 요소기 때문에 width, height속성이 적용 X */
            display : block; /* 인라인 요소를 블록으로 바꿔줌 */
            /* vertical-align : middle; //블록에선 못씀 */
            line-height : 35px; /* 줄간격 속성 px / % / em */



            /* 화면 통합 시 이슈 발생 : 메인메뉴의 a태그와 서브메뉴의 ul태그가
            연결이 미세하게 끊겨있음 */
            /*
                transform : 애니메이션 효과를 줄 수 있는 속성
                scale() : 크기
            */
            transform : scale(1);
        }

        #navi a:hover{
            font-size : 18px;
            color : #FFE600;
        }

        #navi > li > ul{
            list-style : none;
            padding : 0;
            display : none; /* 평소에는 안보이다가 마우스가 올라가는 순간 펼쳐지는 효과 1 */
        }

        #navi > li > a:hover + ul{
            display : block; /* 평소에는 안보이다가 마우스가 올라가는 순간 펼쳐지는 효과 2 */
        }

        #navi > li > ul:hover{
            display : block; /* 평소에는 안보이다가 마우스가 올라가는 순간 펼쳐지는 효과 3 */
        }

        #navi > li > ul a{font-size : 11px;}
        #navi > li > ul a:hover{font-size : 14px;}


    </style>
</head>
<body>

    <div id="wrap">
        <div id="header">
            <div id="header_1"></div>
            <div id="header_2">

                <form action="search.do" method="get" id="search_form">
                    <div id="search_text">
                        <input type="text" name="query">
                    </div>
                    <div id="search_btn">
                        <input type="submit" value="검색">
                    </div>
                </form>
            </div>
            <div id="header_3"></div>
        </div>
        <div id="navigator">
            <ul id="navi">
                <li><a href="">Java</a></li>
                <li><a href="">Oracle</a></li>
                <li>
                    <a href="">FrontEnd</a>
                    <ul>
                        <li><a href="">HTML</a></li>
                        <li><a href="">CSS</a></li>
                        <li><a href="">JavaScript</a></li>
                        <li><a href="">JQuery</a></li>
                    </ul>
                
                </li>
                <li>
                    <a href="">Server</a>
                    <ul>
                        <li><a href="">JDBC</a></li>
                        <li><a href="">Servlet</a></li>
                        <li><a href="">JSP</a></li>
                        <li><a href="">AJAX</a></li>
                    </ul>
                </li>
    
                <li>
                    <a href="">Framework</a>
                    <ul>
                        <li><a href="">MyBatis</a></li>
                        <li><a href="">Spring</a></li>
                        <li><a href="">Sprint Boot</a></li>
                        <li><a href="">React</a></li>
                    </ul>
                </li>
    
            </ul>

        </div>
        <div id="content">
            <div id="content_1"></div>
            <div id="content_2"></div>
            <div id="content_3">

        <!-- 1. 로그인과 관련된 전체 내용을 감싸는 div -->
                <div id="login_form">
                    <!-- 2_1. 입력받을 input태그들이 존재할 영역 -->
                    <form action="login.do" method="post" id="login_form_input">
                        <!-- 3_1. 왼쪽 : 아이디, 비밀번호 입력받을 text box 영역 -->
                        <div id="login_input_id_pwd">
                            <input type="text" name="userId" placeholder="아이디" required>
                            <input type="password" name="userPwd" placeholder="비밀번호" required>
                        </div>
                        <!-- 3_2. 오른쪽 : 요청전송을 보낼 수 있는 button 영역 -->
                        <div id="login_input_btn">
                            <input type="submit" value="로그인">
                        </div>

                    </form>
                    <!-- 2_2. 회원가입 / ID / PWD 찾기 페이지를 요청할 a태그들이 존재할 영역 -->
                    <div id="login_form_etc">
                        <a href="#">회원가입</a> |
                        <a href="#">아이디 / 비밀번호 찾기</a>
                    </div>
                </div>
            </div>
        </div>
        <div id="footer">

            <div id="footer_1">
                <a href="#">이용약관</a> |
                <a href="#">개인정보처리방침</a> |
                <a href="#">훈련비 게시</a>
            </div>
            <div id="footer_2">
                <p id="p1">
                    강남지원 1관 : 서울특별시 강남구 테헤란로14길 6 남도빌딩 2F, 3F, 4F, 5F, 6F <br>
                    강남지원 2관 : 서울특별시 강남구 테헤란로10길 9 그랑프리 빌딩 4F, 5F, 7F <br>
                    강남지원 3관 : 서울특별시 강남구 테헤란로 130 호산빌딩 5F, 6F <br>
                    종로지원 : 서울특별시 중구 남대문로 120 그레이츠 청계(구 대일빌딩) 2F, 3F <br>
                    당산지원 : 서울특별시 영등포구 선유동2로 57 이레빌딩(구관) 19F, 20F
                </p>
                <p id="p2">
                    Copyright © 1998-2023 KH Information Educational Institute All Right Reserved
                </p>
    
            </div>
    
        </div>
    </div>

    
</body>
</html>

 

 

 

 - FIGMA html디자인 관련..

https://www.figma.com/