Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- ์คํฌ๋ฆฐ๋ฆฌ๋์ง์
- ๋ฐ๋๋ผjs
- ํ๋ก ํธ์๋
- ์ ๊ทผ์ฑ
- ui์ปดํฌ๋ํธ
- ์นUI
- JavaScript
- ์น๋์์ธ
- ๋ฐ๋๋ผ์คํฌ๋ฆฝํธ
- ์ฝ๋ฉ์์
- css๋ณ์
- ์น๊ฐ๋ฐ
- uiux๋์์ธ
- css์ ๋๋ฉ์ด์
- ๋คํฌ๋ชจ๋ํ ๊ธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ์คํฌ๋ฆฝํธui
- ๋ฐ์ํ์น
- UX๋์์ธ
- js์คํฌ๋กค์ด๋ฒคํธ
- ์คํฌ๋กค์ ๋๋ฉ์ด์
- ๋คํฌ๋ชจ๋
- preferscolorscheme
- UIUX
- ํ ๋ง์๋์ ํ
- ๋ก์ปฌ์คํ ๋ฆฌ์ง
- ์นui๋์์ธ
- ์น์ ๊ทผ์ฑ
- ์ธํฐ๋ ํฐ๋ธui
- ์๋ฐ์คํฌ๋ฆฝํธ์ปดํฌ๋ํธ
Archives
- Today
- Total
UI Code Lab
์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ ์ง ์ ํ๊ธฐ(Date Picker) ์ง์ ๋ง๋ค๊ธฐ – ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ๊ตฌํํ๋ ๋ฐฉ๋ฒ ๋ณธ๋ฌธ
์๋ฐ์คํฌ๋ฆฝํธUI
์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ ์ง ์ ํ๊ธฐ(Date Picker) ์ง์ ๋ง๋ค๊ธฐ – ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ๊ตฌํํ๋ ๋ฐฉ๋ฒ
๐ฏ๊ฟ์์ด๐ 2025. 7. 7. 14:57๐งญ ์ ์ง์ ๋ ์ง ์ ํ๊ธฐ๋ฅผ ๋ง๋ค์ด์ผ ํ ๊น?
๋๋ถ๋ถ์ ์น ํ๋ก์ ํธ์์๋ ๋ ์ง ์ ๋ ฅ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ฌผ๋ก input [type="date"] ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง,
๋ธ๋ผ์ฐ์ ๋ง๋ค ๋์์ธ์ด ๋ค๋ฅด๊ณ ์ปค์คํฐ๋ง์ด์ง์ด ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ฃ .
๊ทธ๋์ ์ด๋ฒ ๊ธ์์๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ ์ง ์ ํ๊ธฐ UI๋ฅผ ์ง์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
๐ ๏ธ ๊ตฌํ ๋ชฉํ
- ๋ฌ๋ ฅ UI๋ฅผ ๋์ ์ผ๋ก ์์ฑ
- ํ์ฌ ์ ๊ธฐ์ค์ผ๋ก ๋ ์ง ํ์
- ์ด์ /๋ค์ ๋ฌ ์ด๋ ๊ธฐ๋ฅ
- ๋ ์ง ํด๋ฆญ ์ ์ ํ๋ ๋ ์ง ์ถ๋ ฅ
๐งฑ HTML ๊ตฌ์กฐ
<div class="datepicker">
<div class="header">
<button id="prev">โ</button>
<span id="month-year"></span>
<button id="next">โถ</button>
</div>
<table id="calendar">
<thead>
<tr>
<th>์ผ</th><th>์</th><th>ํ</th><th>์</th><th>๋ชฉ</th><th>๊ธ</th><th>ํ </th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<p>์ ํํ ๋ ์ง: <span id="selected-date">์์</span></p>
๐จ CSS ์คํ์ผ (๊ฐ๋จ ๋ฒ์ )
.datepicker {
width: 300px;
border: 1px solid #ccc;
padding: 10px;
font-family: sans-serif;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
}
#calendar td {
text-align: center;
padding: 5px;
cursor: pointer;
}
#calendar td:hover {
background-color: #f0f0f0;
}
.selected {
background-color: #007bff;
color: white;
}
โ๏ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ก์ง
const calendarBody = document.querySelector("#calendar tbody");
const monthYear = document.getElementById("month-year");
const selectedDate = document.getElementById("selected-date");
let today = new Date();
let currentMonth = today.getMonth();
let currentYear = today.getFullYear();
function renderCalendar(month, year) {
calendarBody.innerHTML = "";
const firstDay = new Date(year, month, 1).getDay();
const lastDate = new Date(year, month + 1, 0).getDate();
monthYear.textContent = `${year}๋
${month + 1}์`;
let row = document.createElement("tr");
for (let i = 0; i < firstDay; i++) {
row.appendChild(document.createElement("td"));
}
for (let day = 1; day <= lastDate; day++) {
if (row.children.length === 7) {
calendarBody.appendChild(row);
row = document.createElement("tr");
}
const cell = document.createElement("td");
cell.textContent = day;
cell.addEventListener("click", () => {
document.querySelectorAll("#calendar td").forEach(td => td.classList.remove("selected"));
cell.classList.add("selected");
selectedDate.textContent = `${year}-${String(month + 1).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
});
row.appendChild(cell);
}
calendarBody.appendChild(row);
}
document.getElementById("prev").addEventListener("click", () => {
currentMonth--;
if (currentMonth < 0) {
currentMonth = 11;
currentYear--;
}
renderCalendar(currentMonth, currentYear);
});
document.getElementById("next").addEventListener("click", () => {
currentMonth++;
if (currentMonth > 11) {
currentMonth = 0;
currentYear++;
}
renderCalendar(currentMonth, currentYear);
});
renderCalendar(currentMonth, currentYear);
๐ SEO ์ต์ ํ๋ฅผ ์ํ ํ
- ํ๊น ํค์๋: ์๋ฐ์คํฌ๋ฆฝํธ ๋ ์ง ์ ํ๊ธฐ, Date Picker, ๋ฌ๋ ฅ UI, JS ๋ฌ๋ ฅ ๋ง๋ค๊ธฐ
- H1~H3 ํ๊ทธ ๊ตฌ์กฐํ: ๊ฒ์์์ง์ด ์ฝํ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋๋ก ๊ตฌ์ฑ
- ์ด๋ฏธ์ง ALT ํ๊ทธ: ์ฝ๋ ๊ฒฐ๊ณผ๋ฅผ ์บก์ฒํด ์ด๋ฏธ์ง๋ก ์ฒจ๋ถ ์ alt="์๋ฐ์คํฌ๋ฆฝํธ ๋ฌ๋ ฅ UI ์์" ๋ฑ์ผ๋ก ์ค๋ช ์ถ๊ฐ
- ๋ด๋ถ ๋งํฌ: ๊ด๋ จ ๊ธ์ด ์๋ค๋ฉด ์ฐ๊ฒฐ (์: ๋ชจ๋ฌ, ํ ์คํธ ์๋ฆผ ๋ฑ)
- ์ธ๋ถ ๋งํฌ: MDN ๋ฌธ์๋ ๊ณต์ JS ๋ฌธ์ ๋งํฌ ํ์ฉ
๐งฉ ๋ง๋ฌด๋ฆฌ
์ด๋ ๊ฒ ์ง์ ๋ง๋ ๋ ์ง ์ ํ๊ธฐ๋ ๋์์ธ ์ปค์คํฐ๋ง์ด์ง์ด ์์ ๋กญ๊ณ , ๊ธฐ๋ฅ ํ์ฅ๋ ์ฉ์ดํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ ์ง ๋ฒ์ ์ ํ, ์ฃผ๋ง ๋นํ์ฑํ, ์ค๋ ๋ ์ง ๊ฐ์กฐ ๋ฑ๋ ์ถ๊ฐํ ์ ์์ด์.
์ด ๊ธ์ด ๋์์ด ๋์ จ๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ถํ๋๋ ค์! ๐
๋ค์ ๊ธ์์๋ ์๊ฐ ์ ํ๊ธฐ(Time Picker)๋ ๋ง๋ค์ด๋ณผ๊น์?