Jestem trochę zdezorientowany co do CSS i class
atrybutu. Zawsze myślałem, że kolejność, w której określam wiele klas w wartości atrybutu, ma znaczenie. Późniejsza klasa może / powinna nadpisywać definicje poprzedniej, ale to nie działa. Oto przykład:
<html>
<head>
<style type="text/css">
.extra {
color: #00529B;
border:1px solid #00529B; /* Blue */
background-color: #BDE5F8;
}
.basic {
border: 1px solid #ABABAB;
}
</style>
</head>
<body>
<input type="text" value="basic" class="basic"/>
<input type="text" value="extra" class="extra"/>
<input type="text" value="basic extra" class="basic extra"/>
<input type="text" value="extra basic" class="extra basic"/>
</body>
</html>
Spodziewałbym się, że trzeci przykład z class="basic extra"
powinien mieć niebieską ramkę, ponieważ dodatkowo określona ramka nadpisze ramkę z podstawowego.
Używam FF 3 na Ubuntu 9.04
Kolejność klas w atrybucie nie ma znaczenia. Wszystkie klasy w
class
atrybucie są stosowane jednakowo do elementu.Pytanie brzmi: w jakiej kolejności reguły stylów pojawiają się w twoim pliku .css. W twoim przykładzie
.basic
następuje po,.extra
więc.basic
reguły będą miały pierwszeństwo, gdy tylko będzie to możliwe.Jeśli chcesz zapewnić trzecią możliwość (np. To,
.basic
że.extra
reguły powinny nadal obowiązywać),.basic-extra
być może będziesz musiał wymyślić inną klasę , która wyraźnie to przewiduje.źródło
Można to zrobić, ale musisz wykazać się trochę kreatywnością za pomocą swoich selektorów. Używając selektorów atrybutów, możesz określić takie rzeczy, jak „zaczyna się od”, „kończy się na”, „zawiera” itd. Zobacz przykład poniżej, używając tych samych znaczników, ale z selektorami atrybutów.
źródło