我遇到了这篇文章中描述的问题:
Twitter Bootstrap 响应式导航栏在小屏幕上损坏
不过,我不确定如何在 Meteor 中解决这个问题,因为 Meteor 似乎在幕后完成了所有这些工作......
我遇到了这篇文章中描述的问题:
Twitter Bootstrap 响应式导航栏在小屏幕上损坏
不过,我不确定如何在 Meteor 中解决这个问题,因为 Meteor 似乎在幕后完成了所有这些工作......
我发现这个问题很有趣,可以找出一些解决方案,并收集关于这个问题的一些基本想法。
Meteor 在其文档中声明应用程序的编写方式应该对文件加载的顺序不敏感(请参阅Meteor 文档)。虽然这(理想情况下)是设计和加载 javascript 模块和依赖项的一个很好的范例,但它提出了在像bootstrap这样的基础上定义用户样式时如何做到最好的问题。
事实上,当涉及到 css 时,顺序很重要,因为特定样式应该覆盖默认样式。使用像 Meteors bootstrapbootstrap.css
包这样的智能包,bootstrap_responsive.css
一个接一个的加载顺序是固定定义的。如此说来,在它之间“即时”放置一些东西是不可能的。
推荐的解决方案:在 boostrap/responsive 之上覆盖:
在我看来,最佳实践是定义和加载用户样式,使其在加载所有基础文件后按预期工作。一个例子:
引导用户.css:
@media (min-width: 980px) {
body {
padding-top: 60px;
padding-bottom: 40px;
}
}
将其放入您的用户 css 文件之一,一切都应该没问题。项目根目录中的用户 css 文件总是在智能包文件(如引导包链接的那些文件)之后加载。
好吧,这是“跨风格”的方法
如果您仍然想以this answer中描述的方式破解它(甚至推特本身也建议),您可以编写自己的智能包:
包.js:
Package.describe({
summary: "UX/UI framework from Twitter - My variant"
});
Package.on_use(function (api) {
api.add_files('css/bootstrap.css', 'client');
api.add_files('css/bootstrap-pre-responsive.css', 'client');
api.add_files('css/bootstrap-responsive.css', 'client');
...
// More resource definitions like glyphicons-halflings go here
...
}
而包文件css/bootstrap-pre-responsive.css包含:
body {
padding-top: 60px;
padding-bottom: 40px;
}
或者,您可以跳过使用智能包进行引导集成,而是让 Meteor 收集和加载项目资源 - 项目根目录中的加载顺序约定在 Meteor 文档的概念部分中进行了描述。但是:这意味着以反映所需顺序的字母方式命名文件!(不是很优雅)
但是,我个人不喜欢后一种方式描述的解决问题的方式。
最后但并非最不重要的一点:当然,有时它是构建和编译自己的 boostrap 变体的最佳方式,其中所有需要的样式都被压缩到一个文件中。