본문 바로가기

JavaScript

[html/css] Javascript - 마우스를 따라다니는 아저씨 눈 자바스크립트로 만들기/onmousemove, eventclientX, eventclientY, window.innerHeight, window.innerWidth

반응형

 

마우스를 따라다니는 신사 눈 자바스크립트로 만들기

 

    <script type="text/javascript" src="./js/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        var balls = document.getElementsByClassName("ball");
        document.onmousemove = function () {
            var x = event.clientX * 100 / window.innerWidth + "%";
            var y = event.clientY * 100 / window.innerHeight + "%";

            for (var i = 0; i < 2; i++) {
                balls[i].style.left = x;
                balls[i].style.top = y;

            }
        }
    </script>
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>javascript</title>
    <link href="./css/eyes.css" style="text/css" rel="stylesheet">

</head>

<body>
    <div class="face">
        <div class="hair">
            <div class="hatfur"></div>
        </div>
        <div class="eyes">
            <div class="eye">
                <div class="ball"></div>
            </div>
            <div class="eye">
                <div class="ball"></div>
            </div>
            <div class="mus"></div>
            <div class="mus1"></div>
            <div class="mouth"></div>
            <div class="mouth1"></div>
        </div>
    </div>
</body>

</html>
body{
    margin:0;
    padding:0;
    background: #34495e;
}
.face{
    z-index: 99;
    position: absolute;
    vertical-align: center;
    top:10%;
    left:10%;
    width: 100%;
    text-align: center;
    background:#FFE5C2;
    border-radius: 30%;;
    width: 600px;
    height: 800px;
}
.hair{
    position: relative;
    vertical-align: center;
    top:-40px;
    left:-10px;
    width: 100%;
    text-align: center;
    background:#2e2a2a;
    border-top-left-radius: 50%;
    border-top-right-radius: 50%;
    border-bottom-left-radius: 5%;
    border-bottom-right-radius: 5%;
    width: 620px;
    height: 530px;
}
.hatfur{
    position: relative;
    vertical-align: center;
    top:390px;
    left:-38px;
    width: 100%;
    text-align: center;
    background:#2e2a2a;
    border-top-left-radius: 50%;
    border-top-right-radius: 50%;
    border-bottom-left-radius: 30%;
    border-bottom-right-radius: 30%;
    width: 700px;
    height: 160px;
}
.eyes{
    position: absolute;
    top:71%;
    transform: translateY(-50%);
    width: 100%;
    text-align: center;
}
.eye{
    width: 200px;
    height: 100px;
    background: #ffffff;
    margin:40px;
    border-top-left-radius: 50%;
    border-top-right-radius: 50%;
    border-bottom-left-radius: 5%;
    border-bottom-right-radius: 5%;
    display: inline-block;
    position: relative;
    overflow: hidden;
}
.ball{
    width: 40px;
    height: 40px;
    background: #000000;
    position: absolute;
    top:23%;
    left:33%;
    border-radius: 50%;;
    border: 15px solid #333333;
}
.mus{
    position: absolute;
    width: 160px;
    height: 60px;
    top: 180px;
    left:0px;
    background: #333333;
    border-radius: 50%;
    display: inline-block;
    -webkit-transform: rotate(-20deg);
}
.mus1{
    position: absolute;
    width: 160px;
    height: 60px;
    top: 180px;
    left:440px;
    background: #333333;
    border-radius: 50%;
    display: inline-block;
    -webkit-transform: rotate(20deg);
}
.mouth{
    z-index: 5;
    position: absolute;
    background-color: #683232;
    width: 100px;
    height: 160px;
    margin:0 auto;
    left:42%;
    border-radius: 5%;
}

 

 

 event.clientX => 브라우저 클라이언트 영역의 좌측상단을 기준으로 측정된 x축 좌표

event.clientY => 브라우저 클라이언트 영역의 좌측상단을 기준으로 측정된 y축 좌표

마우스 스크롤이 되지 않으면 입력한 값과 같은 값을 가지고, 마우스 스크롤이 되면, 스크롤 된 값에 따라 변합니다.

 

window.innerWidth => 창의 넓이

window.innerHeight => 네비게이션 창을 제외한 높이

 

 

               

 

근위병 만들려고 하다가 그냥 깜찍한 신사 아저씨로 만들었습니다

디자인은 제 마음대로 ㅎㅎ

반응형