Techit 블록체인 스쿨 3기 Today I Learned

visbug: 크롬 익스텐더(웹 페이지 아이템 간격 보기)

js를 사용해서 웹페이지 시계 만들기, 명언 문구 추가 기능 구현

<body>
    <main>
        <div class="time">time</div>
        <div class="quotes">
            <div class="quotesMsg">quotes</div>
            <button class="quotesAddBtn" onclick="onClickAdd()">명언 추가하기</button>
        </div>
        <div class="newQuotes">
            <input class="newQuotesInput" type="text/">
            <button class="newQuotesButton" onclick="onClickRegist()">등록</button>
        </div>
    </main>
    <video class="bgVideo" src="./images/background.mp4" autoplay muted loop>
</body>
<script src="main.js"></script>
<style>
body {
    margin: 0;
    background-color: lightgray;
    color: rgb(36, 34, 34);
    main {
        position: fixed;
        z-index: 2;
        width: 100vw;
        height: 100%;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        .time {
            border-bottom: 2px solid white;
            border-bottom-left-radius: 10px;
            border-bottom-right-radius: 10px;
            font-size: 100px;
            font-weight: bold;
            -webkit-text-stroke: 2px white;
            color: transparent;
            &:hover {
                color: rgb(247, 205, 152);
            }
        }
        .quotes {
            position: relative;
            font-size: 60px;
            .quotesMsg {
                color: white;
            }
            .quotesAddBtn {
                display: none;
                position: absolute;
                top: 50%;
                right: 50%;
                transform: translate(50%, -50%);
                background-color: lightcoral;
                width: 100px;
                border: 1px solid lightcoral;
                border-radius: 20px;
                color: white;
                cursor: pointer;
            }
            &:hover {
                .quotesAddBtn {
                    display: inline-block;
                }
            }
        }
        .newQuotes {
            display: none;
        }
    }
    .bgVideo {
        position: fixed;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100%;
        object-fit: cover;
        opacity: 0.8;
    }
}
</style>
<script>
function getTime() {
    const time = document.querySelector(".time");
    const newDate = new Date();
    const hour = String(newDate.getHours()).padStart(2, 0);
    const minutes = String(newDate.getMinutes()).padStart(2, 0);
    const seconds = String(newDate.getSeconds()).padStart(2, 0); //padStart -> 두 글 자가 아니면 0을 붙여라
    // if (seconds.toString().length === 1) {
    //     seconds = "0" + seconds;
    // }
    // time.innerText = hour + ":" + minutes + ":" + seconds;
    time.innerText = `${hour}:${minutes}:${seconds}`;
}
// setInterval(() => {
//     getTime();
// }, 1000);
setInterval(getTime, 1000);
const QUOTES = "quotes";
function getQuotes() {
    let savedQuotes = localStorage.getItem(QUOTES);
    const quotesMsg = document.querySelector(".quotesMsg");
    if (!savedQuotes) {
        localStorage.setItem(QUOTES, JSON.stringify(["블", "체", "스"]));
        savedQuotes = localStorage.getItem(QUOTES);
    }
    let quotesArray = JSON.parse(savedQuotes);
    quotesMsg.innerText = quotesArray[Math.floor(Math.random() * quotesArray.length)];
}
getQuotes();
function onClickAdd() {
    const newQuotes = document.querySelector(".newQuotes");
    newQuotes.style.display = "inline-block";
}
function onClickRegist() {
    const newQuotes = document.querySelector(".newQuotes");
    const newQuotesInput = document.querySelector(".newQuotesInput");
    const quotesMsg = document.querySelector(".quotesMsg");
    if (!newQuotesInput.value) {
        alert("내용을 입력해주세요");
        return;
    }
    let savedQuotes = localStorage.getItem(QUOTES);
    let quotesArray = JSON.parse(savedQuotes); quotesArray.push(newQuotesInput.value);
    localStorage.setItem(QUOTES, JSON.stringify(quotesArray));
    quotesMsg.innerText = newQuotesInput.value;
    newQuotes.style.display = "none";
}
</script>

0개의 댓글