【发布时间】:2015-06-14 01:34:21
【问题描述】:
我在我的网站上使用 Bootstrap,我选择使用固定在屏幕顶部的导航栏在桌面浏览器上进行导航,那里有大量可用的屏幕空间。这是通过在我的导航栏上使用 .navbar-fixed-top 类在引导程序中完成的。
虽然我更喜欢在较小的屏幕上使用静态导航栏,但它会随着页面内容的其余部分滚动,因为这样可以在此类空间非常宝贵的较小设备上节省垂直屏幕空间。
当然,我转向了使用 css 媒体查询的明显方式:
#site-header
{
@extend .navbar, .navbar-default;
@media (max-width: $screen-xs-max) {
@extend .navbar-static-top;
}
@media (min-width: $screen-sm-min) {
@extend .navbar-fixed-top;
}
}
不幸的是,这给了我错误消息:
You may not @extend an outer selector from within @media.
You may only @extend selectors within the same directive.
根据错误消息,这似乎是 SASS 中一个非常刻意的限制。除了使用 JavaScript 动态应用类之外,还有其他方法吗?
基本上我的问题类似于Extending selectors from within media queries with Sass,除了我希望扩展在库(引导程序)中定义的类,所以我没有转换.navbar-static-top 的定义的选项和.navbar-fixed-top 进入 mixins 或以任何方式更改它们的定义,正如目前对该问题的所有现有答案所建议的那样。
【问题讨论】:
-
@cimmanon 我的问题确实与此类似,但由于我正在寻找扩展库(Bootstrap)提供的类,因此该答案中提出的解决方案建议“改用 mixin”或“在媒体查询中定义类而不是尝试在那里扩展它”对我来说不是很有帮助。所以我想也许这是一个不同的问题?
-
这些选项都不适合您的情况这一事实无关紧要:这些是唯一存在的选项。如果你不喜欢它们,我建议你向 Sass(或 Bootstrap)的维护者投诉。
-
@cimmanon 我不知道,我的直觉告诉我,如果一个问题的有效答案不能回答另一个问题,那么两个问题就不能真正重复。这违背了将问题标记为重复 IMO 的全部意义,这是为了帮助未来的访问者找到他们问题的答案。
-
您认为我们需要多少问题来解决
You may not @extend an outer selector from within @media错误?你想扩展的选择器来自哪里并不重要(你写的,别人写的,等等):答案总是一样的:你不能这样做(直到 Sass 本身更改为允许这种行为)。 -
@cimmanon Meta 在这里发帖:meta.stackoverflow.com/q/289907/1157054我欢迎您就我提出问题的方式提供反馈(希望我没有遗漏任何重要的内容)。哦,如果你想在那里发布答案,请随意。 Meta 似乎是一个进行此讨论的好地方。
标签: twitter-bootstrap twitter-bootstrap-3 sass bootstrap-sass