2014-09-16 5 views
5

Podczas definiowania CSS dla konkretnego elementu, czy określa dokładną ścieżkę ma jakąkolwiek różnicę, gdy mówimy o prędkości/dokładności/przetwarzania strony internetowej?CSS: Czy jest ważne, aby podać dokładną ścieżkę dla danego elementu dla szybkości/dokładności?

np. jeśli mam wprowadzanie tekstu TYLKO w 3. kolumnie mojego stołu, co jest lepsze dla szybkości, dokładności, przetwarzania i innych parametrów?

OPCJA 1:

table input[type="text"] 
{ 
    background:yellow; 
} 

Opcja 2:

table td:nth-child(3) input[type="text"] 
{ 
    background:yellow; 
} 
+1

[To może być przydatne dla ciebie] (http://css-tricks.com/ efficiently-rendering-css /) – Pete

+0

@Pete: Dzięki za link. Bardzo opisowy. –

Odpowiedz

7

Nie, dodając więcej selektorów złożone tylko daje przeglądarkę więcej elementów do sprawdzenia i tym samym więcej pracy do wykonania.

Jeśli dane wejściowe pojawią się tylko w określonym miejscu i możesz zagwarantować, że nigdy nie pojawią się nigdzie indziej na danej stronie, to jednak dokładne ustawienie selektora poza numerem input[type="text"] jest nieistotne, ponieważ zawsze będzie kierować ten sam zestaw elementów w każdym razie. Wszelkie dodatkowe kontrole, które dodasz, stają się zbędne.

Ale prawdziwe pytanie brzmi, czy wydajność ma tutaj znaczenie. Jeśli nie masz dziesiątek tysięcy takich elementów, szanse są odpowiedzią na to, że nie. Bądź tak konkretny, jak ci wygodnie. Jeśli potrzebujesz selektorów kontekstowych, aby upewnić się, że nie trafisz przypadkowo na niewłaściwe elementy, nie ma nic złego w ich umieszczeniu.

+0

W przypadku opcji drugiej, czy nie jest prawdopodobne, że przeglądarka nie musi wyszukiwać danych wejściowych w kolumnach innych niż trzecia kolumna? –

+3

@ bankunj: To zależy. Większość implementacji robi to, co nazywa się [ocena od prawej do lewej] (http://stackoverflow.com/questions/5797014/why-do-browsers-match-css-selectors-from-right-to-left), co oznacza sprawdzają wszystkie "input [type =" text "]" przed ustaleniem, czy pojawiają się w 'td: nth-child (3)', zamiast ograniczać ich zakres jako pierwszy. – BoltClock

+0

dzięki za wyjaśnienie! Przez ten czas bardzo się martwiłem! :) –

Powiązane problemy