Cách tạo: danh sách công việc

Học cách sử dụng CSS và JavaScript để tạo danh sách công việc.

Danh sách công việc cần làm

Tạo danh sách công việc cần làm bằng CSS và JavaScript để tổ chức nhiệm vụ và xác định ưu tiên của chúng.

Thử ngay

Tạo danh sách công việc cần làm

Bước 1 - Thêm HTML:

<div id="myDIV" class="header">
  <h2>My To Do List</h2>
  <input type="text" id="myInput" placeholder="Title...">
  <span onclick="newElement()" class="addBtn">Add</span>
</div>
<ul id="myUL">
  <li>Hit the gym</li>
  <li class="checked">Pay bills</li>
  <li>Meet George</li>
  <li>Buy eggs</li>
  <li>Read a book</li>
  <li>Organize office</li>
</ul>

Bước 2 - Thêm CSS:

Đặt phong cách cho tiêu đề và danh sách:

/* Chỉnh sửa khoảng cách và viền vào tổng chiều rộng và chiều cao của phần tử */
* {
  box-sizing: border-box;
}
/* Loại bỏ khoảng cách bên ngoài và bên trong của danh sách */
ul {
  margin: 0;
  padding: 0;
}
/* Đặt phong cách cho mục danh sách */
ul li {
  cursor: pointer;
  position: relative;
  padding: 12px 8px 12px 40px;
  background: #eee;
  font-size: 18px;
  transition: 0.2s;
  /* Làm cho mục danh sách không thể chọn */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
/* Đặt tất cả các mục danh sách chẵn thành màu khác nhau (vân cá voi) */
ul li:nth-child(odd) {
  background: #f9f9f9;
}
/* Khi con trỏ chuột đè lên, màu nền sẽ tối hơn */
ul li:hover {
  background: #ddd;
}
/* Nhấn vào, thêm màu nền và gạch chân văn bản */
ul li.checked {
  background: #888;
  color: #fff;
  text-decoration: line-through;
}
/* Thêm dấu hiệu "Đã chọn" khi nhấp chuột */
ul li.checked::before {
  content: '';
  position: absolute;
  border-color: #fff;
  border-style: solid;
  border-width: 0 2px 2px 0;
  top: 10px;
  left: 16px;
  transform: rotate(45deg);
  height: 15px;
  width: 7px;
}
/* Đặt樣式 cho nút đóng */
.close {
  position: absolute;
  right: 0;
  top: 0;
  padding: 12px 16px 12px 16px;
}
.close:hover {
  background-color: #f44336;
  color: white;
}
/* Đặt樣式 cho tiêu đề */
.header {
  background-color: #f44336;
  padding: 30px 40px;
  color: white;
  text-align: center;
}
/* Xóa浮动 sau tiêu đề */
.header:after {
  content: "";
  display: table;
  clear: both;
}
/* Đặt樣式 cho trường nhập liệu */
input {
  margin: 0;
  border: none;
  border-radius: 0;
  width: 75%;
  padding: 10px;
  float: left;
  font-size: 16px;
}
/* Đặt樣式 cho nút "Thêm" */
.addBtn {
  padding: 10px;
  width: 25%;
  background: #d9d9d9;
  color: #555;
  float: left;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
  transition: 0.3s;
  border-radius: 0;
}
.addBtn:hover {
  background-color: #bbb;
}

Bước 3 - Thêm JavaScript:

// Tạo một nút "Đóng" cho mỗi mục danh sách và gắn vào mỗi mục
var myNodelist = document.getElementsByTagName("LI");
var i;
for (i = 0; i < myNodelist.length; i++) {
  var span = document.createElement("SPAN");
  var txt = document.createTextNode("\u00D7");
  span.className = "close";
  span.appendChild(txt);
  myNodelist[i].appendChild(span);
}
// Nhấn vào nút đóng để ẩn mục danh sách hiện tại
var close = document.getElementsByClassName("close");
var i;
for (i = 0; i < close.length; i++) {
  close[i].onclick = function() {
    var div = this.parentElement;
    div.style.display = "none";
  }
}
// Thêm một dấu tích "đã chọn" khi nhấn vào mục danh sách
var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
  if (ev.target.tagName === 'LI') {
    ev.target.classList.toggle('checked');
  }
}, false);
// Đăng kí một phần tử mới khi nhấn nút "Thêm"
function newElement() {
  var li = document.createElement("li");
  var inputValue = document.getElementById("myInput").value;
  var t = document.createTextNode(inputValue);
  li.appendChild(t);
  if (inputValue === '') {
    alert("You must write something!");
  } else {
    document.getElementById("myUL").appendChild(li);
  }
  document.getElementById("myInput").value = "";
  var span = document.createElement("SPAN");
  var txt = document.createTextNode("\u00D7");
  span.className = "close";
  span.appendChild(txt);
  li.appendChild(span);
  for (i = 0; i < close.length; i++) {
    close[i].onclick = function() {
      var div = this.parentElement;
      div.style.display = "none";
    }
  }
}

Thử ngay