Это мое понимание того, что вы можете решить эту проблему с помощью extend
тоже.
.settingsIcon {
background: url("settings.png");
&:hover {
background: url("settings_hover.png");
}
}
.SettingsButton {
height: 50px;
width: 200px;
&:extend(.settingsIcon all);
.icon {
&:extend(.settingsIcon all);
}
}
выходы:
.settingsIcon,
.SettingsButton,
.SettingsButton .icon {
background: url("settings.png");
}
.settingsIcon:hover,
.SettingsButton:hover,
.SettingsButton .icon:hover {
background: url("settings_hover.png");
}
.SettingsButton {
height: 50px;
width: 200px;
}
Обратите внимание, что выше генерировать не используется .settingsIcon
селектор в вашем CSS. Причина Меньше не позволит вам расширить Примеси (см: https://github.com/less/less.js/issues/1177), которые не выход, вы можете решить только это, поставив .settingsIcon
декларацию в другом файле @import
этот файл, используя ключевое слово reference
:
settingsicon.less :
.settingsIcon {
background: url("settings.png");
&:hover {
background: url("settings_hover.png");
}
}
project.less:
@import (reference) "settingsicon.less";
.SettingsButton {
height: 50px;
width: 200px;
&:extend(.settingsIcon all);
.icon {
&:extend(.settingsIcon all);
}
}
Теперь компиляции project.less
генерирует:
.SettingsButton,
.SettingsButton .icon {
background: url("settings.png");
}
.SettingsButton:hover,
.SettingsButton .icon:hover {
background: url("settings_hover.png");
}
.SettingsButton {
height: 50px;
width: 200px;
}
-
NB вы не ищете CSS for hover that includes all child elements в первую очередь?
обновление @harry писал:
Мое понимание было то, что тот же фон необходимо применять для .SettingsButton: парить .Icon и .SettingsButton .Icon: парить только.
Я думаю, что имеет смысл. Вы можете сделать это, используя также расширение, но я также согласен, что расширение одного и того же класса в два раза не так уж и сухо.
С settingsicon.less
быть снова:
.settingsIcon {
background: url("settings.png");
&:hover {
background: url("settings_hover.png");
}
}
Вы можете использовать:
@import (reference) "settingsicon.less";
.SettingsButton {
height: 50px;
width: 200px;
&.icon {
&:extend(.settingsIcon);
}
&:hover, & .icon:hover {
&:extend(.settingsIcon:hover);
}
}
или:
@import (reference) "settingsicon.less";
.SettingsButton {
height: 50px;
width: 200px;
& .icon {
&:extend(.settingsIcon all);
}
&:hover {
&:extend(.settingsIcon:hover);
}
}
которые оба компилировать в:
.SettingsButton.icon {
background: url("settings.png");
}
.SettingsButton:hover,
.SettingsButton .icon:hover {
background: url("settings_hover.png");
}
.SettingsButton {
height: 50px;
width: 200px;
}
@ Харри [вы не нашли его?] (Http://stackoverflow.com/questions/30048985/) [И было] (http://meta.stackoverflow.com/q/283550/792066) – Braiam
@ Гарри хорошо, как вы ожидаете, что есть «консенсус сообщества», если вы не участвуете? Была дискуссия, были услышаны заинтересованные стороны, я просто применяю то, что обсуждали эти заинтересованные стороны. (BTW, less tag содержит: css препроцессор «меньше», «меньше» напротив больше (инструмент командной строки) и «меньше» рельсов) – Braiam
@Harry, который не исправит основную проблему: меньше означает 3 разных вещи. [Это не должно быть разрешено] (http://meta.stackoverflow.com/questions/283550/removing-the-less-tag-from-unix-questions-using-the-less-command-good-thing#comment147717_283552) (также комментарий Mooing Duck). Есть ли у вас предложение, позволяющее устранить проблему? Mine: создайте 3 необходимых тега (может быть, больше, знаете ли, программисты отсасывают на именование), переместите вопросы на те теги и зажгите простой [меньше]. – Braiam