본문으로 바로가기

메뉴만들기 연습2

category CSS 2019. 11. 20. 13:43

문제

  1. img 사진을 넣어 contents의 높이가 자동으로 img 사이즈로 출력되게 해보세요.
  2. backdrop 만들기 
    (1)page로딩 시점에는 back-drop이 안 보임
    (2)menu를 클릭하면 back-drop이 보임
    (3)menu의 list를 클릭하거나 back-drop을 클릭하면 dackdrop이 안보임

 

1. display 속성을 알고 사용할 줄 안다.

2. z-index속성을 알고 사용할 줄 안다.

3. 엘리먼트에 javascript로 css 속성을 넣어줄 줄 안다.

 

css

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Step07_example2-1</title>
    <!-- 문제. menu를 클릭했을때 노란색 네모가 오른쪽으로 움직이게 해보세요(overflow연습) -->
    <style>
        .wrapper{
            width: 768px;
            border: 1px solid red;
            margin: 0 auto;
            position: relative;
            overflow: hidden;
        }

        .menu{
            width: 200px;
            height: 500px;
            border: 1px solid blue;
            background-color: yellow;
            position: absolute;
            left: -200px;
            transition: left 1s ease-out;
            /* 
            body에서 뒤에 작성되었을 수록 css layer에서는 위에쌓임
            즉, div.back-drop이 body에서 menu보다 뒤에 작성되었기때문에
            div.menu보다 위에 위치함. 
            div.menu를 가장 위로 빼주기 위해서는 z-index를 사용해주어야함
            (단, position 속성을 써서 배치했을때만 사용가능함)*/
            z-index: 100;
        }
        .back-drop{
            /* width와 height는 부모요소인 div.wrapper에 따라 지정되므로 따로 값을 안 줌 */
            position: absolute;
           /* body쌓여 있는 요소들 순서대로 출력되므로
            top, left, right, bottom위치를 지정해주지 않으면
            img 아래에 div.back-drop이 배치됨.
            (부모요소를 기준으로 너비지정) */
            top: 0px;
            left: 0px;
            right: 0px;
            bottom: 0px;
            background-color: #000000;
            opacity: 0.5; /*투명도*/
            /* page로딩시점에는 div.back-drop 안보이게 하기 */
            display: none;
        }
    </style>
</head>

html

<body>
    <div class="wrapper">
        <div class="menu">
            <h3>메뉴입니다</h3>
            <ul>
                <li><a href="">짜장면</a></li>
                <li><a href="">짬뽕</a></li>
                <li><a href="">볶음밥</a></li>
            </ul>
        </div>
        <button id="meunBtn">menu</button>
        <h1>메인 컨테츠 입니다.</h1>
        <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. A voluptatem suscipit cumque repellendus deleniti dicta quaerat laborum sequi. Quod quam vel eum! Consequuntur repellat fuga illum corrupti laborum enim odio.</p>
        <img src="../images/01_iron_man_2.jpg" alt=""/>
        <!-- div.wrapper의 형제요소 위치에 작성하면 
            div.back-drop의 position:absolute 속성에 의해 body를 기준으로 배치됨 -->
        <div class="back-drop"></div>
    </div>
</body>

javascript

<body>
    <script>
        var left=-200;
        document.querySelector("#meunBtn").addEventListener("click", function(){
            left=0;
            document.querySelector(".menu").style.left=left+"px";
            //버튼 클릭시 div.back-drop 보이게 하기
            //페이지 로딩시에 display:none이었던 속성을 버튼 클릭했을때 display:block으로 바꿔줌
            document.querySelector(".back-drop").style.display="block";
        });

        //dack-drop을 클릭했을때 menu가 들어가고, div.back-drop 안 보이게 하기
        document.querySelector(".back-drop").addEventListener("click",function(){
            //위의 javascript 코드에서 전역 변수에 있는 left 값을 클릭시 0으로 변경되게 해 놓았기 때문에 
            //기억되는 값은 0이다. 따라서 버튼 클릭시 다시 -200이 되도록 설정해주어야함.
            left=-200;
            document.querySelector(".menu").style.left=left+"px";
            document.querySelector(".back-drop").style.display="none";
        });
    </script>
</body>

 

'CSS' 카테고리의 다른 글

Grid system 그리드 시스템 사용법  (0) 2019.11.21
메뉴만들기연습3  (0) 2019.11.20
메뉴만들기 연습1  (0) 2019.11.19
CSS+Javascript 1  (0) 2019.11.19
이미 만들어져 있는 css요소를 div에 적용해보기  (0) 2019.11.19