- vừa được xem lúc

Vanilla JS: Random color

0 0 63

Người đăng: kentrung

Theo Viblo Asia

1. Yêu cầu

  • Yêu cầu thứ nhất là khi click vào button thì thay đổi màu nền ngẫu nhiên trong một danh sách các mã màu cho trước.
  • Yêu cầu thứ hai là màu sau không trùng với màu trước.
  • Đây là một trong những bài tập vanilla Javascript ở mức cơ bản giúp các bạn làm quen, chủ yếu giải thích về Javascript nên phần giao diện sẽ không phân tích nhiều. Hi vọng với bài tập này các bạn sẽ thấy thích thú khi học Javascript.

2. HTML - CSS

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8"> <title>Javascript Project</title> <!-- bootstrap 4.5.0 --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css"> <style> body {width: 100vw;height: 100vh;display: flex;align-items: center;justify-content: center;} </style>
</head>
<body> <button class="btn btn-primary">Thay đổi ngẫu nhiên màu nền</button> <script> // code javascript </script>
</body>
</html>

3. Hướng giải quyết chính

  • Lấy mã màu hiện tại
  • Lọc danh sách mã màu đã loại bỏ màu ở trên
  • Lấy màu ngẫu nhiên trong danh sách ở trên (easy game)

4. JS

  • Step 1: Đặt biến lưu giá trị màu hiện tại, mặc định lúc đầu có thể đặt là transparent
let currentColor = 'transparent'
  • Step 2: Cho danh sách các mã màu cho sẵn
const listColors = ['red', 'orange', 'yellow', 'blue', 'green', 'cyan', 'violet']
  • Step 3: Viết hàm làm 3 nhiệm vụ:
  • Lọc danh sách đã loại trừ màu currentColor
  • Lấy màu ngẫu nhiên trong danh sách trên
  • Lưu currentColor bằng màu ngẫu nhiên đó
  • Trả về giá trị màu ngẫu nhiên
function getRandomColorExcept(previousColor) { let listColorsFiltered = listColors.filter(color => color !== previousColor) randomColor = listColorsFiltered[Math.floor(Math.random() * listColorsFiltered.length)] currentColor = randomColor return randomColor
}
  • Step 4 Lắng nghe sự kiện click của thẻ button, mỗi lần click sẽ lấy màu ngẫu nhiên ở step 3 và gán màu cho background
  • Dưới đây là toàn bộ code JS
// step 1
let currentColor = 'transparent' // step 2
const listColors = ['red', 'orange', 'yellow', 'blue', 'green', 'cyan', 'violet'] // step 3
function getRandomColorExcept(previousColor) { let listColorsFiltered = listColors.filter(color => color !== previousColor) randomColor = listColorsFiltered[Math.floor(Math.random() * listColorsFiltered.length)] currentColor = randomColor return randomColor
} // step 4
const btnElement = document.querySelector('button')
const bodyElement = document.querySelector('body') btnElement.addEventListener('click', function() { bodyElement.style.backgroundColor = getRandomColorExcept(currentColor)
})

Bài viết đến đây là hết, hi vọng với bài viết này các bạn đã thêm được nhiều kiến thức bổ ích. Hẹn gặp lại các bạn ở bài viết tiếp theo!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số quy tắc và name class phổ biến cho Front-end Dev

Trong CSS, các thủ tục setting đóng vai trò to lớn, nhưng bên cạnh đó, cách đặt tên theo các từ đơn sao cho phù hợp cũng quan trọng không kém . Đặt tên rất khó, nhưng cũng rất quan trọng .

0 0 78

- vừa được xem lúc

2021, chúng ta cần tối ưu hóa việc tải hình ảnh trên web như nào?

Rất chào các bạn,. Như các bạn đã biết, trong kỉ nguyên công nghệ, song song với sự sinh ra dày đặc của các trang web mới cũng là sự biến mất của những trang web "lạc hậu" hay hoạt động kém hiệu quả.

0 0 43

- vừa được xem lúc

Tài nguyên nghiên cứu sâu Html

1. Articles and standards. . HTML 5.

0 0 183

- vừa được xem lúc

Tìm hiểu về Event.preventDefault(), Event.stopPropagation() và Event.stopImmediatePropagation()

Chúng ta thương thấy 3 method này và có thể dẫn dến bối rối và nhầm lẫn giữa chúng:. . Event.preventDefault().

0 0 36

- vừa được xem lúc

Vanilla JS Project: Tính tuổi

1. Yêu cầu.

0 0 50

- vừa được xem lúc

Thủ thuật nhỏ để căn chỉnh image với object-fit

Chào các bạn,. Có lẽ trong hành trình code của các bạn thì không ít lần gặp vấn đề méo ảnh do fix cứng cả width, height của ảnh nhỉ? Hoặc kể cả khi bạn set value cho 1 thuộc tính weigth hoặc height còn thuộc tính còn lại để auto thì nhiều lúc ảnh cũng không được hiển thị toàn vẹn cho lắm.

0 0 34