2015-05-16 22 views
5

Mam 2 linie CSS do ustawienia marginesu na każdym elemencie z wyjątkiem ostatniego. Czy istnieje sposób na połączenie go w 1 linię?Marża na każdy element z wyjątkiem ostatniego

To co mam obecnie (pracy):

.work img { 
    margin-right: 10px; 
} 

.work img:last { 
    margin-right: 0px; 
} 

Próbowałem zmieniając go do:

.work img:not(:last) { 
    margin-right: 10px; 
} 

Ale to nie działa? Każdy pomysł, dlaczego?

AKTUALIZACJA Mam tylko pięć zdjęć. Moją drugą opcją byłoby posiadanie marginesów tylko na pierwszych czterech.

+0

Możesz spróbować .Pracuj img: last-child {m argin-right: 0px} – Quintile

+0

@Quintile, który wciąż używa 2 linii CSS. Zastanawiałem się, czy mógłbym to zrobić w jednym wierszu. Pierwsza część mojego kodu działa. Nie druga część: – user4756836

+0

Powód jest taki, że nie ma selektora ': last', ale mamy': last-child' i ': last-of-type'. Grałem z tymi selektorami i sądziłem, że może to pomóc komuś w przyszłości: https://jsfiddle.net/21rs5dog/ –

Odpowiedz

0

Spróbuj tego:

.work img { 
    margin-right: 10px; 
} 

.work img:last-child { 
    margin-right: 0px; 
} 

lub

.work img:not(:last-child) { 
    margin-right: 10px; 
} 

lub rozwiązanie jQuery:

jQuery('.work img:not(:last)').css({marginRight: 10); 

Pamiętaj, potrzeba przeglądarka mieć wsparcie dla selektora jeśli stosuje czystego CSS.

Zobacz to na odniesienie: http://caniuse.com/#search=%3Alast-child

0

Jeśli potrzebujesz pełnego wsparcia przeglądarki, chciałbym zaproponować korzystania niektóre javascript lub dodanie klasę .last ostatniego img. W przeciwnym razie można po prostu zrobić:

.work img:last-child { 
    margin: 0; 
}