- Frederick Philips Brooks
Mythical Man-Month 저자
퀴즈 이펙트 02 번
결과 화면 입니다.
HTML 코드입니다.
<!DOCTYPE html>
<html lang="ko">
<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>퀴즈 이펙트02</title>
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/quiz.css">
</head>
<body>
<header id="header">
<h1><a href="../javascript14.html">Quiz</a><em>주관식 확인하기 유형</em></h1>
<ul>
<li><a href="quizEffect01.html">1</a></li>
<li class="active"><a href="quizEffect02.html">2</a></li>
</ul>
</header>
<!-- //header -->
<main id="main">
<div class="quiz_wrap">
<div class="quiz">
<div class="quiz_header">
<h2 class="quiz_title"><span></span> <em></em></h2>
</div>
<div class="quiz_main">
<div class="quiz_quection">
<em></em>. <span></span>
</div>
<div class="quiz_view">
<div class='dog_wrap'>
<div class='card-container'>
<div class="dog">
<div class="head">
<div class="ears"></div>
<div class="face"></div>
<div class="eyes">
<div class="teardrop"></div>
</div>
<div class="nose"></div>
<div class="mouth">
<div class="tongue"></div>
</div>
<div class="chin"></div>
</div>
<div class="body">
<div class="tail"></div>
<div class="legs"></div>
</div>
</div>
</div>
</div>
</div>
<div class="quiz_answer">
<input class="input" type="text" placeholder="정답을 적어주세요">
<button class="confirm">정답 확인 하기</button>
<div class="result"></div>
</div>
</div>
<div class="quiz_footer">
<div class="quiz_desc">설명</div>
</div>
</div>
</div>
</main>
<!-- //main -->
<footer id="footer">
<a href="mailto:ture403@gmail.com">ture403@gmail.com</a>
</footer>
<!-- //footer -->
</body>
css 코드 입니다 (강아지 이미지는 전에 있는 퀴즈 블로그 를 참조 하세요.)
/* header */
#header {
position: fixed;
left: 0;
top: 0;
background-color: #262626;
color: #fff;
padding: 10px;
margin-bottom: 100px;
width: 100%;
z-index: 1000;
display: flex;
justify-content: space-between;
}
#header::before {
content: "";
border: 4px ridge #a3a3a3;
position: absolute;
left: 5px;
top: 5px;
width: calc(100% - 10px);
height: calc(100% - 10px);
}
#header h1 {
font-size: 28px;
padding: 5px 5px 5px 10px;
font-family: 'DungGeunMo';
position: relative;
z-index: 10;
}
#header h1 a {
color: #fff;
}
#header h1 em {
font-size: 0.5em;
}
#header ul {
padding: 5px;
}
#header li {
display: inline;
z-index: 10;
position: relative;
}
#header li a {
color: #fff;
font-family: 'DungGeunMo';
border: 1px dashed #fff;
display: inline-block;
padding: 5px;
}
#header li.active a,
#header li a:hover {
background-color: #fff;
color: #000;
}
/* footer */
#footer {
position: fixed;
left: 0;
bottom: 0;
background-color: #262626;
width: 100%;
text-align: center;
}
#footer a {
color: #fff;
padding: 20px;
display: block;
font-family: 'DungGeunMo';
position: relative;
z-index: 10;
}
#footer::before {
content: "";
border: 4px ridge #a3a3a3;
position: absolute;
left: 5px;
top: 5px;
width: calc(100% - 10px);
height: calc(100% - 10px);
}
#main {
padding: 100px 0;
}
/* quiz_wrap */
.quiz_wrap {
display: flex;
justify-content: center;
flex-wrap: wrap;
}
.quiz_wrap .quiz {
width: 500px;
background-color: #fff;
border: 8px ridge #ecb2b2;
}
.quiz_title {
background-color: #ecb2b2;
border: 3px ridge #ecb2b2;
border-bottom-width: 6px;
padding: 5px;
font-family: 'DungGeunMo';
font-size: 16px;
color: #3b3b3b;
text-align: center;
}
.quiz_quection {
padding: 20px;
font-size: 24px;
font-family: 'arial';
line-height: 1.4;
font-weight: bold;
border-bottom: 6px ridge #ecb2b2;
}
.quiz_quection em {
color: hotpink;
}
.quiz_answer {
padding: 20px;
font-size: 24px;
font-family: 'arial';
text-align: center;
/* border-bottom: 6px ridge #cacaca; */
}
.quiz_answer .confirm {
background-color: #ecb2b2;
border: 6px ridge #ecb2b2;
width: 100%;
font-family: 'arial';
padding: 10px 20px;
font-size: 22px;
font-weight: bold;
cursor: pointer;
transition: all 0.3s;
text-shadow: 2px 2px 0px rgba(212, 153, 153, 0.7);
}
.quiz_answer .confirm:hover{
background-color: #c77676;
}
.quiz_answer .result {
background-color: #fff;
border: 6px ridge #ecb2b2;
width: 100%;
font-family: 'arial';
padding: 10px 20px;
font-size: 22px;
/* display: none; */
}
.quiz_answer .input{
background-color: #fff;
border: 6px groove #ecb2b2;
width: 100%;
font-family: 'arial';
padding: 10px 20px;
font-size: 22px;
text-align: center;
margin-bottom: 10px;
}
.quiz_view {
border-bottom: 6px ridge #ecb2b2;
overflow: hidden;
}
.quiz_footer {
border-top: 6px ridge #ecb2b2;
padding: 20px;
font-family: "arial";
background-color: #f5f5f5;
}
.quiz_footer::before {
content: "👍Tip";
color: hotpink;
font-weight: bold;
}
.quiz_desc {
padding-top: 5px;
}
자바스크립트 코드 입니다.
//선택자
const quizWrap =document.querySelector(".quiz_wrap");
const quizTitle =quizWrap.querySelector(".quiz_title span");
const quizTime =quizWrap.querySelector(".quiz_title em");
const quizNumer = quizWrap.querySelector(".quiz_quection em");
const quizQuection = quizWrap.querySelector(".quiz_quection span");
const quizDesc = quizWrap.querySelector(".quiz_desc");
const quizAnswerConfirm = quizWrap.querySelector(".quiz_answer .confirm");
const quizAnswerResult = quizWrap.querySelector(".quiz_answer .result");
const quizAnswerInput = quizWrap.querySelector(".quiz_answer .input");
const dogWrap = quizWrap.querySelector(".dog_wrap");
const quizFooter = quizWrap.querySelector(".quiz_footer");
//문제 정보
const infoType = "정보처리 기능사";
const infoTime = "2011년도 5회";
const infoNumber = "2";
const infoQuection = "프레젠테이션에서 화면 전체를 전환하는 단위를 의미하는것은?";
const infoAnswer = "슬라이드";
const infoDesc = "슬라이드는 프리젠테이션의 화면 전체를 말하고 개체는 화면을 구성하는 개개의 요소를 말한다.";
//문제출력
quizTitle.textContent = infoType;
quizTime.textContent = infoTime;
quizNumer.textContent = infoNumber;
quizQuection.textContent = infoQuection;
quizDesc.textContent = infoDesc;
quizAnswerResult.textContent = infoAnswer;
//정답 & 해설 숨기기
quizAnswerResult.style.display = "none";
quizFooter.style.display = "none";
//사용자 정답
quizAnswerConfirm.addEventListener("click", function(){
const userAnswer = quizAnswerInput.value.trim();
quizAnswerInput.style.display = "none"; //input 숨김
quizAnswerConfirm.style.display = "none"; //정답 확인 버튼 숨김
quizAnswerResult.style.display = "block"; // 정답 화면 보이기
quizFooter.style.display = "block"; //해설 보이기
if( infoAnswer == userAnswer){
// alert("정답입니다.");
dogWrap.classList.add("like");
} else {
// alert("오답입니다.");
dogWrap.classList.add("dislike");
}
});
자바스크립트 공부하기
선택자 영역에서는 html에 있는 각 태그들의 class를 참조해서 불러와서 변수에 담아 주고 있습니다.
doument.querySelector 는 dom에서 해당하는 클래스를 찾아주는 역할을 합니다.
quizWrap.querySelector 은 quizWrap클래승 안에 있는 자식 클래스를 찾아주는 역할을 합니다.
문제 정보 에서는
변수로 하나씩 값을 넣어 주었습니다.
문제 출력
textContent 라는 메서드를 사용해서 html에 표출해 줍니다.
quizTitle.textContent = infotype 의 코드는 quizTitle 클래스에 있는 태그에 infotype 의 내용을 넣어 주는 것입니다.
이러한 식으로 데이터를 표출해 주었습니다.
style.속성 = "값" 은 css 스타일을 표현할 수 있습니다.
quizAnswerResult.style.display = "none"; 의 코드는 quizAnswerResult 변수안에 있는 클래스에 css스타일 display를 none 안보이게 처리를 했습니다.
그리고 이벤트 발생할수 있는 함수 addEventListener를 활용해서 코드를 써 보았습니다.
addEventListener("click") 클릭 이벤트를 통해서 기능을 구현했습니다.
지역변수 userAnswer = quizAnswerInput를 만들어서 거기에 정답을 입력해주는 박스의 클래스를 불러왔습니다.
userAnswer = quizAnswerInput.value를 써서 값을 가져올수 있습니다.
userAnswer = quizAnswerInput.value.trim()은 trim()함수를 써서 앞뒤에 공백을 제거 했습니다.
그리고 if문을 써서 가져온 값(userAnswer)과 정답(infoAnswer) 같으면 정답이면 강아지 화면이 웃는걸로 정답이 아니면 슬퍼하는 걸로 바꾸게 했습니다.