好的,假设我有以下传统的CSS
.social-media { /* ... */ }
.social-media .twitter { /* ... */ }
.social-media .facebook { /* ... */ }
ul.social-media { /* ... */ }所以,我试着用SCSS这样做:
.social-media {
/* ... */
.twitter {
/* ... */
}
.facebook {
/* ... */
}
// Here's the problem:
ul& {
/* ... */
}
}最后一部分不起作用,因为它看起来应该只出现在选择器的开头。有解决办法吗?
发布于 2013-04-19 23:29:01
Sass 3.2及更早版本
你唯一能做的就是反转你的嵌套,或者根本不嵌套:..social media{
/* ... */
.twitter {
/* ... */
}
.facebook {
/* ... */
}
}
ul.social-media {
/* ... */
}Sass 3.3及更高版本
您可以使用插值和@at-root指令来完成此操作:
.social-media {
/* ... */
// Here's the solution:
@at-root ul#{&} {
/* ... */
}
}但是,如果您的父选择器包含多个选择器,则需要使用selector-append:
.social-media, .doodads {
/* ... */
// Here's the solution:
@at-root #{selector-append(ul, &)} {
/* ... */
}
}输出:
.social-media, .doodads {
/* ... */
}
ul.social-media, ul.doodads {
/* ... */
}https://stackoverflow.com/questions/16108103
复制相似问题