Що це означає, коли правило CSS в інспекторі елементів Chrome переходить у сірий колір?


249

Я перевіряю h2елемент на веб-сторінці за допомогою інспектора елементів Google Chrome, а деякі правила CSS - які, як видається, застосовуються - не відображаються. Здається, що прорив вказує на те, що правило було відмінено, але що це означає, коли стиль є сірим?

Відповіді:


96

Для мене нинішні відповіді не пояснили це питання досить повно, тому я додаю цю відповідь, яка, сподіваюся, може бути корисною для інших.

Сірий / затемнений текст, може означати будь-яке

  1. це правило / властивість за замовчуванням, яке застосовується у веб-переглядачі, що включає властивості, що не мають дефолту, з короткою рукою.
  2. Він передбачає спадкування, яке трохи складніше.

Спадщина

Примітка: на панелі "стиль" інструментів для розробників Chrome відображатиметься набір правил, оскільки одне або більше правил із набору застосовуються до обраного на сьогодні вузла DOM Я думаю, для повноти інструменти розробників показують усі правила з цього набору, застосовуються вони чи ні.

У випадку, коли правило застосовується до обраного в даний час елемента внаслідок спадкування (тобто правило було застосовано до предка, і вибраний елемент успадкував його), хром знову відобразить весь набір правил.

Правила, застосовані до обраного на даний момент елемента, відображаються у звичайному тексті.

Якщо в цьому наборі є правило, але воно не застосовується, оскільки воно є не спадковим властивістю (наприклад, колір тла), воно буде відображатися як сірий / затемнений текст.

ось стаття, яка дає чітке пояснення - (Примітка: відповідний пункт знаходиться внизу статті - рисунок 21 - на жаль, відповідний розділ не має заголовка) - http://commandlinefanatic.com/cgi-bin /showarticle.cgi?article=art033

Витяг із статті

Цей [сценарій успадкування] може час від часу створювати деяку плутанину, оскільки властивості, що не мають дефолту, мають коротке значення; малюнок 21 ілюструє дефолтовані властивості шрифту короткої руки поряд з не успадкованими властивостями. Просто пам’ятайте про контекст, який ви дивитесь під час вивчення елементів.


10
Заява "правила, які успадковуються, але не застосовуються , вони будуть виглядати як сірий / затемнений текст" є неправдивим. Якщо їх не застосувати, вони матимуть прорив. Я оновив свою відповідь скріншотом і живим прикладом.
Роб Соберс

10
Це правильна відповідь !!! Ключовим пропозицією є ... "Якщо правило існує в цьому наборі, але воно не застосовується, оскільки воно є не спадковим властивістю (наприклад, колір тла), воно буде відображатися як сірий / затемнений текст."
Ніко Белік

Це, безумовно, правильна відповідь. Якщо властивість із сірим кольором з’являється у розділі, що говорить «Наслідується від [селектора]», то це не спадкове властивість, яке не застосовується до поточного елемента. Будь-яке закреслене майно було замінено більш конкретним стилем.
onlynone

1
Якщо правила замульчуються, коли вони не передаються у спадщину, чому мій елемент «div» виділив правила «ширини»? Чи ширина не успадковується? Я запитую це серйозно, до речі.
moosefetcher

1
... Отже, якщо ви бачите, що Chrome видаляє правила css, які дуже сильно застосовуються - там, де ви можете зняти галочку (або змінити їх значення) та побачити відповідну зміну на сторінці - можливо, це правило впливає на елемент але застосовується не до цього елемента, а до батьківського.
Бен Вілер

82

Це означає, що правило було успадковано, але не застосовується до вибраного елемента:

http://code.google.com/chrome/devtools/docs/elements-styles.html#computed_style

Панель містить лише властивості з правил, які безпосередньо застосовуються до обраного елемента. Щоб додатково відобразити успадковані властивості, увімкніть прапорець Показати успадковані властивості. Такі властивості відображатимуться у тьмяному шрифті.

сірі правила успадковуються від предків

Живий приклад: огляньте елемент, що містить текст "Привіт, світ!"

div { 
  margin: 0;
}

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


13
@Rob Якщо бути точним, коли стиль показано сірим, це означає, що він був успадкований від якогось іншого охоплюючого елемента, але не застосовується до вибраного елемента . З документації: "Панель містить лише властивості з правил, які безпосередньо застосовні до вибраного елемента. Щоб додатково відобразити успадковані властивості, увімкніть прапорець" Показувати успадковані ". Такі властивості відображатимуться у затемненому шрифті."
drkvogel

2
@RobSobers На жаль, я не думаю, що ваш приклад демонструє спадщину. Звідки батьків-предків, від яких діва успадковується? Якщо ви прокрутите вниз на панелі Styels в Chrome, ви побачите розділи під назвою "Успадковане від ..." Що означають сірі правила? Чи можете ви включити це в приклад?
Ніко Белік

8
Я не розумію, чому ця відповідь - це. позначено як найкращу відповідь і b. має стільки відгуків. Це явно неправильно. Поля не є спадковими властивостями ( stackoverflow.com/a/5612360/24267 ) Відповідь Майкла Коулмана є правильною. О, ви не маєте на увазі успадкований від предка елемент, ви маєте на увазі ... Я не впевнений, що саме ви маєте на увазі. У будь-якому випадку ця відповідь є
невірною

3
Зрозуміло, що голоси - за магію MS Paint зі стрілками, і ефект тіні з міхурами. визнано неправильним.
Девід

2
@ mhenry1384 "a" легко пояснити: тому що його пише людина, яка поставила запитання.
Ендрю Грімм

27

Майкл Коулман має правильну відповідь. Я просто хочу додати просте зображення, щоб піти разом з ним. Посилання, яке він включив, має такий простий приклад: http://commandlinefanatic.com/art033ex4.html

HTML / DOM виглядає приблизно так ...

HTML

Панель стилів у Chrome виглядає так, коли вибираєте елемент p ...

Панель стилів

Як бачимо, елемент p успадковує від своїх предків (діви). Так чому ж стиль стилем background-color: blue? Тому що це частина набору правил, яка має принаймні один стиль, який успадковується. Цей спадковий стиль єtext-indent: 1em

background-color:blueне успадковується, але це частина набору правил, яка містить text-indent: 1emспадщину, і розробники Chrome хотіли бути завершеними під час відображення наборів правил. Однак для розрізнення стилів у наборі правил, які успадковуються від стилів, яких немає, стилі, які не підлягають успадкуванню, є сірими.


1
Це найкраща відповідь, оскільки дає просту демонстрацію. Відкрийте цю URL-адресу на новій вкладці та використовуйте інструменти для розробників Chrome для вибору різних divs та p. Ви побачите, що background-colorце не сірий колір div#two. Але background-colorсірий за div#threeі p.
wisbucky

чудове пояснення
Дірк Бур

10

Це також відбувається, якщо ви додаєте стиль через інспектор, але цей новий стиль не застосовується до обраного вами елемента. Зазвичай показані стилі є лише тими для обраного елемента, тому сірий колір вказує, що доданий вами стиль не вибирає елемент, який має фокус у навігаторі DOM.


Це було моє питання. Дякую!
Чак Ле Бут

5

Це означає, що правило було замінено на інше правило з більш високим пріоритетом. Наприклад таблиці таблиць стилів:

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

Інспектор покаже, як правило, color:red;сірий і color:blue;нормально.

Прочитайте інформацію про успадкування CSS, щоб дізнатися, які правила успадковуються / мають більший пріоритет.

Редагувати:

Змішання: сірі правила - це незареєстровані правила, в яких використовується спеціальна таблиця стилів за замовчуванням, яка застосовується до всіх елементів (правила, які роблять елемент відображуваним, оскільки всі стилі повинні мати значення).


Я щойно це перевірив і вважаю, що це неправильно. У випадку, коли правило буде відмінено, відбудеться закреслення (як вказує моє запитання). Дивіться: yfrog.com/f/j3fooep
Роб Соберс

@Rob: з часу запуску програми devtools не було. Я запустив його і відредагував свою відповідь моєю перевіреною відповіддю.
tcooc

Я не зовсім впевнений, що це правильно; згадані правила - це ті, які я встановив у своєму власному аркуші стилів (наприклад, font-size: 20px;)
Роб Соберс

1

Під час використання вебпакету будь-яке правило або властивість css, змінене у вихідному коді, залишається відтінком, коли сторінка перезавантажується після відновлення. Це справді дратує і змушує кожного разу перезавантажувати сторінку.


0

введіть тут опис зображення

Нова версія розробника хрому показує, звідки він успадкований.


0

Я відповідаю задовго після того, як на запитання вже є багато правильних відповідей, тому що у Chome DevTools з'явився інший випадок, коли блок CSS-коду був сірим і непридатним: цей питання містив символи U + 200B ZERO WIDTH SPACE . Як тільки я знайшов їх і видалив, я міг знову відредагувати блок у Chrome DevTools. Імовірно, це може трапитися і з іншими персонажами, які не мають права, я не намагався це зрозуміти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.