SASS @at-root с множественным родительским селектором

У меня небольшая проблема, и поиск пока не дал никаких результатов. Но это то, что продолжает появляться.

Я использую SASS pre для работы с корнем @at-root, чтобы я мог использовать синтаксис BEM CSS.

У меня есть следующий SCSS:

.cc_sidebar,.cc_popup{
    .btn{
        display: inline-block;
        cursor: pointer;
        @at-root{
            #{&}--icon{
                width: 25px;
            }
        }
    }
}

Ожидаемый результат класса модификатора значка:

.cc_sidebar .btn--icon,cc_popup .btn--icon{width: 25px;}

Но вместо этого я получаю:

.cc_sidebar .btn, .cc_popup .btn--icon{width: 25px;}

--icon не применяется к первому родительскому селектору. Должно ли это быть? Или я не понимаю всей работы @at-root?

Мы будем очень признательны за любые идеи или отзывы.

И да, все это должно быть обернуто двумя родительскими селекторами.


person Fernker    schedule 06.11.2013    source источник


Ответы (1)


Это, безусловно, ошибка в Sass, в последней версии (gem install sass --pre) ваш код расширяется до

.cc_sidebar .btn,
.cc_popup .btn {
  display: inline-block;
  cursor: pointer; }
  .cc_sidebar .btn, .cc_popup .btn--icon, .cc_sidebar .btn, .cc_popup .btn--icon {
    width: 25px; }

И вы можете видеть дублированную часть .cc_sidebar .btn, .cc_popup .btn--icon .cc_sidebar .btn, .cc_popup .btn--icon, так что это похоже на ошибку.

Я на самом деле немного протестировал его, и да, на самом деле есть две ошибки! Я заполнил их в выпусках Sass: https://github.com/nex3/sass/issues/1003 и https://github.com/nex3/sass/issues/1004, чтобы вы могли использовать свой код, когда они будут исправлены.

Поскольку проблема заключается в нескольких селекторах, единственный обходной путь — не использовать их :(

person kizu    schedule 07.11.2013
comment
Потрясающий! Спасибо, что подтвердили, что я не схожу с ума, и отправили отчеты об ошибках. Мне было интересно, была ли это ошибка, но я хотел убедиться, прежде чем отправлять отчет об ошибке. Спасибо! - person Fernker; 07.11.2013