Bomb Kirby Running

JAVASCRIPT

명언과 이미지 나타내기

^. ̫ .^ 2023. 4. 17. 23:25

728x90

 

오늘은 전에 명언이 10초에 한번씩 바뀌는 것에서 추가로 뒷 배경 이미지도 10초에 한번씩 바뀌는 것으로 만들어 보았습니다.

HTML

<!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>Random Quotes</title>
    <link rel="stylesheet" href="css/homework5.css">
</head>

<body>
    <div id="result">
        <div class="quote"></div>
        <div class="author"></div>
    </div>
</body>
</html>

HTML은 전과 동일합니다.

 

css

@import url('https://webfontworld.github.io/gonggames/EsaManru.css');
@import url('https://webfontworld.github.io/sebang/SebangGothic.css');

body {
    background-size: cover;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    width: 100%;
    height: 100vh;
    box-sizing: cover;
    overflow: hidden;
    background-position: center;
}

body::after {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100vh;
    z-index: -1;
}

#result {
    background-color: rgba(98, 98, 98, 0.632);
    color: #fafdff;
    padding: 20px;
    border-radius: 10px;
}

.quote {
    font-family: "EsaManru";
    font-size: 2.3rem;
    margin-bottom: 20px;
    text-align: center;
}

.author {
    font-size: 1.5rem;
    margin-left: 1rem;
    font-style: italic;
    font-family: "SebangGothic";
    text-align: center;
}

body에 들어간 이미지만 조금 수정해주었습니다.

 

script

    <script>
        const Quote = () => {
            fetch(`https://dummyjson.com/quotes`)
                .then(response => response.json())
                .then(data => {
                    const result = document.querySelector("#result");
                    const random = Math.floor(Math.random() * 30);  // 0 ~ 29 사이의 수
                    result.querySelector(".quote").innerHTML = data.quotes[random].quote;
                    result.querySelector(".author").innerHTML = ` - ${data.quotes[random].author}`;
                })
                .catch(error => console.log(error));
        }

        const changeBackgroundImage = () => {
            const backgroundImageUrl = `https://source.unsplash.com/random/?sky&t=${new Date().getTime()}`;
            document.body.style.backgroundImage = `url(${backgroundImageUrl})`;
        }

        Quote();
        changeBackgroundImage();
        setInterval(Quote, 10000);
        setInterval(changeBackgroundImage, 10000);
    </script>

 

추가된 script

 const changeBackgroundImage = () => {
            const backgroundImageUrl = `https://source.unsplash.com/random/?sky&t${new Date().getTime()}`;
            document.body.style.backgroundImage = `url(${backgroundImageUrl})`;
 }
 setInterval(changeBackgroundImage, 10000);

https://source.unsplash.com/random/은 Unsplash에서 무작위 이미지를 가져오고

?sky는 검색어를 지정하는 것으로, "sky"라는 검색어에 해당하는 이미지를 가져오게 됩니다.

&t=${new Date().getTime()}는 브라우저 캐시를 방지하기 위해 새로운 URL을 생성하는 데 사용됩니다.

document.body.style.backgroundImage는 CSS 속성으로, 해당 URL에서 이미지를 가져와서 문서의 배경 이미지로 설정합니다.

setInterval을 사용해 10초에 한번씩 이미지가 바뀌도록 합니다.