π» WIZWID ν΄λ‘ μ½λ©
μ¬μ΄νΈλͺ
: WIZWID
μ μκΈ°κ°: 24.03.21 ~ 24.03.23(2μΌ μμ)
μ¬μ©μΈμ΄: html, css, js
λΆλ₯: μ μν PC
μΌνλͺ° μ¬μ΄νΈμΈ WIZWIDμλ μνμ λ¨μ μΈμΌ κΈ°κ°μ νμν΄μ£Όλ κΈ°λ₯μ΄ μμ΄ λλ ꡬνν΄ λ³΄μλ€.
function dayCount() {
const h1El = document.querySelector('h1');
const today = new Date();
const dday = new Date(2024, 5, 19);
const timeGap = dday.getTime() - today.getTime();
// λ¨μ μΌμ μΉ΄μ΄νΈ
const remainDay = Math.ceil(timeGap / (1000 * 60 * 60 * 24));
// λ¨μ μκ° μΉ΄μ΄νΈ
const hours = String(Math.floor(timeGap / (1000 * 60 * 60) % 24)).padStart(2, '0');
const minutes = String(Math.floor(timeGap / (1000 * 60) % 60)).padStart(2, '0');
const seconds = String(Math.floor((timeGap / 1000) % 60)).padStart(2, '0');
if(timeGap <= 0) {
clearInterval(countdownInterval);
h1El.textContent = 'λ§κ°λμμ΅λλ€.';
}
h1El.textContent = `${remainDay}μΌ ${hours}μ ${minutes}λΆ ${seconds}μ΄`;
}
// 1μ΄λ§λ€ μ
λ°μ΄νΈ
const countdownInterval = setInterval(dayCount, 1000);
const today = new Date(); // Thu Apr 18 2024 19:11:46 GMT+0900 (νκ΅ νμ€μ)
const dday = new Date(2024, 5, 19); // Wed Jun 19 2024 00:00:00 GMT+0900 (νκ΅ νμ€μ)
const timeGap = dday.getTime() - today.getTime(); // 5287654281 (λ°λ¦¬μ΄)
μ¬κΈ°μ μ€μν κ²μ μ§μ λ μ§ = new Date(μ°, μ-1, μΌ);
μμ -1μ ν΄μ£Όμ΄μΌνλ€!
getTime() λ©μλλ Date κ°μ²΄μ μΈμ€ν΄μ€μ λν΄ ν΄λΉ λ μ§μ μκ°μ λνλ΄λ λ°λ¦¬μ΄ λ¨μμ μ«μ κ°μ λ°ννλ€.
λλ°μ΄ λ μ§μμ νμ¬ λ μ§λ₯Ό λΉΌλ©΄ μ§κΈλΆν° λ¨μ μκ°μ λ°λ¦¬μ΄ λ¨μλ‘ κ΅¬ν μ μλ€.
ν΄λΉ μμ κΉμ§μ λ μ§ λ° μκ°μ λ°λ¦¬μ΄ λ¨μμ μ«μλ‘ κ΅¬ν΄μλ€λ©΄, κ·Έ κ°μ μ/λΆ/μ΄/μΌλ‘ λλμ΄μΌ λͺ©νν μΌμλ₯Ό κ³μ°ν΄μ¬ μ μλ€.
λ¨μ μκ°μ μΌ λ¨μλ‘ κ³μ°ν λ€μ μ€λ λ μ§κΉμ§ ν¬ν¨μν€κΈ° μνμ¬ Math.ceil() λ©μλλ₯Ό μ¬μ©νλ€.
Math.ceil(μ«μ) : μμμ 첫째 μ리μμ 무쑰건 μ¬λ¦Ό νμ¬ μ μλ₯Ό λ°ννλ€.
// λ¨μ μΌμ μΉ΄μ΄νΈ
const remainDay = Math.ceil(timeGap / (1000 * 60 * 60 * 24)); // 62
1μ΄ = 1000ms μ΄λΌλ μ μ νμ©νλ©΄ μΌ, μ, λΆ, μ΄κΉμ§ ꡬν μ μλ€.
1ms * 1000
λ 1μ΄1ms * 1000
κ° 1μ΄λκΉ μ¬κΈ°μ 60μ κ³±νλ©΄ 1λΆ1ms * 1000 * 60
μ 1λΆμ΄λκΉ, 60μ κ³±νλ©΄ 1μκ°1ms * 1000 * 60 * 60
μ 1μκ°μ΄λκΉ, 24λ₯Ό κ³±νλ©΄ 1μΌ// λ¨μ μκ° μΉ΄μ΄νΈ
const hours = String(Math.floor(timeGap / (1000 * 60 * 60) % 24)).padStart(2, '0');
const minutes = String(Math.floor(timeGap / (1000 * 60) % 60)).padStart(2, '0');
const seconds = String(Math.floor((timeGap / 1000) % 60)).padStart(2, '0');
κ³μ°ν λ μ λ°λ¦¬μ΄ / (1000 * 60 * 60 * 24) = μΌ
(κ³μ°ν λ μ λ°λ¦¬μ΄ / (1000 * 60 * 60)) % 24 = μ
(κ³μ°ν λ μ λ°λ¦¬μ΄ / (1000 * 60)) % 60 = λΆ
(κ³μ°ν λ μ λ°λ¦¬μ΄ / 1000) % 60 = μ΄
νλ©΄μ 1μ΄λ§λ€ μ λ°μ΄νΈνμ¬ νμν μ μλλ‘ setIntervalμ μ¬μ©νλ€.
if(timeGap <= 0) {
clearInterval(countdownInterval);
h1El.textContent = 'λ§κ°λμμ΅λλ€.';
}
// 1μ΄λ§λ€ μ
λ°μ΄νΈ
const countdownInterval = setInterval(dayCount, 1000);
π μμ±μ½λ
swiperμ default νμ΄μ§(pagination)μ νλμ μ λͺ¨μμ΄λ€. μ΄κ²μ swiperμμ μ§μνλ νμ΄μ§ νμ μ€ bulletμ κΈ°λ³Έ ννμ΄λ€. νμ§λ§ renderBullet 맀κ°λ³μλ‘ μλ€λ₯΄κ² 컀μ€ν ν μ μλ€.
μμ μ (Default)
νμ΄μ§λ€μ΄μ νμ μ 'progressbar', 'bullets', 'fraction', 'custom' μΌλ‘ μ΄ 4κ°μ§μ΄λ©°, κΈ°λ³Έκ°μ 'bullets' μ΄λ€.
νμ΄μ§ μμμ λ³κ²½ν μ μλ renderBullet λ©μλλ₯Ό μ¬μ©νμ¬ μ»€μ€ν ν μ μλ€.
μ΄ λ§€κ°λ³μλ₯Ό μ¬μ©νλ©΄ νμ΄μ§ λ§€κΉ κΈλ¨Έλ¦¬ κΈ°νΈλ₯Ό μμ ν μ¬μ©μ μ μν μ μμ΅λλ€. μ¬κΈ°μ νμ΄μ§ λ§€κΉ κΈλ¨Έλ¦¬ κΈ°νΈ μμ νμ μμ ν΄λμ€ μ΄λ¦(className) μ νμ©νλ ν¨μλ₯Ό μ λ¬ν΄μΌ ν©λλ€ . 'bullets'νμ΄μ§ λ§€κΉ μ ν μλ§ ν΄λΉ - Swiper API
renderBullet λ©μλ μ μ©ν μ½λ
new Swiper('.swiper', {
pagination: {
el: '.swiper-pagination',
clickable: true, // ν΄λ¦ κ°λ₯ μ¬λΆ
renderBullet: function (index, className) {
const bulletName = ["WEEKLY CLOSET", "WHERE TO GO", "BRANDPEDIA", "KEYWORD#", "MARKETER'S DIARY", "SNACK FILM"];
return `<span class="${className}">${bulletName[index]}</span>`;
}
}
});
π μμ±μ½λ
.text {
white-space: nowrap; /* μ€λ°κΏ μμ κΈ° */
overflow: hidden; /* λμΉ ν
μ€νΈ μλ₯΄κΈ° */
text-overflow: ellipsis; /* μλ¦° ν
μ€νΈλ₯Ό λνλ΄κΈ° μν΄ λ§ μ€μ(β¦)μ νμ */
}
.text {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3; /* μ νν ν
μ€νΈμ μ€ μ */
overflow: hidden;
}
μ°Έκ³ μ¬μ΄νΈ
https://goddino.tistory.com/29
https://ziszini.tistory.com/49