Co to znaczy, gdy Chrome Dev Tools wyświetla obliczoną właściwość wyszarzoną

93

Proszę zauważyć, że nie panel Style (wiem, co w tym kontekście oznacza wyszarzony - nie zastosowano), ale następny panel, panel Właściwości obliczone.

Co to znaczy, że obliczona właściwość jest wyszarzona?

Przykład:

wprowadź opis obrazu tutaj

AmbroseChapel
źródło

Odpowiedzi:

62

NB: Ta odpowiedź nie ma solidnych dowodów, jest oparta na moich obserwacjach na przestrzeni czasu.

Szare obliczone właściwości nieani domyślne, ani dziedziczone. Dzieje się tak tylko w przypadku właściwości, które nie zostały zdefiniowane dla elementu, ale są obliczane na podstawie jego elementów podrzędnych lub nadrzędnych na podstawie renderowania układu w czasie wykonywania.

Weź tę prostą stronę jako przykład, displayjest domyślna i font-sizejest dziedziczona:

<style>
  div { font-size: 13px; }
</style>
<div>
  <p>asdf</p>
</div>

wprowadź opis obrazu tutaj

W tym konkretnym przykładzie heightjest obliczany z <p>potomków - węzeł tekstowy (rozmiar czcionki plus wysokość linii), widthjest obliczany na podstawie <div>szerokości jego rodzica - która jest również obliczana na podstawie jego rodzica <body>.


EDYCJA: Cóż, pomyślałem ponownie, oto moja odpowiedź oparta na opinii . Powinienem zajrzeć później do kodu źródłowego Chromium: D

Rozwijając te strzałki, można było zobaczyć, która reguła jest stosowana do elementu, spośród wszystkich zdefiniowanych względem niego (bezpośrednio lub dziedziczona przez programistę lub przeglądarkę):

wprowadź opis obrazu tutaj

Tutaj możesz prześledzić każdą definicję, nawet uwzględniając wbudowane reguły przeglądarki, i sprawdzić mechanizm kaskadowania (nadpisywania) CSS.

Tak więc dla tych elementów, które nie mają definicji CSS (nie są zdefiniowane bezpośrednio, nie są dziedziczone, nie mają wbudowanej przeglądarki), nie masz żadnego źródła do śledzenia. Wartości właściwości są całkowicie obliczane w czasie wykonywania.

Jeśli zaznaczysz Pokaż wszystko , wyświetlanych jest więcej wyszarzonych właściwości. Te też nie są nigdzie zdefiniowane. Ale w przeciwieństwie do tych na poprzednich zrzutach ekranu, nieone obliczane w czasie wykonywania - są to domyślne wartości specyfikacji CSS.

wprowadź opis obrazu tutaj

Lew
źródło
2
To ma sens. Jeszcze jeden szczegół: wyszarzonych właściwości nie można kliknąć, tak jak inne, aby wyświetlić pochodzenie ich wartości w określonej deklaracji.
AmbroseChapel
@AmbroseChapel Pomyślałem jeszcze raz i zaktualizowałem swoją odpowiedź. Naprawdę powinienem iść i przeczytać kod źródłowy. Dobre pytanie.
Leo
Z pewnością ma sens, że szare właściwości są, run-time calculatedponieważ szare właściwości to zwykle `` wysokość '' i `` szerokość '', które, jeśli się nad tym zastanowić, są wartościami zależnymi dynamicznie od elementów potomnych elementu (np. Ilość tekstu i rozmiar czcionki tekst zawarty w elemencie lub szerokość elementu nadrzędnego, gdy element ma szerokość: 100%)
Niko Bellic,
4
Przyjemną funkcją CDT do tego byłoby: aby zobaczyć, jak obliczane są wartości, oznacza: na przykład, które elementy dodają się do widthstylu.
Legends,