Tác giả NIIT - ICT HANOI
Ngày đăng 16/ 07/ 2020
Bình luận 0 Bình luận
Trong bài hướng tự học lập trình JS này, bạn sẽ tìm hiểu cách tạo kiểu CSS cho các phần tử thông qua JS DOM.
Tạo kiểu CSS với JS DOM
Đúng vậy, ngoài cách viết CSS thông thường trong file .css, bạn cũng có thể tạo kiểu CSS bằng cách sử dụng JS DOM.
Bởi vì JS DOM cũng giống như một selector vậy, nó trỏ đến phần tử bạn muốn thao tác.
Và thông qua đó, bạn có thể áp dụng kiểu dáng (CSS) cho nó.
Đây cũng là cách mà chúng ta thường làm khi lập trình web, bởi có nhiều tác vụ bạn cần thay đổi, tạo kiểu CSS mà không được mở file .css.
Bạn có thể áp dụng hầu hết tất cả các kiểu cho các phần tử trong website như: Phông chữ, màu sắc, lề, viền, hình nền, căn chỉnh văn bản, chiều rộng và chiều cao, vị trí, v.v.
Ngay trong phần sau chúng ta sẽ thảo luận về các phương pháp tạo kiểu CSS khác nhau bằng JavaScript.
Kiểu nội tuyến được áp dụng trực tiếp cho thành phần HTML cụ thể bằng thuộc tính style.
Trong JavaScript, thuộc tính style được sử dụng để lấy hoặc đặt kiểu nội tuyến của một phần tử.
Ví dụ sau sẽ đặt thuộc tính màu và phông chữ của một phần tử với id = 'intro'.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Thiết lập kiểu nội tuyến bằng JS DOM</title>
</head>
<body>
<p id="intro">Đây là một đoạn văn bản thông thường.</p>
<p>Đây là một đoạn văn bản khác</p>
<script>
// Đầu tiên, hãy trỏ đến phần tử
// Cần tạo kiểu
var elem = document.getElementById("intro");
// Áp dụng kiểu cho phần tử
elem.style.color = "blue";
elem.style.fontSize = "18px";
elem.style.fontWeight = "bold";
</script>
</body>
</html>
Trong ví dụ trên bạn đã thấy, chúng ta sử dụng JS DOM để trỏ đến phần từ cần tạo kiểu.
Sau đó áp dụng kiểu phần tử đó bằng cú pháp như:
<JS DOM>.style.<Thuộc tính cần CSS> = "<Giá trị>";
Ở trong CSS, bạn thường thấy thuộc tính viết như thế này, ví dụ:
+ font-size
+ font-weight
+ border-left-style
Nhưng khi sử dụng JS DOM để thao tác thì chúng ta sẽ viết tên thuộc tính kiểu camel case (Kiểu con lạc đà), có nghĩa là:
+ Từ đầu tiên sẽ viết thường toàn bộ
+ Từ tiếp theo trở đi sẽ viết HOA chữ cái đầu
Đây là cách chúng ta sẽ viết thuộc tính trong khi sử dụng JS DOM:
+ fontSize
+ fontWeight
+ borderLeftStyle
+ ...
Tương tự, bạn có được các kiểu được áp dụng trên các thành phần HTML bằng cách sử dụng thuộc tính kiểu.
Ví dụ sau sẽ lấy thông tin kiểu từ phần tử có id = 'intro'.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Lấy thông tin kiểu bằng JS DOM</title>
</head>
<body>
<p id="intro" style="color:blue; font-size:20px;">Đây là một đoạn văn bản thông thường.</p>
<p>Đây là một đoạn văn bản khác</p>
<script>
// Đầu tiên, hãy trỏ đến phần tử
// Cần lấy thông tin kiểu
var elem = document.getElementById("intro");
// In thông tin kiểu ra màn hình console
console.log(elem.style.color); // blue
console.log(elem.style.fontSize); // 20px
console.log(elem.style.fontWeight); // Không có gì
</script>
</body>
</html>
Thuộc tính style không hữu ích lắm khi lấy thông tin kiểu từ các phần tử, vì nó chỉ trả về các quy tắc kiểu nội tuyến của phần tử.
Nếu kiểu được định nghĩa theo cách được nhúng trong cặp thẻ <style></style> hoặc file css bên ngoài thì nó không lấy được.
Do đó,
Để lấy các giá trị của tất cả các thuộc tính CSS thực sự được sử dụng để kết xuất một phần tử, bạn có thể sử dụng phương thức window.getComputingStyle(), như trong ví dụ sau:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Get Computed Style Demo</title>
<style type="text/css">
#intro {
font-weight: bold;
font-style: italic;
}
</style>
</head>
<body>
<p id="intro" style="color:red; font-size:20px;">Đây là một đoạn văn bản.</p>
<p>Đây là một đoạn văn bản khác.</p>
<script>
// Chọn đến phần tử
var elem = document.getElementById("intro");
// Lấy tất cả thông tin kiểu
var styles = window.getComputedStyle(elem);
// In thông tin kiểu ra màn hình console
console.log(styles.getPropertyValue("color")); // rgb(255, 0, 0)
console.log(styles.getPropertyValue("font-size")); // 20px
console.log(styles.getPropertyValue("font-weight")); // 700
console.log(styles.getPropertyValue("font-style")); // italic
</script>
</body>
</html>
Lưu ý: Giá trị 700 cho trọng số phông chữ thuộc tính CSS giống như từ khóa bold. Từ khóa red là rgb(255,0,0)
Đó là cách lấy thông tin thuộc tính, ngược lại, để thêm thuộc tính bạn có thể tham khảo trên Mozilla.
Bạn cũng có thể lấy hoặc áp dụng các class CSS cho các phần tử HTML bằng thuộc tính className.
Vì class là một từ dành riêng trong JavaScript, vì vậy JavaScript sử dụng thuộc tính className để chỉ giá trị của thuộc tính class của HTML.
Ví dụ sau sẽ chỉ ra cách thêm một lớp mới hoặc thay thế tất cả các class hiện có thành một phần tử div có id = 'info'.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Thêm hoặc thay thế class của HTML bằng JS DOM</title>
<style>
.highlight {
background: yellow;
}
</style>
</head>
<body>
<div id="info" class="disabled">Một thông tin nào đó!</div>
<script>
// Chọn đến phần tử
var elem = document.getElementById("info");
// Thêm hoặc thay thế tất cả class bằng class note
elem.className = "note";
// Thêm vào một class mới là class highlight
elem.className += " highlight";
</script>
</body>
</html>
Bạn có thể hiểu cách làm này như là thay thế, nối chuỗi trong JavaScript
+ Muốn thay thế tất cả class hiện có bằng một class mới, chúng ta sử dụng toán tử "="
+ Muốn thêm class mới vào thì sử dụng toán tử "+="
Ví dụ, class hiện có là class="disabled"
Sau khi thực hiện elem.classnam += " highlight"; thì kết quả chúng ta nhận được là:
+... class="disabled highlight" ...
Ngoài ra, chúng ta còn nhiều cách để thao tác với các class CSS bằng JS DOM.
Bạn có thể sử dụng thuộc tính classList để lấy, đặt hoặc xóa các class CSS dễ dàng khỏi một phần tử.
Thuộc tính này được hỗ trợ trong tất cả các trình duyệt chính trừ Internet Explorer trước phiên bản 10. Đây là một ví dụ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Ví dụ về JS classList</title>
<style>
.highlight {
background: yellow;
}
</style>
</head>
<body>
<div id="info" class="disabled">Thông tin gì đấy!</div>
<script>
// Chọn đến phần tử cần thao tác
var elem = document.getElementById("info");
// Thêm mới một class
elem.classList.add("hide");
// Thêm nhiều classs
elem.classList.add("note", "highlight");
// Loại bỏ một class nào đó
elem.classList.remove("hide");
// Loại bỏ nhiều class
elem.classList.remove("disabled", "note");
// Nếu class tồn tại thì loại bỏ nó
// Nếu class chưa tồn tại thì thêm nó
elem.classList.toggle("visible");
// Kiểm tra xem class có tồn tại hay không
if(elem.classList.contains("highlight")) {
alert("Phần tử có đã có class được chỉ định.");
}
</script>
</body>
</html>
Như vậy là qua bài hướng dẫn này mình đã giúp bạn biết cách thiết lập kiểu nội tuyến cũng như cách lấy, và áp dụng thuộc tính, class cho phần tử bằng JS DOM.
Hi vọng bài hướng dẫn sẽ giúp bạn học JS tốt hơn.
>> Muốn học Lập trình Web bài bản thì tham khảo ngay KHÓA HỌC LẬP TRÌNH FULL STACK tại NIIT - ICT Hà Nội.
Chúc bạn thành công!
>> Đọc thêm: DOM Selector trong JavaScript