2014-10-10 14 views
6

Używam Sass 3.4.1 oraz BEM więc moja SCSS jest:Sass z BEM, dziedziczyć selektor

.photo-of-the-day{ 
    &--title{ 
     font-size: 16px; 
    } 
} 

i chcę za każdym razem unoszą się nad .photo-of-the-day coś się stało z tytułem, to dość powszechne, więc zwykle w CSS:

.photo-of-the-day:hover .photo-of-the-day--title{ 
    font-size:12px 
} 

rzeczą jest użycie BEM jest to jedyny sposób znalazłem i wygląda trochę brzydki

.photo-of-the-day{ 
    &--title{ 
     font-size: 16px; 
    } 
    &:hover{ 
     background: red; 
     /* this is ugly */ 
     .photo-of-the-day--title{ 
      text-decoration: underline; 
     } 
    } 
} 

więc zastanawiałem się, czy mogę dziedziczyć selektor .photo-of-the-day i użyć go wewnątrz hover, aby uniknąć ponownego kopiowania pełnego selektora.

Idealnie byłoby coś jak:

.photo-of-the-day{ 
    &--title{ 
     font-size: 16px; 
    } 
    &:hover{ 
     background: red; 
     &&--title{ 
      text-decoration: underline; 
     } 
    } 
} 

lub coś blisko powrotu do selektora dominującej za BEM. Czy to możliwe?

Odpowiedz

6

Jeśli nalegać na zagnieżdżanie wszystko, to najlepsze co możesz zrobić to w ten sposób:

.photo-of-the-day { 
    $root: &; 
    &--title{ 
     font-size: 16px; 
    } 
    &:hover{ 
     #{$root}--title { 
      text-decoration: underline; 
     } 
    } 
} 
6

Można użyć tej składni:

.photo-of-the-day { 
    &--title { 
     font-size: 16px; 
    } 
    &:hover &--title { 
     text-decoration: underline; 
    } 
} 
+1

problem z tym jest, czy robię to rozwiązanie straciłem zasięg hover nie może więc: '' &: hover { kursor: wskaźnik; tło: czerwony; ... .photo-of-the-day - tytuł { tekst dekoracji: podkreślenie; } } '' – alexrqs

+0

@alexrqs I? Nie ma zasady, która mówi, że musisz wszystko zagnieździć. Rozwiązanie, które ma zagnieżdżanie, jest w rzeczywistości bardziej szczegółowe. – cimmanon

+0

@alexrqs Musisz używać '&: hover {/ * ... * /}' niezależnie od '&: hover & - title'. – Paleo