2014-09-16 2 views
1

Я хотел бы создать абстрактное имя класса css.Попытка повторного использования существующего класса в lesscss

//icons.less (from icomoon) 
.icon-arrow-down:before { 
    content: "\e600"; 
} 

//abstract class name that re-uses existing class name 
//compiling lesscss fails at this line 
.icon-open-menu:before { 
    .icon-arrow-down:before; 
} 

$ gulp build-less 
[17:30:18] Using gulpfile ~/projects/foo/gulpfile.js 
[17:30:18] Starting 'build-less'... 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: Unrecognised input in file 
/Users/user/projects/foo/less/icons.less line no. 138 

Я делал это много раз, прежде чем, где я ссылаться на существующий класс как .clearfix;, но это не похоже на работу здесь.

ответ

3

В качестве альтернативы тому, что Jerreck mentioned, вы можете также использовать extend для достижения подобных результатов:

.icon-arrow-down:before { 
    content: "\e600"; 
} 
.icon-open-menu:before { 
    &:extend(.icon-arrow-down:before); 
    color: red; 
} 

Выхода:

.icon-arrow-down:before, 
.icon-open-menu:before { 
    content: "\e600"; 
} 
.icon-open-menu:before { 
    color: red; 
} 
+0

именно то, что я был после. Благодарю. – chovy

1

То, что вы не просто класс, это к которому добавлен класс psuedo-selector.

В МЕНЬШЕ, вы можете добавить псевдопользователей-селекторов в селекторов путем вложения их в селекторе с этим синтаксисом:

.icon-arrow-down { 
    &:before { 
    content: "\e600"; 
    } 
} 

Затем вы можете использовать свой класс как примесь, как это:

.icon-open-menu { 
    .icon-arrow-down; 
} 

Вывод:

.icon-arrow-down:before { 
    content: "\e600"; 
} 
.icon-open-menu:before { 
    content: "\e600"; 
} 
+0

Это работает, но, к сожалению, icomoon.io css не в формате LESS. Я надеялся избежать переписывания. Нужно ли в любом случае повторно использовать исходное правило '.icon-arrow-down: before {}' без его модификации? – chovy

Смежные вопросы