Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Build a small Kanban board with HTML, CSS, and vanilla JavaScript by representing work as cards inside workflow columns, then using the browser’s native drag-and-drop events to move those cards. This walkthrough starts with a working three-column board and adds movement, responsive styling, and practical next steps without a framework.
What the board will do
The core is deliberately modest: a To Do, In Progress, and Done column, each holding task cards. Users can drag a card to another column. The example uses in-page movement; it does not include task creation, editing, deletion, or collaboration.
As an Amazon Associate I earn from qualifying purchases.
MDN’s Kanban guide uses a similar board to explain drag-and-drop. Its demonstrated starter board has hardcoded columns and tasks, so treat dynamic task management as a separate extension.
1. Create the board markup
Give each column a heading and a task list. Use a data attribute to identify each workflow status, and give each task a stable identifier rather than relying on a repeated global DOM ID.
#1 Best Overall
- Complete 4-column magnetic Kanban board kit: flex dry-erase board plus 64 magnetic Agile cards and accessories — a full board system, not a cards-only pack.
- 64 magnetic cards included: task, detail, blocker, and blank headline cards so you can run To Do / Doing / Done / custom workflows and wipe cards clean for reuse.
- Thin, light flex board (about 6 lb) with strong magnetism: hang with included hardware/adhesive or move between rooms without a bulky framed panel.
- Customize all four column headlines with blank magnetic header cards; write on the board and on the cards with the included markers.
- Built for small teams and project planning: clearer than sticky notes, ready for standups, Scrum, or personal Kanban on wall or table.
<main class="board" aria-label="Kanban board">
<section class="column" data-status="todo">
<h2>To Do</h2>
<ul class="task-list">
<li class="task" data-task-id="task-1" draggable="true">Plan the page</li>
</ul>
</section>
<section class="column" data-status="doing">
<h2>In Progress</h2>
<ul class="task-list">
<li class="task" data-task-id="task-2" draggable="true">Build the board</li>
</ul>
</section>
<section class="column" data-status="done">
<h2>Done</h2>
<ul class="task-list"></ul>
</section>
</main>
The draggable attribute makes ordinary task elements draggable. Images, links, and text selections have browser-provided drag behavior of their own; avoid making nested controls or links confusing parts of a drag interaction.
2. Style columns for different screen widths
A flexible layout lets columns sit side by side when there is room and stack on narrow screens. The 600 CSS-pixel breakpoint below is an example, not a universal cutoff.
Rank #2
- 【Smooth Writing and Easy to Wipe】Magnetic whiteboard, overall size: 35.4" x 23.6" ( frame included); writing surface size: 33.9" x 22.1". Smooth & durable magnetic writing surface, easily dry wipe with all dry-erase markers. Give you a very smooth writing experience.
- 【Premium Quality】Specially lacquered surface, anti-scratch silver finished aluminium frame, ABS plastic corner with screw-fixing in corners. Fixing kits and detachable marker tray included.
- 【Versatile Installation】Flexible mounting allows you to install your whiteboard either horizontally or vertically. Easily customize the board's orientation to fit your space and needs. The classic design will match any decoration, making it a perfect addition to your space.
- 【Multiple Uses】It is a good choice for home, school, office, small group instruction, kitchen, stores, dormitory and classroom etc. Perfect for play counting, guided reading, learning, presentation, drawing, education and grocery list etc, without paper wasting.
- 【Warmly Remind】If you have any questions about VIZ-PRO whiteboard, please contact us by e-mail freely, Surely help you solve the problems.
* { box-sizing: border-box; }
.board {
display: flex;
align-items: flex-start;
gap: 1rem;
}
.column {
flex: 1 1 0;
min-width: 0;
padding: 1rem;
background: #f1f3f5;
border-radius: 0.5rem;
}
.task-list {
min-height: 4rem;
margin: 0;
padding: 0;
list-style: none;
}
.task {
margin: 0 0 0.75rem;
padding: 0.75rem;
background: white;
border: 1px solid #d9dee3;
border-radius: 0.35rem;
cursor: grab;
}
.task:active { cursor: grabbing; }
.column.is-over { outline: 2px solid #3973d6; }
@media (max-width: 600px) {
.board { flex-direction: column; }
.column { width: 100%; }
}
3. Track a drag and accept drops
The browser emits dragstart when dragging begins, repeated drag and dragover events during movement, dragenter and dragleave as the pointer crosses elements, drop at the destination, and dragend when the operation finishes. Use start and end events for temporary state; do not expect intermediate events to run only once.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →A drop target must cancel its dragover event with preventDefault(). Filter for this board’s task payload so unrelated dragged content is not accepted. The MDN HTML Drag and Drop API reference explains that a target becomes eligible when its dragover event is canceled.
Rank #3
- Folding, portable, lightweight dry erase SCRUM Board
- Works with dry erase and chalkboard markers
- Great for organizing tasks and projects
- Measures 12" x 18", but folds to 9" x 12" for easy transport
- Magnets can stick to both sides of the board
const board = document.querySelector(".board");
let draggedTask = null;
board.addEventListener("dragstart", (event) => {
const task = event.target.closest(".task");
if (!task || !board.contains(task)) return;
draggedTask = task;
event.dataTransfer.effectAllowed = "move";
event.dataTransfer.setData("text/plain", task.dataset.taskId);
});
board.addEventListener("dragover", (event) => {
const column = event.target.closest(".column");
if (!column || !board.contains(column)) return;
if (!event.dataTransfer.types.includes("text/plain")) return;
event.preventDefault();
event.dataTransfer.dropEffect = "move";
});
board.addEventListener("drop", (event) => {
const column = event.target.closest(".column");
if (!column || !board.contains(column)) return;
const taskId = event.dataTransfer.getData("text/plain");
if (!taskId || !draggedTask || draggedTask.dataset.taskId !== taskId) return;
event.preventDefault();
column.querySelector(".task-list").append(draggedTask);
draggedTask = null;
});
board.addEventListener("dragend", () => {
draggedTask = null;
});
This minimal version keeps a reference to the dragged element in memory and also carries its identifier in DataTransfer. For a small, single board that is straightforward. The drag data store has timing constraints: write custom data during dragstart and read it during drop; do not treat it as a general-purpose JavaScript object store available to every event.
The code uses event delegation on the board, so listeners also work for tasks added later. If you add nested buttons, links, or drag handles, refine the selector and interaction so a click on a control does not accidentally start a card drag.
Rank #4
- Precision Size & What's Included: You will receive 15 rolls of ultra-thin whiteboard tape in a 1/8 inch (approx. 3mm) width. IMPORTANT NOTE: This is a delicate, low-tack paper tape designed for gentle applications. It is not suitable for rough, dirty surfaces or tasks requiring strong adhesion. Please consider this before purchasing.
- Gentle & Residue-Free: This low-tack tape applies and removes effortlessly from smooth surfaces (like whiteboards, glass, finished wood) without leaving any sticky residue. Its delicate nature makes it ideal for crafting and painting, not for heavy-duty or permanent tasks.
- Perfect Use Cases: The ultra-thin width is perfect for creating grids on whiteboards, detailed art projects, decorative accents, marking instrument fingerboards, and protecting edges during painting. For best results, ensure the application surface is clean, dry, smooth, and free of dust or oil.
- Usage Guide for Best Adhesion: To ensure the tape sticks well, please note:1) Surfaces must be smooth and clean. 2) Adhesion is temperature-sensitive. Reduced stickiness in cooler environments (e.g., during winter) is normal.
- Color Assortment Note: This set includes 15 rolls in a variety of assorted colors. Please be aware that while we strive for color diversity, the exact color combination may vary slightly between production batches.
4. Choose how cards land in a column
Append to the end
The sample appends the card to the destination list. This is the simplest behavior and is often enough to demonstrate moving tasks between workflow stages.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Insert at a chosen position
To support reordering within a column or dropping between specific cards, calculate the intended position and show a placeholder while the user drags. Remove or reposition that placeholder on drop. Be careful with dragleave: it can fire when the pointer moves from a column into one of its child elements. Before removing the placeholder, check whether the related target remains inside the same column.
Best Value
- EXTRA STRONG MAGNET - Erasable magnets hold firmly to metal whiteboards, locker doors, fridge, file cabinets and metal shelves - stay flat and stable on all metal surfaces.
- ERASES CLEAN - Simply write and erase - smooth whiteboard surface wipes clean day after day, month after month. No stains, no paper waste, no missed deadlines!
- STAY ORGANIZED - Ideal for kanban boards, scrum boards, meal or project planning - move and rearrange magnetic notes without losing track. Perfect chore magnets for household schedules, to-do lists and office tasks.
- REUSABLE MAGNETIC LABELS - Write on magnets used as magnetic index cards, note pads, name tags, locker strips or dry erase accessories for any whiteboard, magnetic board or refrigerator.
- COMPLETE KIT - READY TO USE - Dry erase magnetic note pads plus erasing cloth. For whiteboard, locker, fridge door, shelf, office, cubicle, dorm and kitchen. Designed for home and office planning.
5. Keep task state consistent
For a teaching demo, moving the existing DOM element is sufficient. If the board grows, represent tasks as structured application state, for example objects with an ID, title, status, and order. On drop, update that state first and then render the board from it. This makes column and ordering changes explicit instead of treating markup as the only record of the board.
Task creation, editing, and deletion are separate features: they need controls, input handling, validation, and state updates. Add them after the core movement works rather than implying they are included in the drag-and-drop example.
6. Decide whether a refresh should keep the board
A board that exists only in memory resets when the page reloads. For a small single-browser project, you can serialize structured task state to localStorage and read it during startup. MDN documents the browser API at Window: localStorage.
Recommended Free Tools
Saving locally is not shared or server-backed collaboration. Choose and maintain your own stored format, including how the app handles malformed or older saved data; the cited API reference does not prescribe a task schema, migration strategy, sync, or backup behavior.
7. Provide a way to move tasks without dragging
Dragging has a text-selection trade-off: MDN notes that users may need Alt or the keyboard to select text inside a draggable element. Consider a task menu or explicit controls such as “Move to In Progress” and “Move to Done,” implemented to update the same task state as a drop. That gives users a non-drag option; the exact keyboard and assistive-technology interaction needs to be designed and checked rather than assumed from the drag-and-drop example.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




