Điều đó có nghĩa là gì khi quy tắc CSS được tô xám trong trình kiểm tra phần tử của Chrome?


248

Tôi đang kiểm tra một h2yếu tố trên trang web bằng trình kiểm tra phần tử của Google Chrome và một số quy tắc CSS - dường như được áp dụng - bị mờ đi. Có vẻ như một cuộc đình công chỉ ra rằng một quy tắc đã bị ghi đè, nhưng điều đó có nghĩa gì khi một phong cách bị mờ đi?

Câu trả lời:


95

Đối với tôi, các câu trả lời hiện tại không giải thích được vấn đề đầy đủ, vì vậy tôi đang thêm câu trả lời này với hy vọng có thể hữu ích cho người khác.

Văn bản bị mờ / mờ đi, có thể có nghĩa

  1. đó là một quy tắc / thuộc tính mặc định mà trình duyệt áp dụng, bao gồm các thuộc tính tay ngắn mặc định.
  2. Nó liên quan đến thừa kế phức tạp hơn một chút.

Di sản

Lưu ý: Bảng "kiểu" của công cụ phát triển Chrome sẽ hiển thị một bộ quy tắc, bởi vì một hoặc nhiều quy tắc từ bộ đang được áp dụng cho nút DOM hiện được chọn. Tôi đoán, để hoàn thiện, các công cụ dev hiển thị tất cả các quy tắc từ tập hợp đó, cho dù chúng có được áp dụng hay không.

Trong trường hợp quy tắc được áp dụng cho phần tử hiện được chọn do kế thừa (nghĩa là quy tắc được áp dụng cho tổ tiên và phần tử được chọn kế thừa nó), chrome sẽ hiển thị lại toàn bộ quy tắc.

Các quy tắc được áp dụng cho phần tử hiện được chọn xuất hiện trong văn bản bình thường.

Nếu một quy tắc tồn tại trong tập hợp đó nhưng không được áp dụng vì đó là thuộc tính không kế thừa (ví dụ: màu nền), nó sẽ xuất hiện dưới dạng văn bản màu xám / mờ.

đây là một bài viết đưa ra một lời giải thích tốt - (Lưu ý: mục có liên quan nằm ở cuối bài viết - hình 21 - thật không may là phần có liên quan không có tiêu đề) - http://commandlinefanatic.com/cgi-bin /showarticle.cgi?article=art033

Trích từ bài báo

[Kịch bản kế thừa] này đôi khi có thể tạo ra một chút nhầm lẫn, bởi vì các thuộc tính tay ngắn mặc định; Hình 21 minh họa các thuộc tính tay ngắn mặc định của thuộc tính phông chữ cùng với các thuộc tính không được kế thừa. Chỉ cần lưu ý đến bối cảnh mà bạn đang xem xét khi kiểm tra các yếu tố.


10
Tuyên bố "các quy tắc được kế thừa, nhưng không được áp dụng , chúng sẽ xuất hiện dưới dạng văn bản màu xám / mờ" là không đúng sự thật. Nếu không được áp dụng, họ sẽ có một cuộc tấn công. Tôi đã cập nhật câu trả lời của mình bằng một ảnh chụp màn hình và một ví dụ trực tiếp.
Rob Sobers

10
Đây là câu trả lời đúng!!! Câu quan trọng là ... "Nếu một quy tắc tồn tại trong tập hợp đó nhưng không được áp dụng vì đó là thuộc tính không thể kế thừa (ví dụ: màu nền), nó sẽ xuất hiện dưới dạng văn bản màu xám / mờ."
Niko Bellic

Đây chắc chắn là câu trả lời đúng. Nếu một thuộc tính màu xám xuất hiện trong một phần có nội dung "Kế thừa từ [bộ chọn]", thì đó là thuộc tính không kế thừa không được áp dụng cho phần tử hiện tại. Bất kỳ tài sản bỏ qua đã được ghi đè bởi một phong cách cụ thể hơn.
chỉ có

1
Nếu các quy tắc bị mờ đi khi chúng không được kế thừa, tại sao phần tử div của tôi lại có các quy tắc 'chiều rộng'? Là chiều rộng không kế thừa? Nhân tiện, tôi đang hỏi điều này một cách nghiêm túc.
moosefetcher

1
... Vì vậy, nếu bạn thấy Chrome xám hóa các quy tắc css đang được áp dụng rất nhiều - nơi bạn có thể bỏ chọn chúng (hoặc thay đổi giá trị của chúng) và thấy một thay đổi tương ứng trên trang - có thể quy tắc đó ảnh hưởng đến yếu tố nhưng không được áp dụng cho phần tử đó nói riêng, mà cho cha mẹ.
Ben Wheeler

82

Điều đó có nghĩa là quy tắc đã được kế thừa, nhưng không áp dụng cho thành phần được chọn:

http://code.google.com.vn/chrom/devtools/docs/elements-styles.html#computing_style

Khung chỉ chứa các thuộc tính từ các quy tắc được áp dụng trực tiếp cho phần tử được chọn. Để hiển thị bổ sung các thuộc tính được kế thừa, hãy bật hộp kiểm Hiển thị được kế thừa. Các thuộc tính như vậy sẽ được hiển thị trong một phông chữ mờ.

quy tắc màu xám được thừa hưởng từ tổ tiên

Ví dụ trực tiếp: kiểm tra phần tử chứa văn bản "Xin chào, thế giới!"

div { 
  margin: 0;
}

div#foo { 
  margin-top: 10px; 
}
<div id="foo">Hello, world!</div>


13
@Rob Nói chính xác, khi một kiểu được hiển thị màu xám, điều đó có nghĩa là nó đã được kế thừa từ một số phần tử bao gồm khác nhưng không áp dụng cho phần tử được chọn . Từ tài liệu: "Cửa sổ chỉ chứa các thuộc tính từ các quy tắc có thể áp dụng trực tiếp cho thành phần được chọn. Để hiển thị bổ sung các thuộc tính được kế thừa, hãy bật hộp kiểm Hiển thị được kế thừa. Các thuộc tính này sẽ được hiển thị trong phông chữ mờ."
drkvogel 17/03/2016

2
@RobSobers Thật không may, tôi không nghĩ rằng ví dụ của bạn thể hiện sự kế thừa. Cha mẹ tổ tiên mà div được thừa hưởng từ đâu? Nếu bạn cuộn xuống trong ngăn Styels trong Chrome, bạn sẽ thấy các phần có tiêu đề "Kế thừa từ ..." Các quy tắc màu xám có nghĩa là gì? Bạn có thể kết hợp nó vào một ví dụ?
Niko Bellic

8
Tôi không hiểu tại sao câu trả lời này là a. đánh dấu là câu trả lời hay nhất và b. có rất nhiều upvote. Rõ ràng là sai. Lợi nhuận không phải là thuộc tính kế thừa ( stackoverflow.com/a/5612360/24267 ) Câu trả lời của Michael Coleman là chính xác. Ồ, bạn không có nghĩa là được thừa hưởng từ một yếu tố tổ tiên, ý bạn là ... Tôi không chắc chính xác ý bạn là gì. Ở bất cứ giá nào, câu trả lời này không đúng trong năm 2015, với Chrome 46.
mhenry1384

3
Rõ ràng phiếu bầu dành cho một số phép thuật MS Paint với các mũi tên và hiệu ứng bóng bong bóng đó. hạ cấp là không chính xác.
David

2
@ mhenry1384 "a" có thể dễ dàng giải thích: bởi vì nó được viết bởi người hỏi câu hỏi.
Andrew Grimm

27

Michael Coleman có câu trả lời đúng. Tôi chỉ muốn thêm một hình ảnh đơn giản để đi cùng với nó. Liên kết mà anh ấy đưa vào có ví dụ đơn giản này: http://commandlinefanatic.com/art033ex4.html

HTML / DOM trông như thế này ...

HTML

Ngăn Kiểu trong Chrome trông như thế này khi bạn chọn phần tử p ...

Ngăn kiểu

Như bạn có thể thấy, phần tử p kế thừa từ tổ tiên của nó (divs). Vậy tại sao phong cách lại background-color: bluexám xịt? Bởi vì đó là một phần của bộ quy tắc có ít nhất một kiểu có thể kế thừa. Phong cách kế thừa đó làtext-indent: 1em

background-color:bluekhông phải là kế thừa nhưng nó là một phần của bộ quy tắc chứa text-indent: 1emcái không thể chấp nhận được và các nhà phát triển của Chrome muốn hoàn thành khi hiển thị các bộ quy tắc. Tuy nhiên, để phân biệt giữa các kiểu trong bộ quy tắc có thể kế thừa từ các kiểu không có, các kiểu không thể sử dụng được chuyển sang màu xám.


1
Đây là câu trả lời tốt nhất, vì nó đưa ra một bản demo đơn giản. Mở URL đó trong tab mới và sử dụng Công cụ dành cho nhà phát triển Chrome để chọn các divs và p. Bạn sẽ thấy đó background-colorkhông phải là màu xám cho div#two. Nhưng background-colorlà màu xám cho div#threep.
wvducky

lời giải thích tuyệt vời
Dirk Boer

10

Điều này cũng xảy ra nếu bạn thêm một kiểu thông qua trình kiểm tra, nhưng kiểu mới đó không áp dụng cho phần tử bạn đã chọn. Thông thường các kiểu được hiển thị chỉ là các kiểu cho phần tử được chọn, vì vậy màu xám biểu thị rằng kiểu bạn vừa thêm không chọn phần tử có tiêu điểm trong trình điều hướng DOM.


Đây là vấn đề của tôi. Cảm ơn!
Chuck Le Mông

5

Nó có nghĩa là quy tắc đã được thay thế bằng quy tắc khác với mức độ ưu tiên cao hơn. Ví dụ: bảng định kiểu có:

h2 {
  color: red;
}
h2 {
  color: blue;
}

Thanh tra sẽ hiển thị các quy tắc color:red;màu xám và color:blue;bình thường.

Đọc về kế thừa CSS để tìm hiểu quy tắc nào được kế thừa / có mức độ ưu tiên cao hơn.

BIÊN TẬP:

Mixup: quy tắc chuyển sang màu xám là quy tắc bỏ đặt, sử dụng biểu định kiểu mặc định đặc biệt được áp dụng cho tất cả các phần tử (quy tắc làm cho phần tử có thể hiển thị được, bởi vì tất cả các kiểu phải có giá trị).


Tôi chỉ thử nghiệm điều này và tôi nghĩ rằng điều đó là không chính xác. Trong trường hợp quy tắc bị ghi đè, sẽ có một cuộc đình công (như câu hỏi của tôi chỉ ra). Xem: yfrog.com/f/j3fooep
Rob Sobers

@Rob: đã có một hỗn hợp kể từ khi devtools không bắt đầu. Tôi đã có nó chạy, và chỉnh sửa câu trả lời của tôi với câu trả lời thử nghiệm của tôi .
tcooc

Tôi cũng không hoàn toàn chắc chắn điều đó đúng; các quy tắc mờ dần là những quy tắc tôi đã đặt trong bảng kiểu riêng của mình (ví dụ font-size: 20px;:)
Rob Sobers

1

Khi sử dụng webpack, mọi quy tắc hoặc thuộc tính css đã được thay đổi trong mã nguồn sẽ chuyển sang màu xám khi trang tải lại sau khi xây dựng lại. Điều này thực sự gây phiền nhiễu và buộc tôi phải tải lại trang mỗi lần.


0

nhập mô tả hình ảnh ở đây

Phiên bản mới của nhà phát triển chrome cho thấy nơi nó được kế thừa.


0

Tôi đang trả lời rất lâu sau khi câu hỏi đã có nhiều câu trả lời đúng vì tôi gặp phải một trường hợp khác là có một khối mã CSS bị mờ đi và không thể chỉnh sửa được trong Chome DevTools: Khối trong câu hỏi chứa các ký tự U + 200B ZERO WIDTH SPACE . Khi tôi tìm thấy chúng và xóa chúng, tôi có thể chỉnh sửa khối trong Chrome DevTools một lần nữa. Có lẽ điều này cũng có thể xảy ra với các nhân vật không phải là ascii khác, tôi đã không cố gắng tìm ra điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.