Hướng dẫn css selector root - gốc của bộ chọn css

  • Trang chủ
  • Tham khảo
  • CSS
  • CSS3
  • :root

Định nghĩa và sử dụng

  • ":root" chọn thành phần gốc của văn bản.
  • Trong văn bản HTML thành phần gốc luôn luôn là

Cấu trúc

:root {
    property: value; 
}

Ví dụ

HTML viết:




Thành phần p

Thành phần div

Hiển thị trình duyệt khi chưa có CSS:

Thành phần p

Thành phần div

CSS viết:

Hiển thị trình duyệt khi đã có css:

Thành phần p

Thành phần div

CSS viết:

Hiển thị trình duyệt khi đã có css:

Ta thấy tất cả thành phần trong thành phần gốc đã được chọn.

1) Bộ chọn :root trong CSS

- Bộ chọn :root dùng để chọn phần tử gốc trong trang web.:root dùng để chọn phần tử gốc trong trang web.

(phần tử chính là phần tử gốc của trang web)

2) Cách sử dụng bộ chọn :root trong CSS

- Để sử dụng bộ chọn :root, ta dùng cú pháp như sau::root, ta dùng cú pháp như sau:

:root{
    các khai báo định dạng CSS
}

3) Một số ví dụ

Ví dụ

:

- Thiết lập nền màu vàng cho phần tử gốc trong trang web


:root{
    background-color:yellow;
}

Xem ví dụ

Nội dung chính ShowShow

  • Giới thiệu
  • Cách sử dụng CSS Variables
  • Kết luận
  • What’s The Problem?
  • Use Cases And Examples
  • Longhand Properties
  • CSS Backgrounds
  • Checkbox Component
  • Building Sass-Like Mixins
  • Using Calc()
  • Pseudo-Elements
  • Inline Styles

Một cách sử dụng hữu ích khác cho các 3 phút đọc

Giới thiệu

Cách sử dụng CSS Variables

Cách sử dụng CSS Variables

Kết luận

What’s The Problem?

Use Cases And Examples

Longhand Properties

CSS Backgrounds

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}

Checkbox Component

Building Sass-Like Mixins
  • Đã đăng vào thg 12 17, 2018 3:17 SA 3 phút đọc 3 phút đọc
  • Biến (variables) là một trong những khái niệm cơ bản trong lập trình chắc hẳn ai cũng đã biết. Trong CSS cũng vậy, các biến được khai báo trong CSS selector để xác đinh phạm vi của nó. Các trang web phức tạp hiện nay có số lượng CSS rất lớn, thường có rất nhiều giá trị lặp lại, CSS variables có khả năng làm giảm sử lặp lại đó bằng cách cho phép lưu trữ giá trị biến ở 1 nơi và sau đó được tham chiếu ở một nơi khác.
  • 1. Khai báo CSS Variables
  • Để khai báo một biến, trước tiên bạn cần quyết định phạm vi của biến đó sẽ tồn tại. Đối với global scope bạn có thể sử dụng
  • var root = document.querySelector(':root');
    var rootStyles = getComputedStyle(root);
    var mainColor = rootStyles.getPropertyValue('--main-color');
    console.log(mainColor); 
    --> '#ffeead'
    
    1, hoặc bạn cũng có thể tạo các biến cục bộ, tên biến phải bắt đầu bằng 2 dấu gạch ngang (--) và được phân biệt chữ hoa và chữ thường,
    :root {
      --main-color: #ffeead;
      --main-background: #ff0000;
    }
    
:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}

2. Cách sử dụng CSS Variables

  • Để truy cập một biến, bạn cần sử dụng hàm var () và truyền tên của biến làm tham số.
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
  • Kết quả của đoạn mã ở trên giống với



Thành phần p

Thành phần div
1

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
2 hoặc
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
3 khi được compiled. Tuy nhiên, so với các chương trình tiền xử lý, CSS variables có những lợi ích nhất định:

  • Được hỗ trợ trực tiếp bởi trình duyệt, không phải biên dịch.



Thành phần p

Thành phần div
5

Các biến được chia theo tầng (cascading). Cũng như CSS selectors, thuộc tính tùy biển có thể được quy định lại bởi những luật ở tầng thấp hơn.

Giúp mã nguồn dễ đọc và có ý nghĩa hơn, nâng cao tính tùy biến và khả năng bảo trì.




Thành phần p

Thành phần div
6

Kết luận

Tính năng này khá là hữu ích khi các ứng dụng web ngày càng phức tạp về tính năng cũng như giao diện người dùng, mà bạn không muốn sử dụng các chương trình tiền xử lý CSS (CSS pre-processors) như SASS, LESS hay Stylus . Hẹn gặp lại các bạn trong các bài tiếp theo 😃

All rights reserved

What’s The Problem?

Nếu bạn đang sử dụng các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
7 giống như
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
8 (ví dụ: Sass), thì bạn đang không tận dụng được đầy đủ lợi ích của chúng.

Hãy xem xét những ví dụ sau:




Thành phần p

Thành phần div
9

… nó không có gì khác biệt so với trong Sass:

:root{
    các khai báo định dạng CSS
}
0

Chỉ sử dụng các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 cho các biến màu không sai chút nào, nhưng nó giống như việc sử dụng Apple M1 MacBook để duyệt internet, mặc dù phiên bản cũ 2012 của bạn vẫn hoạt động tốt.

Có ích gì khi để một chiếc máy tính tiên tiến thực hiện công việc tương tự trong khi bạn có cơ hội sử dụng hết tiềm năng của nó?

Đó chính xác là những gì chúng ta cảm nhận về việc sử dụng các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9.

Mục tiêu của bài viết này là hướng dẫn chúng ta qua các trường hợp sử dụng các biến CSS.

Use Cases And Examples

Longhand Properties

Trong một số trường hợp, bạn có thể cần phải điều chỉnh thủ công của thuộc tính css.

Ví dụ: một thuộc tính




Thành phần p

Thành phần div
11 có thể khác khi ở trong component khác.

Thay vì viết lại, chúng ta có thể sử dụng một

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 cho thứ sẽ thay đổi và nó sẽ được ghi đè thông qua



Thành phần p

Thành phần div
13.

:root{
    các khai báo định dạng CSS
}
6
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
0

Lưu ý rằng chúng ta chỉ cần thay đổi giá trị

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 để thay đổi



Thành phần p

Thành phần div
11.

Nếu không có

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9, chúng ta sẽ cần phải nhập toàn bộ thuộc tính



Thành phần p

Thành phần div
11 chỉ để ghi đè một giá trị của nó.
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
1

Những điều trên cũng có thể áp dụng cho việc sử dụng




Thành phần p

Thành phần div
18.

CSS Backgrounds

Khi nói đến




Thành phần p

Thành phần div
19, các
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 có thể giúp chúng ta giảm bớt code CSS mà chúng ta viết.

Thậm chí tốt hơn, nó có thể làm cho CSS trông đơn giản hơn để đọc.

Storing The URL Value

Trong khi làm markup, có một số trường hợp, chúng ta cần sử dụng thẻ




Thành phần p

Thành phần div
51 với style



Thành phần p

Thành phần div
52 để có thể giải quyết.

Nếu không có

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9, chúng ta sẽ cần phải nhập toàn bộ thuộc tính



Thành phần p

Thành phần div
11 chỉ để ghi đè một giá trị của nó.
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
1

Những điều trên cũng có thể áp dụng cho việc sử dụng

CSS Backgrounds

Khi nói đến




Thành phần p

Thành phần div
19, các
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 có thể giúp chúng ta giảm bớt code CSS mà chúng ta viết.

Thậm chí tốt hơn, nó có thể làm cho CSS trông đơn giản hơn để đọc.

Storing The URL Value

Trong khi làm markup, có một số trường hợp, chúng ta cần sử dụng thẻ




Thành phần p

Thành phần div
51 với style



Thành phần p

Thành phần div
52 để có thể giải quyết.

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9, HTML sẽ giống như sau:
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
2

Thay vì trực tiếp thay đổi thuộc tính




Thành phần p

Thành phần div
54, chúng ta có thể làm như sau.
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
3
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
4

Lưu ý rằng chúng ta cần bao gồm




Thành phần p

Thành phần div
55 mà không có
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9

Background Position

Trong ví dụ trước,

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
7




Thành phần p

Thành phần div
57 được đặt ở phía bên phải.

Đối với bố cục từ phải sang trái (RTL),




Thành phần p

Thành phần div
58 phải được lật lại.
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
5

Chúng ta có thể thấy được sự trợ giúp từ các




Thành phần p

Thành phần div
65.

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 để thực hiện việc này dễ dàng hơn.
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
6

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
8

The Angle Of A Gradient: Part 1

Điều này cũng liên quan đến việc xây dựng bố cục cho đa ngôn ngữ.

Theo mặc định, một góc gradient có thể là

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
9




Thành phần p

Thành phần div
60 và nó cần phải là



Thành phần p

Thành phần div
61 cho các bố cục RTL.

:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
0

The Angle Of A Gradient: Part 2

Liên quan đến góc




Thành phần p

Thành phần div
62 sử dụng các
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 với gradient để điều chỉnh



Thành phần p

Thành phần div
58 rất tiện dụng.

Trong ví dụ sau, vị trí của gradient đã được thay đổi bằng cách chỉ thay đổi biến

Đây là cách chúng ta có thể làm điều này mà không cần biến CSS.

Giả sử rằng chúng ta có




Thành phần p

Thành phần div
66,



Thành phần p

Thành phần div
67 và nó phải có



Thành phần p

Thành phần div
5 8 khác nhau.

Chúng ta cần viết như sau:

Toàn bộ khai báo gradient đang được ghi đè.




Thành phần p

Thành phần div
93.

Clip Path

Một trường hợp sử dụng hữu ích cho các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 là thay đổi các giá trị của



Thành phần p

Thành phần div
90 trên thiết bị di động so với giao diện pc.

Trong hình trên, các điểm đa giác cần được thay đổi và việc sử dụng các

var root = document.querySelector(':root'); var rootStyles = getComputedStyle(root); var mainColor = rootStyles.getPropertyValue('--main-color'); console.log(mainColor); --> '#ffeead' 9 giúp quá trình đó dễ dàng hơn.:root { --default-font-size: 1.1rem; } h2 { font-size: calc(var(--default-font-size) * 5); /* 5.5rem */ } 1

Nếu bạn muốn tìm hiểu thêm về




Thành phần p

Thành phần div
92, đây thực sự là một bài viết của bạn.

Checkbox Component

Một trường hợp sử dụng hoàn hảo cho các biến CSS là kết hợp chúng với

Bằng cách đó, chúng ta có thể tạo các




Thành phần p

Thành phần div
94 động thực hiện chúng bằng cách chỉ thay đổi một hoặc một vài
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9.

Điều đầu tiên tôi đã làm là xác định các giá trị




Thành phần p

Thành phần div
93 cho



Thành phần p

Thành phần div
97 của



Thành phần p

Thành phần div
94.
:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
2
:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
3

Building Sass-Like Mixins

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9.

Ý tưởng là chúng ta là đặt các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 ban đầu cho một thuộc tính cụ thể và sau đó chúng ta có thể ghi đè các biến khi cần.

Trong nhiều trường hợp, chúng ta cần phải căn giữa các

:root{
    các khai báo định dạng CSS
}
00, điều này có thể được giải quyết bằng cách thêm
:root{
    các khai báo định dạng CSS
}
01 vào.

Trong trường hợp này, chúng ta sẽ đặt một class giữ

Điều này có thể hữu ích cho các trường hợp sử dụng khác nhau.

:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
6

Lưu ý rằng chúng ta đã sử dụng

:root{
    các khai báo định dạng CSS
}
0 9.

Nếu biến

:root{
    các khai báo định dạng CSS
}
60 không được xác định, thì
:root{
    các khai báo định dạng CSS
}
61 sẽ được sử dụng như một giá trị mặc định.
:root{
    các khai báo định dạng CSS
}
62 quan trọng để thêm
:root{
    các khai báo định dạng CSS
}
63 vào số cuối cùng.

Với điều đó, chúng ta có thể tạo các class có thể dùng chung bằng cách thêm

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9
:root{
    các khai báo định dạng CSS
}
60.
:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
7

Pseudo-Elements

Với các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9, có thể thay đổi
:root{
    các khai báo định dạng CSS
}
67 vì thuộc tính này được kế thừa từ thuộc tính gốc của nó.

Hãy xem xét ví dụ sau:

Phần tiêu đề có một đường màu tím sử dụng

:root{
    các khai báo định dạng CSS
}
67 để trang trí.

Chúng ta có thể chuyển một

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 vào tiêu đề và
:root{
    các khai báo định dạng CSS
}
67 sẽ kế thừa nó.
:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
8

Ngoài ra, chúng ta còn có thể thay đổi

:root{
    các khai báo định dạng CSS
}
67 thông qua Javascript code.

Inline Styles

Một cách sử dụng hữu ích khác cho các

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 là sử dụng chúng như
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
03.

Điều này có thể mở ra rất nhiều khả năng tùy chỉnh




Thành phần p

Thành phần div
94 chỉ bằng cách thay đổi một hoặc nhiều biến.

Hãy xem xét ví dụ sau.

:root {
  --default-font-size: 1.1rem;
}

h2 {
  font-size: calc(var(--default-font-size) * 5); /* 5.5rem */
}
9

Chúng ta có một

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
05 và chiều rộng mặc định là
.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
06.

Trong HTML, chúng ta có thể ghi đè bằng cách đặt lại

var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
9 thành một giá trị khác.
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); 
--> '#ffeead'
0

Nếu bạn quan tâm đến

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
08 , có thể xem thêm bài viết này.

Conclusion

Trên là tìm hiểu vể các trường hợp sử dụng

.title {
  color: var(--main-color);
  background-color:  var(--main-background);
}
09, hi vọng giúp ích được cho mọi người

Thank for watching!!!

References

  • use css variables
  • css variable 101
  • css variables inline
  • benefits css variables
  • practical-css-variables