2016-11-28 4 views
1

У меня возникли трудности с использованием амперсанда. Если я использую это так:Использование амперсанда SASS/SCSS

.form-standard { 
    ... 
    .form--group { 
    &.has-error { 
     border-color: $form-error-color; 
     color: $form-error-color; 

     .form--feedback::before {content: '*';} // <-- here 

     &.has-focus { 
     box-shadow: inset 0 1px 3px rgba(#000, 0.06), 0 0 5px rgba($form-error-color, 0.7); 
     color: $form-error-color; 
     }// has-focus 

    }// has-error 
    }// form--group 
}// form-standard 

тогда я добиться того, что я хочу, что:

.form-standard .form--group.has-error .form--feedback::before { 
    content: '*'; 
} 

но ЛИНТЕР жалуется, что псевдо-элемент должен быть вложен в пределах его родительского класса. Я попытался это:

.form-standard { 
    ... 
    .form--group {  
    .form--feedback { 
     clear: left; 
     font-size: 12px; 
     margin: 0; 
     padding: 0; 
     padding-left: 5px; 

     .has-error & {    // 
     &::before {content: '*';} // produces same output 
     }       // 

     &::before {     // 
     .has-error & {content: '*';} // produces same output 
     }        // 
    }// form--feedback 
    }// form--group 
}// form-standard 

но результат это не то, что я хочу:

.has-error .form-standard .form--group .form--feedback::before { 
    content: '*'; 
} 

Это HTML:

<form class="form form-standard" role="form"> 

    <div class="form--group"> 
    <label>category</label> 
    <input id="category" type="text" name="category"> 
    </div> 

</form> 
+2

Честно говоря, я не могу понять, почему линт будет жаловаться на это, но попытался ли вы сделать .form-feedback {& :: before {content: '*';}} 'в первой версии вашего кода ? – Harry

+0

Мне нужно «*» раньше, только когда .form - feedback.has-error. Например, когда .form - feedback.has-info, должно быть без «*». Спасибо, что посмотрели код. – emvidi

+0

Я понимаю. Я не прошу вас что-либо менять в своем исходном коде, просто дополнительное гнездо перемещения псевдоэлемента на один уровень вниз. – Harry

ответ

1

После Гарри предложение переместить псевдовосточном элемент на один уровень вниз, было устранено предупреждение о поясе и не требуется амперсанд вообще:

&.has-error { 
    border-color: $form-error-color; 
    color: $form-error-color; 

    //.form--feedback::before {content: '*';} // before had a warning 
    // after 
    .form--feedback { 
    &::before {content: '*';} 
    } 
} 
Смежные вопросы