2014-10-10 3 views
6

Ich verwende Sass 3.4.1 und BEM so meine SCSS ist:Sass mit BEM, erben Wähler

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

und ich möchte jedes Mal schweben über .photo-of-the-day etwas mit dem Titel passieren, das ist ziemlich häufig so in der Regel in CSS:

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

das Ding BEM verwendet dies ist die einzige Art, wie ich gefunden und sieht irgendwie hässlich

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

Also frage ich mich, ob ich .photo-of-the-day Selektor erben kann und es innerhalb des Hover verwenden kann, um zu vermeiden, den vollen Selektor wieder zu kopieren.

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

Oder etwas in der Nähe Comeback der Mutter Wähler für BEM:

Im Idealfall so etwas wie wäre. Ist es möglich?

Antwort

6

Wenn Sie darauf bestehen, alles nisten, das Beste, was Sie tun können, ist dies:

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

Sie diese Syntax verwenden:

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

das Problem dabei ist, wenn ich die Lösung habe ich verloren Der Hover-Bereich kann also nicht: '' &: Hover { Cursor: Zeiger; Hintergrund: rot; ... .photo-of-the-day - Titel { Text-Dekoration: unterstreichen; } } '' – alexrqs

+0

@alexrqs Und? Es gibt keine Regel, die besagt, dass man alles verschachteln muss. Eine Lösung, die Verschachtelung hat, ist tatsächlich ausführlicher. – cimmanon

+0

@alexrqs Sie müssen '&: hover {/ * ... * /}' unabhängig von '&: hover & - title' verwenden. – Paleo