커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
자바스크립트 기능구현이 잘 안 됩니다.
인생사진 쏙쏙 코딩네컷 v0
1주차
북마크
최*규
댓글
5
추천
0
조회수
18
조회수
18
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


onmouseover="hideText(1)"

onmouseout="showText(1)"

onclick="alertText(1)"


이 부분 글씨가 사진 위에 나타나며 mouse 기능 구현이 안 됩니다.

스파르타 즉문즉답


스파르타 즉문즉답









<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8" />

  <meta http-equiv="X-UA-Compatible" content="IE=edge" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  <title>코딩네컷</title>

    <style>

    /* 이서윤체 폰트 적용을 위한 코드 */

    @font-face {

      font-family: "LeeSeoyun";

      src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2202-2@1.0/LeeSeoyun.woff")

        format("woff");

      font-weight: normal;

      font-style: normal;

    }

    /* body태그 자체에 css 요소 부여 */

    body {

        font-family: "LeeSeoyun";

        margin: 0;

        display: flex;

        justify-content: center;

        background-image: url("./background.png");

    }

    /* 너비는 390픽셀이구, 배경색이 좀 필요하고 부모(body) 높이 전체를 쓸거야 */

    .container {

        width: 390px;

        background-color: #ff9d73;

        height: 100%;

    }

    /* 위로 여유가 30픽셀 정도 있었으면 좋겠네 */

    .photos {

        margin-top: 30px;

    }

    /* 배경은 알아보기 쉽게 흰색으로 해주고, 좌우 마진은 20픽셀 */

    /* 상하 마진은 15픽셀로 해줘. 높이는 각 사진마다 200 픽셀로!*/

    .photo-frame {

        background-color: white;

        margin: 15px 20px;

        height: 200px;

        background-size: cover;

        position: relative;

        cursor: pointer;

    }

    /* 아래 영역 전체는, flexible하게 하되 그 내부 아이템들은 세로로 쌓을거야 */

    /* 근데 모두 가운데 정렬 했으면 좋겠어! */

    .footer {

        display: flex;

        flex-direction: column;

        align-items: center;

    }

    /* 아래 영역의 제목 부분은 폰트가 좀 두껍고, 사이즈는 25픽셀! 흰색으로 */

    .f-title {

        font-size: 25px;

        font-weight: 900;

        color: white;

    }

    /* 아래 영역의 날짜 부분은 폰트가 중간 두께고, 사이즈는 15픽셀! 흰색으로 */

    .f-date {

        font-size: 15px;

        font-weight: 500;

        color: white;

    }

    #image1 {

        background-image: url("./img1.jpg");

        background-position: center 5%;

    }

    #image2 {

        background-image: url("./img2.jpg");

        background-position: center 50%;

    }

    #image3 {

        background-image: url("./img3.jpg");

        background-position: center 50%;

    }

    #image4 {

        background-image: url("./img4.jpg");

        background-position: center 50%;

    }

    .photo-description {

        color: white;

        background-color: black;

        width: fit-content;

        padding: 0 20px;

        margin-bottom: 10px;

        border-radius: 10px;

        position: absolute;

        bottom: 0;

        transform: translate(-50%);

        left: 50%;

        opacity: 0; //초반에 페이지 열릴 때 기본으로 안보이게 하기 위한 설정이에요

    }

    .video {

        width: 100%;

        height: 100%;

    }

    /* opacity : 투명도를 의미해요! 0% 투명하다. 즉 다 보인다. */

    .showText {

        opacity: 0;

    }

    /* opacity : 투명도를 의미해요! 100% 투명하다. 즉 안보인다. */

    /* transition : 나타날 때 0.5초동안 천천히 나타나는 효과를 주라는 의미에요 */

    .hideText {

        opacity: 1;

        transition: opacity 0.5s linear;

    }

    </style>

    <script>

    // 텍스트가 보여지는 기능

    // 1. 몇 번째 사진에 마우스가 올라갔는지 확인(if문)

    // 2. 해당 사진을 찾아 hideText class를 지워주고, showText는 삽입해줌

    function showText(number) {

    if (number === 1) {

        document.querySelector("#desc1").classList.remove("hideText");

        document.querySelector("#desc1").classList.add("showText");

    } else if (number === 2) {

        document.querySelector("#desc2").classList.remove("hideText");

        document.querySelector("#desc2").classList.add("showText");

    } else {

        document.querySelector("#desc3").classList.remove("hideText");

        document.querySelector("#desc3").classList.add("showText");

    }

    }

    // 텍스트가 감춰지는 기능

    // 1. 몇 번째 사진에서 마우스가 벗어났는지 확인(if문)

    // 2. 해당 사진을 찾아 shotText class를 지워주고, hideText는 삽입해줌

    function hideText(number) {

    if (number === 1) {

        document.querySelector("#desc1").classList.remove("showText");

        document.querySelector("#desc1").classList.add("hideText");

    } else if (number === 2) {

        document.querySelector("#desc2").classList.remove("showText");

        document.querySelector("#desc2").classList.add("hideText");

    } else {

        document.querySelector("#desc3").classList.remove("showText");

        document.querySelector("#desc3").classList.add("hideText");

    }

    }

    // 클릭 기능

    // 1. 선택된 사진의 숫자를 가진 텍스트를 alert 형태로 출력해줌

    function alertText(number) {

        alert(`${number}번째 추억이에요! 눌러주셔서 감사합니다 :)`);

    }

    </script>

</head>

<body>

    <div class="container">

            <div class="photos">

            <div id="image1"

                    class="photo-frame">

                    onmouseover="hideText(1)"

                    onmouseout="showText(1)"

                    onclick="alertText(1)"

                <span id="desc1" class="photo-description">

                     바다공주 장난감 놀이중                  

                </span>

            </div>

            <div id="image2"

                    class="photo-frame">

                    onmouseover="hideText(2)"

                    onmouseout="showText(2)"

                    onclick="alertText(2)"

                <span id="desc2" class="photo-description">

                    공주는 목욕을 좋아해

                </span>

            </div>

            <div id="image3" class="photo-frame">

                    onmouseover="hideText(3)"

                    onmouseout="showText(3)"

                    onclick="alertText(3)"

                <span id="desc3" class="photo-description">

                    공주님 산책패션

                </span>

            </div>

                <div class="photo-frame">

                    <iframe

                        src="./vodeo1.mp4"

                        frameborder="0"

                        class="video"

                        ></iframe>

                    </div>

                </div>

                <div class="footer">

                    <p class="f-title">Happy Lunch Time</p>

                    <p class="f-date">2023.01.23</p>

                </div>

            </div>

        </div>

</body>

</html>

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴