2011-11-14 14 views
26

Jeśli mam klasę, styl zdefiniowany jako takie:CSS stwardnienie nieruchomość klasy przesłanianie

.myclass{ 
    //bunch of other stuff 
    float:left; 
} 

i zdefiniować inną klasę tak:

.myclass-right{ 
    float:right; 
} 

i zdefiniować div w ten sposób:

<div class="myclass myclass-right"></div> 

Czy ten div odziedziczy wszystko, od myclass, ale nadpisuje właściwość float do float: prawda? Tak się spodziewam. Również chcesz wiedzieć, czy ma to wpływ na przeglądarkę (dobra przeglądarka vs. IE 7 lub wyższa, f *** IE6).

+1

Tak to działa, a [tutaj] (http://jsfiddle.net/Pointy/Fr8Te/) jest jsfiddle do wykazania. – Pointy

+0

Duplikat http://stackoverflow.com/questions/3066356/multiple-css-classes-properties-overlapping- based-on-the-order-definined – deviousdodo

+0

Ups. To dupek. Chyba nie wyglądałem wystarczająco mocno. Daj mi 5 minut, zanim go zamkniesz, abym mógł dać jednemu szczęśliwemu zawodnikowi kolejne 15 powtórzeń za pomocną odpowiedź. – iandisme

Odpowiedz

28

Dopóki selektorów mają taką samą specyficzność (w tym przypadku robią) i .myclass-right styl blok jest zdefiniowane po .myclass, tak.

Edytuj, aby rozwinąć: kolejność wyświetlania klas w elemencie HTML nie ma znaczenia, liczy się tylko specyfika selektora i kolejność, w jakiej selektory pojawiają się w arkuszu stylów.

+2

Dobre wyjaśnienie za pomocą opcji "Edytuj, aby rozwinąć". Kolejność w materiale stylów jest nieco podstępna ... – Droj

14

Korzystanie z !important jest jednym ze sposobów, aby to zrobić.

.myclass-right{ 
    float:right !important; 
} 

Ponadto, jeśli są bardziej szczegółowe z selektora powinien zastąpić również

div.myclass-right{ 
    float:right; 
} 
7

Dopóki myclass-right zostanie zadeklarowany jako po twoja druga klasa w Twoim pliku css, zadziała.

12

prostu chciał wyrzucić inną opcję oprócz ważnego jak również kolejność definicji stylu: można łańcucha dwa razem, a także:

.myclass.myclass-right{float:right;} 
.myclass{float:left;} 
1

W przypadku atrybutów CSS konfliktu, znacznik CSS przychodzi po drugi w arkuszu stylów będzie miał pierwszeństwo.

Innymi słowy - jeśli chcesz, aby jakaś klasa kiedykolwiek zastąpiła inne - po prostu umieść ją na końcu pliku css.