TEST&복습

마무리 문제풀이 4 추가 - 배경이미지

hyejeong3283 2023. 4. 17. 23:22
728x90
반응형

마무리 문제풀이 (명언 랜덤) 에서 배경이미지를 추가하여 같이 10초마다 바뀌게 만들었습니다.

 

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>명언 모음</title>
</head>
<body>
    <div class="wrap">
        <div class="main">
            <div class="quote"></div> 
            <div class="author"></div>
        </div>
    </div>
</body>
</html>

배경이미지를 넣기 위해 wrap클래스명을 가진 div로 main 영역을 감쌌습니다.

 

CSS

<style>
    @import url('https://webfontworld.github.io/Montserrat/Montserrat.css');
    * {
        margin: 0;
        padding: 0;
    }
    .wrap {
        width: 100%;
        height: 700px;
        background-size: cover;
        z-index: 1;
    }
    .main {
        display: flex;
        justify-content: center;
        align-items: center;
        flex-direction: column;
        height: 100vh;
        text-align: center;
        font-size: 25px;
        font-family: "Montserrat";
        color: #fff8ab;
    }
    .author {
        padding-top: 30px;
        text-decoration: underline;
        text-underline-offset: 10px;
    }
</style>

 

SCRIPT

<script>
    // const quotesURL = "http://dummyjson.com/quotes";

    function randomQuote(){
        fetch('https://dummyjson.com/quotes')
        .then(response => response.json())
        .then(data => {
            let randomNumber = Math.floor(Math.random() * data.quotes.length);
            let divQuote = document.querySelector(".quote");
            let divAuthor = document.querySelector(".author");
            divQuote.innerHTML = data.quotes[randomNumber].quote;
            divAuthor.innerHTML = data.quotes[randomNumber].author;
        })
        .catch((err) => console.log(err));

        
    }
    randomQuote();

    function randomImg(){
        let wrapImg = document.querySelector(".wrap");
        const bgimgURL = `https://source.unsplash.com/random/?nature&t=${new Date().getTime()}`;
        wrapImg.style.backgroundImage = `url(${bgimgURL})`;
    }
    randomImg();
    setInterval(randomQuote, 10000);
    setInterval(randomImg, 10000);
</script>

추가한 script

function randomImg(){
        let wrapImg = document.querySelector(".wrap");
        const bgimgURL = `https://source.unsplash.com/random/?nature&t=${new Date().getTime()}`;
        wrapImg.style.backgroundImage = `url(${bgimgURL})`;
    }
    randomImg();
    
    setInterval(randomImg, 10000);

함수 randomImg를 만들어 실행시켜줍니다.

let wrapImg = document.querySelector(".wrap");

함수 안에 이미지를 넣을 영역을 선택자로 만들어줍니다.

 

변수를 선언하여 이미지를 랜덤으로 가져올 수 있는 unsplash API 사이트를 변수에 저장합니다.

new Date().getTime() 함수를 호출하여 현재 시간을 가져와 URL에 추가합니다. 이렇게 하면 매번 새로운 URL을 생성할 수 있으므로, 브라우저에서 이미지 캐시를 우회하여 항상 새로운 이미지를 보여줄 수 있습니다.

wrapImg.style.backgroundImage = `url(${bgimgURL})`; 를 사용하여 wrapImg 영역에 배경이미지를 넣어줍니다.

 

randomImg();를 입력해 함수를 실행시켜줍니다.

setInterval(randomImg, 10000);를 입력해 10초마다 바뀌게 해줍니다.