2015-02-08 10 views
7

Mam następującą regułę: mniejJak określić selektor rodzeństwa w Less w skrócie?

.menu-link { 
    & + .menu-link { 
     border-left: 1px solid #000; 
    } 
} 

To działa dobrze, ale wygląda brzydko, bo jeśli mój menu-link klasa przebrać niż muszę wymienić go w dwóch miejscach.

Czy istnieje sposób na uproszczenie powyższej zasady?

Odpowiedz

12

LESS - Parent Selectors

Operator & oznacza selektory macierzystych zagnieżdżonej zasady i najczęściej używane podczas stosowania klasy modyfikowania lub pseudo-klasę istniejącego przełącznika.

Od & reprezentuje rodzica, można po prostu użyć & + &:

.menu-link { 
    & + & { 
     border-left: 1px solid #000; 
    } 
} 

..which kompiluje do:

.menu-link + .menu-link { 
    border-left: 1px solid #000; 
} 

Na marginesie, & odnosi się do cały selektor nadrzędny. Tak więc, jeśli były, aby użyć następujących:

.parent { 
    .menu-link { 
    & + & { 
     border-left: 1px solid #000; 
    } 
    } 
} 

byłoby ..To skompilować do niepożądanego wyniku:

.parent .menu-link + .parent .menu-link { 
    border-left: 1px solid #000; 
} 

Dlatego trzeba by zachować swoje selektorów prostych i używać

.menu-link { 
    & + & { 
     border-left: 1px solid #000; 
    } 
} 
+0

Dobra odpowiedź. W przypadku zagnieżdżonych selektorów możemy użyć zmiennych do przechowywania nazwy selektora i zrobić interpolację selektora, jak [tutaj] (http://codepen.io/anon/pen/myqvbM). Oznaczałoby to, że zmiana musi nastąpić tylko w jednym miejscu. Ale jeśli jest więcej takich przypadków, to wymagałoby to więcej zmiennych i może stać się bałaganiarstwem. – Harry