も使用することでこの問題を解決できると理解しています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 で使用されていないセレクターが生成されることに注意してください。原因 Less では、出力しないミックスイン ( 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;
}
--
最初にすべての子要素を含むホバー用の CSS を探していませんか?
更新
@harry 書きました:
私の理解では、同じ背景を .SettingsButton:hover .icon と .SettingsButton .icon:hover のみに適用する必要があるということでした。
それは理にかなっていると思います。拡張を使用してそれを行うこともできますが、同じクラスを2回拡張することもそれほどDRYではないことに同意します。
もう一度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;
}