Các biến CSS có tốt không?
Trong bài đăng này, tôi sẽ nhấn mạnh một vài điều kỳ quặc xung quanh các biến CSS mà không ai nói đến. Sau đó, bạn sẽ không nhìn họ như trước nữa Show
Mục lục1) Hãy cẩn thận với p{ --color:red!important; --color:blue; color:var(--color); } 0Sử dụng 0 với các biến CSS hơi phức tạp, vì vậy hãy bắt đầu với một ví dụ cơ bản
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Màu của 4 sẽ là gì?
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Nhưng nó không phải. màu của 4 sẽ là màu xanh vì chúng ta sẽ có những thứ sau
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 0 trong trường hợp này không phải là một phần của giá trị của màu nhưng được sử dụng để tăng tính đặc hiệu của 8. Từ
Đây là một ví dụ khác để hiểu rõ hơn
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Ở trên sẽ cho chúng ta một màu 5
Hãy tạo mã của chúng tôi
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Theo logic tương tự, chúng tôi giải quyết tầng cho 8 và cho 4. 2 là người chiến thắng và tương tự cho 9, vì vậy cuối cùng chúng tôi có 0 vì chúng tôi không còn quan tâm đến 1Một quy tắc quan trọng là luôn coi các biến CSS (thuộc tính tùy chỉnh) là thuộc tính thông thường chứ không chỉ các biến lưu trữ giá trị
2) Họ không thể lưu trữ URLĐây là một hạn chế phổ biến mà bạn sẽ vấp phải vào một ngày nào đó Điều bạn không thể làm❌
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bạn nên làm gì ✔️
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Giới hạn này liên quan đến cách phân tích cú pháp của 2. Một chút khó khăn để giải thích nhưng như chúng ta có thể thấy cách khắc phục khá dễ dàng. Luôn thêm phần 2 trong biến CSSNếu bạn muốn biết chi tiết chính xác hơn, tôi khuyên bạn nên đọc câu trả lời Stack Overflow này 3) Họ có thể biến một giá trị không hợp lệ thành hợp lệĐây là trò đùa yêu thích của tôi và nó sẽ khiến bạn đau đầu Hãy bắt đầu với một ví dụ cơ bản
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 4 của chúng ta sẽ có màu chuyển sắc. đợi đã, không, nó có bối cảnh 5. Ah. Tôi đã đánh máy sai ở 6. Tôi có thể dễ dàng nhận thấy lỗi của mình vì trình duyệt đã bỏ qua phần khai báo và sử dụng phần khai báo trước đóBây giờ, hãy giới thiệu một biến
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Kiểm tra mã và bạn sẽ thấy rằng nền hiện trong suốt và phần khai báo thứ hai của chúng ta không còn bị gạch chéo nữa vì giờ đây nó là một phần hợp lệ. Bạn thậm chí sẽ nhận thấy rằng khai báo đầu tiên là khai báo bị gạch chéo vì khai báo thứ hai sẽ ghi đè lên nó Cái quái gì đang xảy ra thế này??Khi sử dụng một biến trong một thuộc tính, trình duyệt sẽ chỉ đánh giá giá trị của thuộc tính đó tại "thời điểm giá trị được tính toán" vì trước tiên chúng ta cần biết nội dung của biến. Trong những trường hợp như vậy, trình duyệt sẽ coi giá trị là hợp lệ khi thực hiện xếp tầng và chỉ sau đó nó sẽ trở nên không hợp lệ Trong trường hợp của chúng tôi, trình duyệt đang xem xét khai báo cuối cùng sau khi giải quyết tầng. Sau đó khi thực hiện đánh giá, nó dường như không hợp lệ nên nó sẽ bị bỏ qua. Chúng tôi sẽ không quay lại tuyên bố trước đó vì chúng tôi đã giải quyết tầng và chúng tôi kết thúc mà không có nền nên một nền trong suốt Bạn có thể nghĩ hành vi như vậy là phi logic nhưng nó thực sự logic vì một giá trị có thể hợp lệ hoặc không hợp lệ dựa trên biến CSS nên trình duyệt không thể biết ngay từ đầu
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
và
Để sử dụng các từ dễ dàng. một biến CSS sẽ đặt trạng thái của một thuộc tính ở chế độ chờ cho đến khi chúng tôi thực hiện đánh giá. Chỉ sau khi đánh giá, chúng tôi mới có thể nói nó hợp lệ hay không hợp lệ. Nếu nó không hợp lệ thì đã quá muộn, chúng tôi không thể quay lại sử dụng cái khác Một câu hỏi về Stack Overflow có liên quan 4) Chúng có thể được sử dụng đơn vịHầu như tất cả các hướng dẫn/khóa học sẽ chỉ cho bạn ví dụ như vậy 0Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Nhưng bạn cũng có thể làm như sau 1Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Việc có đơn vị trong biến là không bắt buộc và trong một số trường hợp, sử dụng giá trị không có đơn vị thậm chí còn tốt hơn vì việc thêm đơn vị khá dễ dàng và chúng tôi có thể cần sử dụng cùng một giá trị với một đơn vị khác Đây là một ví dụ trong số nhiều ví dụ (lấy từ câu trả lời này ) Đừng bao giờ quên tính năng quan trọng này. Nó sẽ giúp bạn tiết kiệm một ngày 5) Chúng có thể hoạt hìnhBan đầu, các biến CSS được định nghĩa là các thuộc tính không thể hoạt hình theo
Nhưng mọi thứ đã thay đổi và nhờ cái mới, chúng ta có thể thực hiện hoạt ảnh/chuyển tiếp với các biến CSS Hỗ trợ vẫn còn thấp (đặc biệt là trên Firefox) nhưng đã đến lúc tìm hiểu điều này Tìm bên dưới một số trường hợp sử dụng mà tôi đang dựa vào tính năng đó Cuối cùng chúng ta cũng có thể tạo hiệu ứng chuyển màu CSSTemani Afif ・ 26 Feb '21 ・ 2 phút đọc#css #webdev #tutorial Hiệu ứng phân mảnh chỉ CSS bằng một phần tửTemani Afif ・ 23 Mar '21 ・ 6 phút đọc#css #webdev #tutorial Tôi sẽ viết nhiều bài báo hơn để cho thấy điều kỳ diệu mà chúng ta có thể làm với điều này. Giữ nguyên 6) Họ không thể lưu trữ giá trị p{ --color:red!important; --color:blue; color:var(--color); } 1Hãy xem xét ví dụ sau 2Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 3Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Theo trực giác, chúng ta có thể nghĩ rằng 9 sẽ kế thừa cùng một đường viền của phần tử cha vì 0 chứa 1 nhưng nó sẽ không (bạn có thể thử xem)Như tôi đã giải thích ở phần (1), sai lầm phổ biến là nghĩ rằng các biến CSS sẽ chỉ lưu trữ một giá trị mà chúng ta có thể sử dụng sau này nhưng không phải vậy. Biến CSS (thuộc tính tùy chỉnh) là thuộc tính thông thường nên 1 áp dụng cho chúng và không được lưu trữ bên trong chúngThí dụ 4Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Như bạn có thể thấy, logic kế thừa áp dụng cho chúng giống như với các thuộc tính chung Đáng lưu ý rằng làm như trên là vô ích vì các biến CSS theo mặc định được kế thừa. Nó giống như việc đặt 1 thành tài sản được thừa kế theo mặc định (ví dụ: ____14_______4)Điều này nói rằng tôi đã xây dựng một kỹ thuật để có thể sử dụng các biến CSS với 1Làm cách nào để lưu trữ giá trị kế thừa bên trong biến CSS (còn gọi là thuộc tính tùy chỉnh)? 10 tháng 11 '18 Nhận xét. Câu trả lời. 1 6 Hãy xem xét ví dụ đơn giản này để minh họa vấn đề 5_______5_______6… 7Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Logic tương tự áp dụng cho các từ khóa khác như 6 và 7. Cách đặt biến CSS thành giá trị không được đặt, “--unset-it. bỏ đặt”?7) Chúng có thể trốngCó, bạn có thể làm như sau 8Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Trên đây là hợp lệ theo
Hãy chú ý đến câu cuối cùng vì chúng ta cần có ít nhất một dấu cách. Dưới đây là không hợp lệ 9Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Quirk này chủ yếu được sử dụng với tính năng dự phòng để thực hiện một số phép thuật Một ví dụ cơ bản để hiểu thủ thuật 0Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 1Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Giá trị trống cho phép chúng tôi xóa khai báo 3 khỏi thuộc tính. Điều này có thể hữu ích khi sử dụng 3 trong một giá trị phức tạpTrong trường hợp 3 được sử dụng một mình, logic tương tự cũng được áp dụng nhưng cuối cùng chúng ta sẽ có một giá trị trống không hợp lệ đối với hầu hết các thuộc tínhNếu chúng ta lấy ví dụ đầu tiên, chúng ta sẽ có 6, điều này sẽ dẫn đến một giá trị không hợp lệ tại "thời điểm giá trị được tính toán" (hãy nhớ (3)) vì vậy nền trong suốt8) Biến CSS không phải là biến C++Thật không may, nhiều nhà phát triển có xu hướng so sánh các biến CSS với các biến của các ngôn ngữ khác và cuối cùng gặp nhiều vấn đề trong logic của họ. Vì lý do cụ thể này, tôi không muốn gọi chúng là biến mà là Thuộc tính tùy chỉnh vì chúng là thuộc tính Mọi người muốn làm gì 2Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 3Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 4Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Tất cả những điều trên sẽ không bao giờ hiệu quả. Hai cái đầu tiên đơn giản là không hợp lệ vì chúng ta có một biến vì một biến đang tham chiếu đến chính nó (ví dụ đầu tiên) hoặc một nhóm biến (ví dụ thứ hai) và đang tạo ra một chu trình Trong ví dụ cuối cùng, cả 7 và 8 sẽ có 9 vì tầng sẽ ưu tiên cho khai báo cuối cùng 0 sẽ được áp dụng cho cả 8 và 7Điều này nói rằng bạn nên ngừng suy nghĩ về C++, JavaScript, Java, v.v. khi làm việc với các biến CSS vì chúng là các thuộc tính tùy chỉnh có logic của chúng 9) Họ chỉ làm việc từ cha mẹ đến con cáiHãy nhớ nguyên tắc vàng này. Các biến CSS luôn di chuyển từ phần tử cha (hoặc tổ tiên) sang phần tử con. Họ không bao giờ đi từ con sang cha mẹ hoặc giữa các yếu tố anh chị em Điều này sẽ dẫn chúng ta đến sai lầm sau 5Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bạn có nghĩ rằng bối cảnh của 4 sẽ là 4 không? Phần tử gốc là phần tử cao nhất trong DOM, vì vậy nó là tổ tiên của phần tử 6 của chúng tôi và quy tắc vàng của chúng tôi nói rằng chúng tôi chỉ có thể thực hiện cha mẹ -> con nên 7 không thể đi theo hướng ngược lại để đến phần tử gốc, hãy thay đổi 8 và Trong một ví dụ như vậy, 4 sẽ kế thừa giá trị của 8 được xác định bằng các giá trị của 7 và 3 bên trong 4. Thay đổi 7 sẽ chỉ thay đổi giá trị của 7 bên trong 4, không có gì khácTìm bên dưới một câu trả lời chi tiết hơn tôi đã viết về chủ đề này Thuộc tính tùy chỉnh trong phạm vi CSS bị bỏ qua khi được sử dụng để tính biến trong phạm vi bên ngoài 25 tháng tám '18 Nhận xét. 2 Câu trả lời. 1 19 Tôi đang cố gắng mở rộng quy mô thông qua thuộc tính tùy chỉnh 8 theo cách mà các lớp sẽ kết hợp mà không được ghép nối. Hiệu quả mong muốn là 3 danh sách sẽ ở 3 tỷ lệ khác nhau nhưng như được minh họa trên CodePen, cả 3 danh sách đều có cùng tỷ lệ. Tôi đang tìm kiếm…Mở câu hỏi đầy đủ Ngay cả nhóm Stack Overflow cũng vấp phải điều kỳ quặc này 10) Chúng có thể có cú pháp lạMột điều kỳ quặc cuối cùng và hài hước Bạn có biết rằng bạn có thể làm những điều sau đây? 6Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Tuyệt vời, phải không? . Có liên quan. "-" có phải là mã định danh CSS3 hợp lệ không? Bạn nghĩ điều trên là điên rồ, hãy xem điều sau 7Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Vâng, biểu tượng cảm xúc. bạn có thể xác định các biến của mình bằng biểu tượng cảm xúc và nó hoạt động Cú pháp của các biến CSS cho phép hầu hết mọi thứ, yêu cầu duy nhất là bắt đầu bằng 9. Bạn cũng có thể bắt đầu bằng một số (ví dụ:. 00). Có liên quan. Tên biến CSS có thể bắt đầu bằng một số không?Tại sao không chỉ có dấu gạch ngang 8Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Hoặc cùng một biến lưu trữ hai giá trị khác nhau 9Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Hãy thử cách trên và bạn sẽ nhận được một màu gradient Để đạt được điều kỳ diệu như vậy, tôi đang dựa vào một nhân vật ẩn làm cho cả hai biến khác nhau nhưng về mặt trực quan, chúng ta thấy chúng giống nhau. Nếu bạn thử mã trên jsfiddle. net Bạn sẽ thấy như sau Tất nhiên, bạn không bao giờ nên sử dụng một thứ như vậy trong một dự án thực tế, trừ khi bạn muốn khiến sếp và đồng nghiệp của mình phát điên 😜 Đó là nóTôi biết có rất nhiều thông tin cùng một lúc nhưng bạn không cần phải nhớ mọi thứ. Tôi đã cố gắng nhóm các hành vi không rõ ràng và không trực quan nhất xung quanh các biến CSS. Nếu một ngày nào đó có gì đó không hoạt động như mong đợi, hãy quay lại đây. Bạn có thể sẽ tìm thấy câu trả lời của bạn ở trên Sử dụng biến trong CSS có tốt không?Một trong những lợi ích chính của các biến CSS là nó cho phép các nhà phát triển hợp nhất các thuộc tính chung của họ vào các vị trí dễ tiếp cận, giúp mã dễ đọc hơn và dễ bảo trì hơn.
Tại sao không sử dụng các biến CSS?Sau khi tất cả các dự phòng được viết xong, mã ngắn gọn tuyệt vời được viết bằng Biến CSS là vô giá trị . Nó không thêm gì vào ứng dụng, vì công việc của nó hoàn toàn được thực hiện bởi các dự phòng. Nó không dần dần tăng cường bất cứ điều gì. Tại thời điểm này, nó trở thành hành trình vô dụng, trọng lượng chết.
Tôi nên sử dụng biến CSS hay sass?Ưu điểm của biến CSS là không cần bàn cãi . Chúng có thể được chuyển đổi và ghi đè trong khi các biến SCSS không thể. Các biến CSS đơn giản hóa việc tạo các trang web dựa trên chủ đề màu sắc như thế này ngay tại đây.
Các biến CSS có được kế thừa không?Kế thừa với các biến CSS
. Xem xét ví dụ sau. HTML. child elements inherit the CSS variable values of their parent elements (as long as the parent value is not overwritten in the child element). Consider the following example: HTML. |