커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
자바스크립트 showText 와 hideText에 대한 코드와 적용이 이상합니다.
인생사진 쏙쏙 코딩네컷 v0
1주차
북마크
이*민
댓글
3
추천
0
조회수
12
조회수
12
답변 완료

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

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


showText() 가 글자가 보이는 것이라면서 opacity:0 이면 투명해 지는거라 보이지 않습니다.

hideText() 역시 글자가 안 보여서 감추게 된다는 것인데 opacity:1 이면 보이게 됩니다.


이 코드가 결과적으로 마우스를 올렸을 때 보이고 내리면 안보이게 되는 이유는


<div>에서

onmouseover="hideText(1)"

onmouseout="showText(1)" 이라고 했기 때문입니다.


의미상 이건 마우스를 올리면 글자가 사라지고, 마우스를 빼면 글자가 보이란 코딩이 됩니다.


결과적으로는 동작이 되지만, 의미상 맞지가 않습니다.


showText() 는 opacity:1 이 되어야 하고

hideText()는 opacity:0 으로 투명해져서 안보여야 하는게 아닌가요?


그리고, onmouseover = "showText()" 하고

onmouseout="hideText()"로 해서 코드와 의미를 맞추어야 하는게 아닌가 합니다.


확인 한번 부탁드립니다 ^^








<!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;

            justify-content: center;

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

        }


        .container {

            width: 390px;

            background-color: #ff9d73;

            height: 100%;

        }


        .photos {

            margin-top: 30px;

        }


        .photo-frame {

            background-color: white;

            margin: 15px 20px;

            height: 200px;


            background-size: cover;


            position: relative;

        }


        .footer {

            display: flex;

            flex-direction: column;

            align-items: center;

        }


        .f-title {

            color: white;

            font-size: 25px;

            font-weight: 900;

        }


        .f-date {

            color: white;

            font-size: 15px;

            font-weight: 500;

        }


        #image1 {

            background-image: url('./IMG\ \(1\).JPG');

        }


        #image2 {

            background-image: url('./IMG\ \(2\).JPG');

        }


        #image3 {

            background-image: url('./IMG\ \(3\).JPG');

        }


        #image4 {

            background-image: url('./IMG\ \(4\).JPG');

        }


        .photo_description {

            color: white;

            background-color: black;



            text-overflow: ellipsis;

            width: max-content;

            padding: 0 20px;

            margin-bottom: 10px;


            border-radius: 10px;



            position: absolute;

            bottom: 0;


            transform: translate(-50%);

            left: 50%;

        }


        .video {

            width: 100%;

            height: 100%;

        }


        .showText {

            opacity: 1;

        }


        .hideText {

            opacity: 0;

            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="showText(1)" onmouseout="hideText(1)" onclick="alertText(1)">

                <span id="desc1" class="photo_description">

                    로켓을 기다리는 이도연

                </span>

            </div>

            <div id="image1" class="photo-frame" onmouseover="showText(2)" onmouseout="hideText(2)" onclick="alertText(2)">

                <span id="desc2" class="photo_description">

                    로켓을 기다리며 아빠와 한 컷

                </span>

            </div>

            <div id="image1" class="photo-frame" onmouseover="showText(3)" onmouseout="hideText(3)" onclick="alertText(3)">

                <span id="desc3" class="photo_description">

                    전주에서 책 만들기

                </span>

            </div>

            <div class="photo-frame">

                <iframe src="https://www.youtube.com/embed/zjhKEXKBQ6U" frameborder="0" class="video"></iframe>

            </div>

        </div>

        <div class="footer">

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

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

        </div>

</body>


</html>



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