
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
마우스를 올렸는데도 설명이 출력되지 않고 있습니다.
onmouseover, onmouseout 이벤트가 발생되지 않고 있는데, 어디서 잘못되었는지 모르겠습니다.
작성한 코드 및 에러 메세지
/<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<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("https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/free_photos/background.png");
}
.container {
width: 390px;
background-color: coral;
height: 100%;
}
.photos{
margin-top: 30px;
}
.photo-frame{
background-color: white;
margin: 15px 20px;
height: 200px;
}
.footer{
display: flex;
flex-direction: column; /*column 아래방향*/
align-items: center;
}
.f-title{
color:white;
font-size: 25px;
font-weight: 900px;
}
.f-date{
color:white;
font-size: 15px;
font-weight: 500px;
}
.photo-frame{
background-size: cover;
position: relative;
cursor: pointer; /*마우스가 사진 위로 올라가면 포인터 아이콘으로 바뀌도록*/
}
.photo-description{
color:white;
background-color: black;
width: fit-content;
padding: 0 20px; /*상하 0 좌우20px*/
margin-bottom: 10px;
border-radius: 10px;
position: absolute;
bottom: 0;
transform: translate(-50%);
left: 50%;
opacity: 0; /*초반에 페이지 열릴 때 기본으로 안보이게 하기 위한 설정*/
}
#image1{
background-image: url("https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/free_photos/img1.png");
}
#image2{
background-image: url("https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/free_photos/img2.png");
}
#image3{
background-image: url("https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/free_photos/img3.png");
}
.video{
width:100%;
height:100%;
}
.showText{opacity: 0;}
.hideText{
opacity: 1;
transition: opacity 0.5s linear;
}
</style>
<script>
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. 해당 사진을 찾아 showText 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="des1" class="photo-description">
사진1 이미지 설명
</span>
</div>
<div id="image2" class="photo-frame"
onmouseover="hideText(2)"
onmouseout="showText(2)"
onclick="alertText(2)">
<span id="des2" class="photo-description">
사진2 이미지 설명
</span>
</div>
<div id="image3" class="photo-frame"
onmouseover="hideText(3)"
onmouseout="showText(3)"
onclick="alertText(3)"
>
<span id="des3" class="photo-description">
사진3 이미지 설명
</span>
</div>
<div class="photo-frame">
<iframe src="https://youtu.be/TWz1btekxfs"
frameborder="0"
class="video">
</iframe>
</div>
</div>
<div class="footer">
<p class="f-title">Happy Lunch time</p>
<p class="f-date">2023.2.19.</p>
</div>
</div>
</body>
</html>
