嵌套 Sass 到 select 且仅影响第一级菜单锚点而不影响子菜单
Nested Sass to select and affect only the first level menu anchors not the sub-menus
这里我试图给顶级菜单栏一个不同于子菜单项的高度。
似乎 first-child
影响所有菜单项(菜单和子菜单项),虽然它应该只影响菜单项,不知道确切的原因是什么,以及如何通过简洁的解决方案,无需使用额外的 class 选择器或添加 !important 规则。
请看一下代码,也提供了完整的代码。
HTML代码:
<ul class="menu">
<li class="active">
<a href="#s1">Perfumes</a>
<ul class="submenu">
<li><a href="#">Asia</a></li>
<li><a href="#">Europe</a></li>
</ul>
</li>
<li>
<a href="#s2">Gemstones</a>
<ul class="submenu">
<li><a href="#">Asia</a></li>
<li><a href="#">Europe</a></li>
</ul>
</li>
</ul>
Sass (SCSS) - 显示重点部分:
在菜单部分我有:
.menu
a {
&:first-child {
height: 80px; line-height: 80px; // It applies to all the menu
and sub-menu items, we want it to just be applied to the top
menu bar items!
}
}
在子菜单中我有:
.submenu {
& > li {
a {
height: 50px; line-height: 50px;
// height: 50px !important; line-height: 50px !important;
// This works, but don't want to use !important, want to find other
workarounds and the issues here
}
}
注意:我不喜欢使用额外的class选择器,只是我喜欢使用advanced/nestedSass选择器。
完整代码: Code is here
我不知道 sass 但你生成的 css 是 .menu > li a:first-child 所以,它会影响所有子菜单中的所有第一个子菜单.您应该生成 .menu > li > a {},这只会影响第一层的 's inside(香水和宝石):
.menu > li > a {
height: 80px;
line-height: 80px;
}
在此 fiddle 中,我使用了您的 html 和您的 css(已编译)。注意我注释了编译的 css 第 25 行并添加了第 30
行
这里我试图给顶级菜单栏一个不同于子菜单项的高度。
似乎 first-child
影响所有菜单项(菜单和子菜单项),虽然它应该只影响菜单项,不知道确切的原因是什么,以及如何通过简洁的解决方案,无需使用额外的 class 选择器或添加 !important 规则。
请看一下代码,也提供了完整的代码。
HTML代码:
<ul class="menu">
<li class="active">
<a href="#s1">Perfumes</a>
<ul class="submenu">
<li><a href="#">Asia</a></li>
<li><a href="#">Europe</a></li>
</ul>
</li>
<li>
<a href="#s2">Gemstones</a>
<ul class="submenu">
<li><a href="#">Asia</a></li>
<li><a href="#">Europe</a></li>
</ul>
</li>
</ul>
Sass (SCSS) - 显示重点部分:
在菜单部分我有:
.menu
a {
&:first-child {
height: 80px; line-height: 80px; // It applies to all the menu
and sub-menu items, we want it to just be applied to the top
menu bar items!
}
}
在子菜单中我有:
.submenu {
& > li {
a {
height: 50px; line-height: 50px;
// height: 50px !important; line-height: 50px !important;
// This works, but don't want to use !important, want to find other
workarounds and the issues here
}
}
注意:我不喜欢使用额外的class选择器,只是我喜欢使用advanced/nestedSass选择器。
完整代码: Code is here
我不知道 sass 但你生成的 css 是 .menu > li a:first-child 所以,它会影响所有子菜单中的所有第一个子菜单.您应该生成 .menu > li > a {},这只会影响第一层的 's inside(香水和宝石):
.menu > li > a {
height: 80px;
line-height: 80px;
}
在此 fiddle 中,我使用了您的 html 和您的 css(已编译)。注意我注释了编译的 css 第 25 行并添加了第 30
行