Bomb Kirby Running

JAVASCRIPT

자바스크립트 퀴즈 이펙트1

^. ̫ .^ 2023. 3. 8. 18:40

728x90

자바스크립트 퀴즈 이펙트 만들기

 

완성된 모습입니다.

<!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>퀴즈 이펙트01</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>
    </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__question">
                       <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">
                        <button class="confirm">정답 확인하기</button>
                        <div class="result">연변대비</div>
                    </div>
                </div>
                <div class="quiz__footer"></div>
            </div>
        </div>
    </main>
    <!-- //main -->
    <footer id="footer">
        <a href="mailto:1346zany@gmail.com">1346zany@gmail.com</a>
    </footer>
    <!-- //footer -->

    <script>
        // 선택자
        const quizWrap = document.querySelector(".quiz__wrap")
        const quizTitle = quizWrap.querySelector(".quiz__title span")
        const quizTime = quizWrap.querySelector(".quiz__title em")
        const quizQustion = quizWrap.querySelector(".quiz__question span")
        const quizQuestionNum = quizWrap.querySelector(".quiz__question em")
        const quizAnswerCorfirm = quizWrap.querySelector(".quiz__answer .confirm")
        const quizAnswerResult = quizWrap.querySelector(".quiz__answer .result")

        // 문제 정보
        const infoType = "웹디자인 기능사";
        const infoTime = "2012년 1회";
        const infoNumber = "1";
        const infoQuestion = "인접하는 두 색의 경계 부분에 색상, 명도, 채도의 대비가 더욱 강하게 일어나는 현상을 무엇이라고 하는가?"
        const infoAnswer = "연변대비";

        // 문제 출력
        quizTitle.innerText = infoType;
        quizTime.innerText = infoTime;
        quizQuestionNum.innerText = infoNumber;
        quizQustion.innerText = infoQuestion;
        quizAnswerResult.innerText = infoAnswer;
        
        // 정답 숨기기
        quizAnswerResult.style.display = "none";

        // 정답 확인
        quizAnswerCorfirm.addEventListener("click", function(){
            quizAnswerResult.style.display = "block";
            quizAnswerCorfirm.style.display = "none";
        });
    </script>
</body>
</html>

완성된 코드입니다.

 

설명

// 선택자
const quizWrap = document.querySelector(".quiz__wrap")
const quizTitle = quizWrap.querySelector(".quiz__title span")
const quizTime = quizWrap.querySelector(".quiz__title em")
const quizQustion = quizWrap.querySelector(".quiz__question span")
const quizQuestionNum = quizWrap.querySelector(".quiz__question em")
const quizAnswerCorfirm = quizWrap.querySelector(".quiz__answer .confirm")
const quizAnswerResult = quizWrap.querySelector(".quiz__answer .result")
  • querySelector : 메소드를 사용하여, HTML 요소들을 선택합니다.
  • quizWrap : 문제 전체를 감싸는 요소를 선택합니다.
  • quizTitle / quizTime /  quizQustion / quizQuestionNum :
  • 문제 제목, 출제 시간, 문제 내용, 문제 번호를 각각 나타내는 요소를 선택합니다.
  • quizAnswerCorfirm: 정답 확인 버튼을 선택합니다.
  • quizAnswerResult: 정답 결과를 나타내는 요소를 선택합니다.

 

// 문제 정보
const infoType = "웹디자인 기능사";
const infoTime = "2012년 1회";
const infoNumber = "1";
const infoQuestion = "인접하는 두 색의 경계 부분에 색상, 명도, 채도의 대비가 더욱 강하게 일어나는 현상을 무엇이라고 하는가?"
const infoAnswer = "연변대비";

// 문제 출력
quizTitle.innerText = infoType;
quizTime.innerText = infoTime;
quizQuestionNum.innerText = infoNumber;
quizQustion.innerText = infoQuestion;
quizAnswerResult.innerText = infoAnswer;

문제 정보를 변수에 담고 해당 변수들로 HTML문서 내용들의 요소를 변경합니다.

inner Text로 HTML요소들의 텍스트를 수정합니다.

 

// 정답 숨기기
quizAnswerResult.style.display = "none";

display 속성을 이용해서 none으로 설정하면 정답화면이 메인화면에서 숨겨집니다.

 

// 정답 확인
quizAnswerCorfirm.addEventListener("click", function(){
    quizAnswerResult.style.display = "block";
    quizAnswerCorfirm.style.display = "none";
});

정답 확인 버튼을 클릭하면, 정답 결과를 나타내는 요소가 화면에 나타나도록 합니다.

정답확인하기 버튼을 클릭 하면 정답 결과버튼 부분만 나타나야 하므로 버튼을 숨김 처리합니다.

addEventListener 메소드를 사용하여, 클릭 이벤트를 처리합니다

 

모르는 속성 정리

속성 설명
querySelector
특정 CSS 선택자와 일치하는 첫 번째 요소를 반환합니다.
innerText
HTML 요소의 텍스트 내용을 설정하거나 반환하는 속성입니다.
addEventListener HTML 요소에 등록한 이벤트(브라우저에서 발생하는 클릭, 마우스 오버, 키보드 입력 등)에 대해, 특정 요소가 해당 이벤트를 수신하면, 브라우저는 등록된 함수를 실행합니다.