JSFiddle - React, Tailwind, and code Playground
by ZooeyLai
HTML
<div class="wrap">
<div id="root"></div>
</div>
CSS
:root{
--primary: #4f46e5;
--secondary:#2563eb;
--secondary100: #dbeafe;
--gray800: #333;
--white: #fff;
--background:#e4e4e4;
--warning100 :#ffedd5;
--warning : #ea580c;
--danger100 :#fee2e2;
--danger : #dc2626;
--success : #059669;
--success100: #ecfdf5;
}
*,
*::after,
*::before {
padding: 0px;
margin: 0px;
font-family: inherit;
box-sizing: border-box;
line-height: 1.5;
}
html,
body {
height: 100vh;
}
body {
font-family: sans-serif;
font-size: 16px;
display: flex;
/* flex-direction: column;
align-items: center;
justify-content: center; */
background-color: aliceblue;
}
.wrap{
width: 600px;
margin: 100px auto;
}
ul,li{
list-style: none;
}
.task-list li{
padding: 1.5rem 1rem;
font-size: 0.875rem;
display: flex;
align-items: center;
gap: 0.75rem;
border-left: 4px solid #c1c1c1;
border-radius: 0.25rem;
background-color: var(--white);
}
.task-list li span{
flex: auto;
}
.task-list li + li{
margin: 0.5rem 0;
}
.task-list li:last-child{
margin-bottom: 1rem;
}
.task-list li span.done{
flex: none;
color: var(--success);
display: none;
font-weight: 600;
}
JavaScript
let todos = [
{ title: '倒垃圾' },
{ title: '繳電話費' },
{ title: '採買本週食材' },
];
function render(){
let root = document.querySelector('#root');
let tasksHolder = document.createElement('ul');
tasksHolder.classList.add('task-list');
root.append(tasksHolder);
todos.forEach((task) => {
let taskList = document.createElement('li');
let newTaskEl = document.createElement('span');
newTaskEl.classList.add('task-label');
tasksHolder.append(taskList);
taskList.append(newTaskEl);
newTaskEl.textContent = task.title;
})
}
render();