Istnieje kilka sposobów nadpisywania właściwości. Zakładając, że masz
.left { background: blue }
np. którekolwiek z poniższych mogłoby go zastąpić:
a.background-none { background: none; }
body .background-none { background: none; }
.background-none { background: none !important; }
Pierwsze dwa „wygrywają” dzięki specyficzności selektora; trzeci wygrywa !important
, tępy instrument.
Możesz również zorganizować swoje arkusze stylów tak, aby np
.background-none { background: none; }
wygrywa po prostu porządku, czyli będąc po skądinąd jednakowo „potężnego” reguły. Ale to nakłada ograniczenia i wymaga zachowania ostrożności przy każdej reorganizacji arkuszy stylów.
To wszystko przykłady CSS Cascade , kluczowej, ale powszechnie niezrozumianej koncepcji. Definiuje dokładne zasady rozwiązywania konfliktów między regułami arkusza stylów.
PS użyłem left
i background-none
tak jak zostały użyte w pytaniu. Są to przykłady nazw klas, których nie należy używać, ponieważ odzwierciedlają one określone renderowanie, a nie role strukturalne lub semantyczne.
left
ibackground-none
należy tego unikać?button
,name-label
itp). Inni uważają, że CSS staje się niewykonalna, jeśli używasz tego podejścia i należy użyć „narzędzie pierwszego” lub „funkcjonalny” css gdzie zajęcia odpowiadają wartości nieruchomości (npmargin-top-4
,width-10
itp). Historycznie rzecz biorąc, dominowało podejście „semantyczne”, podczas gdy ostatnio podejście „funkcjonalne” zdobywało zwolenników. Wypróbuj oba na średniej wielkości projekcie, a następnie sam zdecyduj, który jest lepszy.Po prostu użyj
!important
go, aby zastąpićbackground:none !important;
Chociaż mówi się, że jest to zła praktyka,
!important
może być przydatna w przypadku klas narzędzi, po prostu musisz jej używać odpowiedzialnie, sprawdź to: Kiedy Korzystanie z ważnych jest właściwym wyboremźródło
Alternatywnie do
important
słowa kluczowego możesz sprecyzować selektor, na przykład:.left.background-none { background:none; }
(Uwaga: brak spacji między nazwami klas).
W takim przypadku reguła będzie obowiązywać, gdy oba
.left
i.background-none
zostaną wymienione w atrybucie klasy (niezależnie od kolejności lub bliskości).źródło
Powinieneś to zmienić, zwiększając Specyfika swojej stylizacji. Specyfika można zwiększyć na różne sposoby. Korzystanie ze
!important
specyficzności efektów jest złą praktyką, ponieważ przerywa naturalne kaskadowanie w arkuszu stylów.Poniższy diagram zaczerpnięty z css-tricks.com pomoże Ci stworzyć odpowiednią specyfikację dla Twojego elementu w oparciu o strukturę punktów. Niezależnie od tego, która specyfika ma wyższe punkty, wygra. Brzmi jak gra - prawda?
Przykładowe obliczenia w usłudze Checkout tutaj na css-tricks.com . Pomoże Ci to bardzo dobrze zrozumieć koncepcję i zajmie tylko 2 minuty.
Jeśli chcesz samodzielnie wytwarzać i / lub porównywać różne specyfikacje, wypróbuj ten kalkulator specyficzności: https://specificity.keegan.st/ lub możesz po prostu użyć tradycyjnego papieru / ołówka.
Aby dowiedzieć się więcej, wypróbuj MDN Web Docs .
Wszystkiego najlepszego, aby nie używać
!important
.źródło
Jeśli umieścisz
bakground-none
klasę po innych klasach, jej właściwości zastąpią te już ustawione. Nie ma potrzeby używania!important
tutaj.Na przykład:
.red { background-color: red; } .background-none { background: none; }
i
<a class="red background-none" href="#carousel">...</a>
Link nie będzie miał czerwonego tła. Należy pamiętać, że zastępuje to tylko właściwości, które mają mniej lub równie dokładny selektor.
źródło
LIFO to sposób, w jaki przeglądarka analizuje właściwości CSS. Jeśli używasz Sass, zadeklaruj zmienną o nazwie as
użyj go zamiast bezpośredniego przypisywania wartości, takich jak czerwony lub niebieski. Jeśli chcesz przesłonić, po prostu ponownie przypisz wartość
następnie
powinien płynnie zastąpić. Używanie „! Important” nie zawsze jest właściwym wyborem… to tylko poprawka
źródło