커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
1-6
인생사진 쏙쏙 코딩네컷 v0
1주차
북마크
강*미
댓글
3
추천
0
조회수
16
조회수
16
답변 완료

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

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


클릭했을 때 알럿 문구는 3장 모두 잘 나옵니다.

그런데 마우스 오버 효과가 첫번째 사진에는 적용이 되었는데 2~3번째에는 적용이 안되었네요

ㅠㅠ 어디가 틀린걸까용



보고 계신 화면

스파르타 즉문즉답

전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.




작성한 코드 및 에러 메세지



<!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>Document</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; /* flexible하게 보여줄건데 */
            justify-content: center; /* 안에 내용물들을 가운데 정렬 해줘! */
            background-image: url("./background.png");
        }


        .container{
            /* 너비는 390픽셀이구, 배경색이 좀 필요하고 부모(body) 높이 전체를 쓸거야 */
            width: 390px;
            background-color: #FF9D73;
            height: 100%;
        }    


        .photos {
            /* 위로 여유가 30픽셀 정도 있었으면 좋겠네 */
            margin-top: 30px;
        }


        .photo-frame {
        /* 배경은 알아보기 쉽게 흰색으로 해주고, 좌우 마진은 20픽셀 */
        /* 상하 마진은 15픽셀로 해줘. 높이는 각 사진마다 200 픽셀로!*/
        /* 포토프레임 안에 적절하게 이미지 크기를 제어*/
        /*photo-frame, 넌 .photo-description의 위치를 잡는 기준이 될거야!*/
        background-color: white;
        margin: 15px 20px;
        height: 200px;
        background-size: cover;
        position: relative;


        }



        /* footer 영역 전체는, flexible하게 하되 그 내부 아이템들은 세로(column)로 쌓을거야 */
        /* 근데 모두 가운데 정렬 했으면 좋겠어! */
        .footer {
            display: flex;
            flex-direction: column;
            align-items: center;
        }


        /* footer 영역의 제목 부분은 폰트가 좀 두껍고, 사이즈는 25픽셀! 흰색으로 */
        .f-title {
            font-size: 25px;
            font-weight: 900;
            color: white;
        }


        /* footer 영역의 날짜 부분은 폰트가 중간 두께고, 사이즈는 15픽셀! 흰색으로 */
        .f-date {
            font-size: 15px;
            font-weight: 500;
            color: white;
        }
        
        /*포토프레임 안 네컷 이미지 연결*/
        #image1 {
            background-image: url("./img1.png");
        }


        #image2 {
            background-image: url("./img2.png");
        }


        #image3 {
            background-image: url("./img3.png");
        }


        #image4 {
            background-image: url("./img4.png");
        }



        /*설명 스타일 조정*/
        .photo-description {
        /* 배경은 검게, 글자는 흰 색으로 */
        color: white;
        background-color: black;


        /* 가로 너비는 내부 콘텐츠에 딱 맞게! */
        width: fit-content;
        padding: 0 10px;
        margin-bottom: 10px;


        /*photo-description, 넌 기준으로부터 아래(bottom)에서 0만큼 위로 올라와서 위치해!*/
        position: absolute;
        bottom: 0;
         /*가운데 정렬도 잊지마! → (trnasform과 left는 set메뉴)*/
        transform: translate(-50%);
        left: 50%;


        /* 경계선 */
        border-radius: 10px;
        }


        /*영상을 포토프레임 안에 꽉차게 채우기*/
        .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="desc1" class="photo-description">
                환영!
            </span>
        </div>


        <div id="image3" class="photo-frame"
            onmouseover="hideText(3)"
            onmouseout="showText(3)"
            onclick="alertText(3)"
        >
            <span id="desc1" class="photo-description">
                ㅎㅇ
            </span>
        </div>


        <div id="image4" class="photo-frame">
            <iframe
            src="https://www.youtube.com/embed/agYZbSt-3LY"
            frameborder="0"
            class="video"
        ></iframe>
      </div>
    
    <div class="footer">
            <p class="f-title">HAPPY Lunch Time</p>
            <p>2023.01.25</p>
    </div>
    </div>
</body>
</html>


오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!




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