我遇到了这篇文章中描述的问题:
Twitter Bootstrap Responsive Navbar Broken on Small Screens
我不确定如何在Meteor中修复此问题,因为Meteor似乎在引擎盖下完成所有这些......
答案 0 :(得分:3)
我发现这个问题很有趣,可以找出一些解决方案,并收集一些关于这个问题的基本想法。
Meteor在其'文档中指出,应该编写应用程序,使其对文件的加载顺序不敏感(参见Meteor documentation)。虽然这是(理想情况下)设计和加载javascript模块和依赖项的一个很好的范例,但它在如 bootstrap 这样的基础之上定义用户样式时提出了如何做到最好的问题。
事实上顺序当涉及到css时特定样式应该覆盖默认样式。使用Meteors bootstrap 包这样的智能包,可以直接一个接一个地定义bootstrap.css
和bootstrap_responsive.css
的加载顺序。因此说,“在飞行中”之间放置一些东西是不可能的。
推荐的解决方案:覆盖在boostrap /响应之上:
在我看来,最佳做法是在所有基础文件之后加载时,按照所需方式定义和加载用户样式。一个例子:
自举-user.css :
@media (min-width: 980px) {
body {
padding-top: 60px;
padding-bottom: 40px;
}
}
将此信息放入您的一个用户css文件中,一切都应该没问题。项目根目录中的用户css文件在智能包文件(如引导程序包链接的文件)之后始终加载。
嗯,这是“跨式”方法
如果你想以this answer中所描述的那种方式破解它(甚至推特本身建议),你可以去编写自己的智能包:
package.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 doc的概念部分中描述。但是:这意味着按字母顺序命名文件以反映所需的顺序! (不是很优雅)
但是,我个人不喜欢解决问题的方式,如后面所述。
最后但并非最不重要:当然,有时候构建和编译自己的boostrap变体的最佳方法是将所有需要的样式缩小为一个文件。