Css không thể ghi đè kiểu

Khi nhiều quy tắc CSS tham chiếu cùng một phần tử HTML, trình duyệt cần một quy tắc ngón tay cái để dự đoán hướng dẫn tạo kiểu nào sẽ được ưu tiên. Điều này được gọi là ghi đè CSS. Tùy thuộc vào loại bộ chọn nào được sử dụng để tạo kiểu cho một phần tử, có một số quy tắc xác định kiểu nào ghi đè kiểu khác

Hãy lấy một ví dụ nhỏ để hiểu làm thế nào điều này được thực hiện

Mã HTML và CSS mẫu hiển thị văn bản Hello World có màu đỏ. Phần tử ghi đè lớp

Trong mẫu mã ở trên, phần tử đoạn chỉ định kiểu dáng trong CSS bên ngoài. Điều này áp dụng cho bất kỳ phần tử đoạn văn nào không chỉ là “Xin chào thế giới. ” đoạn văn. Bây giờ, tôi muốn hiển thị đoạn văn bản hello world của mình khác với tất cả các đoạn khác. Đối với điều này, tôi đang thêm một lớp màu xanh lam như hình bên dưới

Mã HTML và CSS mẫu ghi đè kiểu phần tử p bằng một lớp cụ thể

Bây giờ, màu văn bản thay đổi từ Đỏ sang xanh xác nhận rằng một lớp có tính đặc hiệu cao hơn so với thẻ phần tử

Lớp ghi đè lớp

Kiến thức phổ biến là kiểu lớp ghi đè kiểu phần tử chung. Nhưng, bạn có biết làm thế nào một phong cách lớp ghi đè lên một phong cách khác. Mẹo nhỏ này sẽ hữu ích khi bạn có nhiều lớp cạnh tranh với nhau để chỉ định kiểu dáng cho một phần tử cụ thể

Mã HTML và CSS mẫu trình bày cách một kiểu lớp có thể ghi đè kiểu lớp khác

Với các thay đổi trên, màu chữ hello world chuyển từ xanh sang cam. Ghi chú. Bạn có thể chỉ định tên lớp theo bất kỳ thứ tự nào trong thẻ p nhưng quy tắc ghi đè CSS đề xuất rằng thứ tự ưu tiên được cung cấp cho lớp được xác định cuối cùng trong CSS

Id ghi đè lớp

Bộ chọn lớp có thể sử dụng lại. Nói cách khác, nhiều phần tử có thể có cùng tên lớp và do đó, kiểu dáng giống nhau. Ngược lại, HTML không cho phép bạn sử dụng lại ID. Nếu phần tử bạn đang tạo kiểu có cả thuộc tính lớp và id, trong trường hợp đó, kiểu ID sẽ được ưu tiên hơn lớp. Bởi vì các phần tử khác không thể tham chiếu đến cùng một ID, kiểu bộ chọn ID sẽ cụ thể hơn so với một lớp

Mã HTML và CSS mẫu sử dụng bộ chọn ID để ghi đè kiểu bộ chọn lớp

Như mong đợi, màu văn bản xin chào thế giới thay đổi từ màu cam sang màu tím

Id ghi đè kiểu nội tuyến

CSS có thể được thêm vào HTML dưới dạng thẻ nội tuyến và khi hoàn tất, kiểu nội tuyến được chỉ định sẽ được ưu tiên hơn các hướng dẫn kiểu dáng khác đã lưu ý ở trên. Bây giờ, hãy viết lại ví dụ hiện tại của chúng ta bằng cách thêm một kiểu nội tuyến vào thành phần đoạn văn trong HTML

Mã HTML mẫu chỉ định kiểu nội tuyến sẽ ghi đè kiểu bộ chọn id, lớp và phần tử

Với việc bổ sung kiểu nội tuyến, màu văn bản xin chào thế giới thay đổi từ màu tím sang màu xanh lá cây

CSS quan trọng ghi đè tất cả

Quan trọng là một thuộc tính quan trọng có thể được thêm vào kiểu dáng CSS. Như tên ngụ ý, nó cho biết kiểu dáng mà nó đi kèm là quan trọng và có thể ghi đè kiểu dáng nội tuyến. . quan trọng được thêm vào cuối dòng hướng dẫn tạo kiểu như được thực hiện với ví dụ của chúng tôi bên dưới

Một mã CSS mẫu với. thẻ quan trọng được thêm vào kiểu bộ chọn thành phần đoạn văn

Văn bản xin chào thế giới hiện được hiển thị bằng màu đỏ vì. quan trọng được thêm vào kiểu thẻ phần tử p sẽ ghi đè tất cả các loại bộ chọn khác

Trong blog này, tôi sẽ thảo luận về cách giải quyết thách thức mà ứng dụng lớp phủ có thể gặp phải, trong đó giao diện người dùng của sản phẩm của họ có vẻ bị bóp méo và đó là do một số kiểu CSS bị ứng dụng cơ bản ghi đè

Ứng dụng lớp phủ hiển thị chú giải công cụ trên ứng dụng cơ bản khi CSS bị ghi đè

Tôi sẽ đề cập đến các kỹ thuật sau

  1. Tạo nội dung của bạn bên trong một
  2. Tăng tính đặc hiệu của các kiểu CSS của bạn
  3. Tạo và sử dụng các yếu tố tùy chỉnh
  4. Củng cố lại các yếu tố tùy chỉnh với ShadowDOM
  5. Sử dụng thẻ !important [không khuyến nghị]

Hãy bắt đầu với các cách để tạo bằng chứng giả mạo kiểu 'có thể' và nếu có, cách các ứng dụng cơ sở vẫn có thể ghi đè lên CSS của bạn. Và sau đó, tôi sẽ nói về khả năng [các] ứng dụng cơ sở sẽ sử dụng các phương pháp tạo kiểu này có thể ghi đè lên các kiểu của bạn là gì

Tạo nội dung của bạn bên trong một 'iframe'

Hầu hết các nhà phát triển sẽ nhận thức được một là gì. [nếu không, đọc thêm về nó ở đây]. Vì iframe có document riêng nên CSS của document khác không ghi đè CSS bên trong tài liệu iframe. Vì vậy, hãy tạo tất cả nội dung của bạn bên trong một và ứng dụng cơ bản, sẽ là một document riêng biệt, không thể ghi đè lên CSS của bạn

Tuy nhiên, có thể vì lý do nào đó, một số nội dung của bạn không thể được tạo trong iframe. Vì vậy, để làm được điều đó, hãy xem các điểm bên dưới

Tăng tính đặc hiệu của kiểu CSS của bạn

Một trong những cách dễ nhất để làm cho các kiểu CSS của bạn mạnh mẽ hơn so với ứng dụng cơ bản là tăng tính đặc hiệu của các kiểu CSS của ứng dụng [lớp phủ] của bạn

Theo quy tắc cụ thể, ưu tiên cao nhất được dành cho kiểu nội tuyến. Vì vậy, hãy cố gắng tận dụng các kiểu nội tuyến càng nhiều càng tốt. Kiểu nội tuyến chỉ có thể bị ghi đè bởi ứng dụng cơ sở nếu kiểu của chúng đang sử dụng thẻ !important [thêm về thẻ này trong phần sau của blog]

Sử dụng kiểu nội tuyến có vẻ như là một cách khá dễ dàng. Tuy nhiên, không phải lúc nào chúng ta cũng sử dụng kiểu nội tuyến. Điều gì sẽ xảy ra nếu chúng ta muốn cung cấp cùng một kiểu cho tất cả các phần tử giống nhau, chẳng hạn như tất cả các hàng của một bảng cụ thể? . Bây giờ, nếu chúng ta sử dụng lớp để xác định phong cách của mình, thì tốt hơn là áp dụng tính đặc hiệu gia tăng. Đó là, bao gồm nhiều hơn 1 lớp hoặc id khi xác định phong cách của bạn. Nó làm tăng tính “đặc trưng” cho phong cách của bạn

Các kiểu được áp dụng theo cách này chỉ có thể được ghi đè bởi ứng dụng cơ sở với

  • thẻ !important
  • kiểu nội tuyến
Tạo và sử dụng các yếu tố tùy chỉnh

Một kỹ thuật khác là sử dụng thứ gọi là Phần tử tùy chỉnh. Trong khi tạo các phần tử tùy chỉnh, bạn có thể đặt tên thẻ tùy chỉnh cho các phần tử như 0, v.v. Vì đây không phải là các tên thẻ tích hợp nên sẽ giảm khả năng CSS của bạn bị ghi đè do kiểu do ứng dụng khách xác định nhắm mục tiêu các tên thẻ cụ thể

Ví dụ. Giả sử ứng dụng cơ sở có phong cách này

body table {
....
}

Bây giờ, nếu tiện ích con/phần tử chứa 1, có thể kiểu trên cũng được áp dụng cho nó. Nếu chúng tôi sử dụng các yếu tố tùy chỉnh của mình ở đây, chẳng hạn như 2, thì nó sẽ không bị ghi đè

Củng cố lại các phần tử tùy chỉnh với ShadowDOM

Để cung cấp thông tin ngắn gọn về ShadowDOM là gì. Shadow DOM là phiên bản đóng gói của DOM. ShadowDOM có khả năng cô lập CSS và JavaScript, gần giống như một . Đọc thêm về ShadowDOM là gì và cách sử dụng nó với Custom Elements tại đây

“Các bộ chọn và kiểu bên trong nút DOM bóng không rò rỉ ra bên ngoài gốc bóng và các kiểu từ bên ngoài gốc bóng không rò rỉ vào. ”

Tôi đoán chúng tôi có lý do để sử dụng các phần tử tùy chỉnh được củng cố bởi ShadowDOM

Sử dụng ‘. thẻ quan trọng [không được đề xuất]

Chắc hẳn nhiều người trong chúng ta đã sử dụng thẻ !important khá mạnh mẽ này ở đâu đó. Sử dụng thẻ này giống như đặt tính đặc trưng cho phong cách của chúng tôi ở mức cao bất hợp lý. Về cơ bản, bạn đang nói với trình duyệt rằng “không có vấn đề gì xảy ra, phong cách này không nên bị ghi đè”. Bất cứ khi nào chúng tôi ở trong một tình huống mà chúng tôi không biết tại sao phong cách của mình không được áp dụng, chúng tôi sẽ sử dụng cái này và thì đấy - Nó bắt đầu hoạt động. Ảo thuật

Đó là phép thuật

Tôi đoán điều này giải thích khá nhiều lý do tại sao chúng ta muốn sử dụng nó

Nhưng, chúng ta nên hạn chế sử dụng nó càng nhiều càng tốt. Tại sao?. Giả sử bạn có một phần tử mà bạn đã sử dụng thẻ này. Bây giờ, trong tương lai, giả sử vì lý do nào đó bạn cũng cần ghi đè kiểu của phần tử đó. Sau đó, cách duy nhất là sử dụng một thẻ !important khác trên phần tử mới. Và vòng luẩn quẩn bắt đầu. Đó là lý do tại sao hầu hết mọi người coi việc sử dụng nó là một thói quen xấu. Để hiểu rõ hơn về lý do không sử dụng, hãy xem bài viết này. Nó được giải thích khá tốt ở đây. Tác giả của bài viết đó tổng hợp nó khá độc đáo

Nếu tất cả các phong cách của bạn là. quan trọng, thì không có phong cách nào của bạn là quan trọng

Cơ hội mà ứng dụng cơ sở ghi đè CSS của chúng tôi là gì?

Trong phần tính đặc hiệu, chúng tôi thấy rằng vẫn có khả năng CSS của các ứng dụng lớp phủ của chúng tôi sẽ bị ghi đè. Tôi muốn nói rằng xác suất này là rất ít đến không có. Chúng tôi thấy rằng [các] ứng dụng cơ sở có thể ghi đè lên CSS của chúng tôi nếu các kiểu nội tuyến hoặc !important được chúng sử dụng

  • Nếu các kiểu nội tuyến đang ghi đè CSS của chúng ta, thì chúng phải có một số bookmarklet, tập lệnh, lặp lại trên một số thành phần cụ thể và thao tác với thuộc tính 7. Nhưng, một lần nữa, tôi không thấy điều này xảy ra
  • Đối với !important, vì nó không được khuyến nghị nên tôi cũng không thấy có nhiều cơ hội ghi đè các vấn đề ở đây
Bản tóm tắt

Chỉ một điều ở đây - “Không sử dụng '. quan trọng' càng nhiều càng tốt. ” Hãy sử dụng những cách phù hợp để viết CSS của bạn và đảm bảo rằng nó không bị ghi đè

Bạn có thể ghi đè quan trọng trong CSS không?

Có hai cách bạn có thể ghi đè lên một. thẻ quan trọng trong CSS. Bạn có thể thêm một quy tắc CSS khác bằng một. thẻ quan trọng và sử dụng bộ chọn có độ đặc hiệu cao hơn .

Ghi đè quy tắc CSS là gì?

Ghi đè. Ghi đè trong CSS có nghĩa là bạn đang cung cấp bất kỳ thuộc tính kiểu nào cho một phần tử mà bạn đã cung cấp kiểu .

Có thể sử dụng quan trọng trong CSS không?

Các. quy tắc quan trọng trong CSS được sử dụng để thêm tầm quan trọng cho một thuộc tính/giá trị hơn bình thường . Trên thực tế, nếu bạn sử dụng. quy tắc quan trọng, nó sẽ ghi đè TẤT CẢ các quy tắc tạo kiểu trước đó cho thuộc tính cụ thể đó trên phần tử đó.

Tôi có thể sử dụng cái gì thay vì quan trọng trong CSS?

Quan trọng giống như một chế độ ăn gian cho CSS và thực sự không nên sử dụng nó trong sản xuất. Thông thường, các công cụ có sẵn để bạn kích hoạt ghi đè kiểu là. - tính đặc hiệu - thứ tự theo tầng Nếu bạn dựa quá nhiều vào thứ tự theo tầng, mọi thứ có thể khó gỡ lỗi, vì vậy trong tình huống này, tôi sẽ sử dụng tính đặc hiệu

Chủ Đề