☭DEVELOPER/#2 웹개발(자바기반 풀스택)

비주얼 스튜디오 코드 29 _ 마우스오버 효과 복습

조반짝 2023. 6. 14. 10:18
728x90
반응형

html 골격만들기

클래스에 이름을 공통으로 쓰기 위해서는 클래스에 이름을 2개로 사용해줌

figure 태그로 이미지 앞면, 뒷면의 태그를 넣어준다.

css에서 효과는 똑같으니까 effect이름으로 스타일을 넣어준다.

● >표시는 바로밑에 자식에게 사용해야한다. 

 

figure 피그캡션 수정하기

_효과주기

left / right 각각 front,back 효과를 주어야한다. 

hover  시 효과 넣어주기

 

> html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>마우스오버효과</title>
    <link rel="stylesheet" href="./css/style.css">
</head>
<body>
    <div id="wrap">
        <div class="left effect">
            <figure class="front">
                <img src="./img/img01.png" alt="거실이미지">
                <figcaption>
                    <h3>왼쪽이미지 앞면</h3>
                </figcaption>
            </figure>
            <figure class="back">
                <img src="./img/img02.png" alt="거실이미지2">
                <figcaption>
                    <h3>왼쪽이미지 뒷면</h3>
                </figcaption>
            </figure>
        </div>
        <div class="right effect">
            <figure class="front">
                <img src="./img/img03.png" alt="식물이미지">
                <figcaption>
                    <h3>오른쪽이미지 앞면</h3>
                </figcaption>
            </figure>
            <figure class="back">
                <img src="./img/img04.png" alt="식물이미지2">
                <figcaption>
                    <h3>오른쪽이미지 뒷면</h3>
                </figcaption>
            </figure>
        </div>
    </div>
</body>
</html>

> css

@charset "utf-8";

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

img{
    display: block;
}

body{
    height: 100vh;
    background-color: #0f2027;
    /* 배경색은 body에 넣어줌 */
}

#wrap{
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

#wrap .effect{
    width: 400px;
    height: 300px;
    margin: 10px;
    position: relative;
    /* .front, .back의 기준점 */
}
/* effect라는 공통된 이름을 사용하여 한번에 효과를 써준다, */

#wrap .effect img{
    width: 100%;
    /* 이미지가 100%에 맞는 사이즈가 나온다. */
}

#wrap .effect .front{
    position: absolute;
    left: 0;
    top: 0;
    z-index: 10;
    /* display: none; */
}

#wrap .effect .back{
    position: absolute;
    left: 0;
    top: 0;
    z-index: 9;
}

/* effect(클래스)이름을 사용하여 left,right의 효과를 동시에 편집할 수있다 */


/* figcaption의 공통된 상위 태그가 figure이므로 figure를 넣어줌 */
#wrap .effect figure figcaption{
    background-color: rgba(255,255,255,0.6);
    padding: 20px;
    /* 박스 안쪽 여백 */
    text-align: center;
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    /* position을 띄우면 너비값을 잃기 때문에 width값을 넣어준다. */
}
#wrap .effect figure figcaption h3{
    font-size: 24px;
}

/* 왼쪽이미지 효과주기 */

#wrap .left .front{
    transform: rotateX(0deg);
    transition: all 0.7s;
    backface-visibility: hidden;
}
#wrap .left:hover .front{
    transform: rotateX(180deg);
}
#wrap .left .back{
    transform: rotateX(180deg);
    transition: all 0.7s;
    backface-visibility: hidden;
}
#wrap .left:hover .back{
    transform: rotateX(0deg);
}

/* 오른쪽이미지 효과주기 */

#wrap .right .front{
    transform: rotateY(0deg);
    transition: all 1s;
    backface-visibility: hidden;
}

#wrap .right:hover .front{
    transform: rotateY(180deg);
}

#wrap .right .back{
    transform: rotateY(180deg);
    transition: all 1s;
    backface-visibility: hidden;
}


#wrap .right:hover .back{
    transform: rotateY(0deg);
}
728x90
반응형