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

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

by 조반짝 2023. 6. 14.
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
반응형