[JS] onmouseover/ onmouseleave 활용한 메뉴 색상 변화

2022. 6. 2. 08:44Programming의 세계/JavaScript

onmouseover: 마우스를 올렸을 경우, onomouseover 이벤트를 발생시킨다.

onmouseleave: 올렸던 마우스가 나갔을 경우, onomouseleave 이벤트를 발생시킨다.

(onmouseleave의 경우 onomouseover과 매우 비슷한데자식요소들까지 영향을 주느냐 안주느냐의 차이점이라고 한다.)

 

onmouseover, onmouseleave 을 확인해보면

각각 이벤트를 'onmouseover!', 'onmouseleave!' 로 작성하여 콘솔창에 띄우게 해보았다.

<body>
    <style>
        #box {
            width: 100px;
            height: 100px;
            background-color: blueviolet;
        }
    </style>

    <div id="box" onmouseover="onMouseOver()" onmouseleave="onMouseLeave()"></div>

    <script>
        function onMouseOver() {
            console.log('onMouseOver!');
        }
        function onMouseLeave() {
            console.log('onMouseLeave!');
        }

    </script>
</body>

마우스를 갖다대고 땔때마다 콘솔창에 텍스트가 뜨는 것을 확인할 수 있다.

 

이를 활용하여 색상이 변경되는 메뉴를 만들어보겠다.

 

 


미션: 마우스를 갖다대면 흰색으로 바뀌는 메뉴 상자를 만들어보자!!


1. html 구성: 상자의 모양은 가로로 연이어 3개를 만들것이다. 다음과 같이 구성해본다.

    <div class="div1" onmouseover="changecolor1()" onmouseleave="backcolor1()">
        <div id="target1">html</div>
    </div>
    <div class="div1" onmouseover="changecolor2()" onmouseleave="backcolor2()">
        <div id="target2">css</div>
    </div>
    <div class="div1" onmouseover="changecolor3()" onmouseleave="backcolor3()">
        <div id="target3">java</div>
    </div>

2. style 구성: onmouseover 상태에는 흰색(changecolor class로 스타일 지정), onmouseleave상태에는 그레이 색 (div1 class에 스타일 지정) 을 띄게 하게 할 예정이다. <style>을 열어 스타일은 다음과 같이 구성한다.

    <style>
        .changecolor {
            background-color: white;
            color: black;
            border-color: black;
        }

        .div1 {
            display: inline-block;
            width: 100px;
            height: 50px;
            color: white;
            border-color: black;
            border-style: solid;
            background-color: gray;
            text-align: center;
            line-height: 50px;
        }
        .backcolor {
            background-color: gray;
            color: black;
            border-color: black;
         }
    </style>

3. function 구성: <script>로 자바스크립트를 열어 id를 받아 이를 변수화시켜주고 해당 변수의 클래스이름을 변환시켜주는 function을 만든다.

        function changecolor1() {
            let $target = document.getElementById('target1');
            $target.className = 'changecolor'
        }
        function backcolor1() {
            let $target = document.getElementById('target1');
            $target.className = 'backcolor'
        }

나머지 2가지 상자도 다음과같은 function을 만들어준다.

 

<결과창>

01

 

D.O.N.E!!