针对Meteor的Twitter Bootstrap navbar-fixed-top小屏幕修复

时间:2012-10-25 06:32:30

标签: twitter-bootstrap meteor

我遇到了这篇文章中描述的问题:

Twitter Bootstrap Responsive Navbar Broken on Small Screens

我不确定如何在Meteor中修复此问题,因为Meteor似乎在引擎盖下完成所有这些......

1 个答案:

答案 0 :(得分:3)

我发现这个问题很有趣,可以找出一些解决方案,并收集一些关于这个问题的基本想法。

Meteor在其'文档中指出,应该编写应用程序,使其对文件的加载顺序不敏感(参见Meteor documentation)。虽然这是(理想情况下)设计和加载javascript模块和依赖项的一个很好的范例,但它在如 bootstrap 这样的基础之上定义用户样式时提出了如何做到最好的问题。

事实上顺序当涉及到css时特定样式应该覆盖默认样式。使用Meteors bootstrap 包这样的智能包,可以直接一个接一个地定义bootstrap.cssbootstrap_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变体的最佳方法是将所有需要的样式缩小为一个文件。