【发布时间】:2012-12-28 06:04:11
【问题描述】:
我有一个网站的 HTML/CSS 版本(基于 Bootstrap 构建),我正在将其翻译为 Rails 3 应用程序。
资产管道快把我逼疯了。
由于 gem 生成的 bootstrap_and_overrides.css.scss 文件,它在我的 Rails 应用程序中的显示方式与常规 HTML 文件之间存在冲突。
其中一个似乎是某些字体样式的覆盖。
例如,这就是 1 h3 的外观。
这就是在我的 Rails 应用程序中呈现相同的 h3 的方式。
因此,页面显示方式的问题在于这些特定样式....但我无法弄清楚为什么会覆盖此样式。
我很想知道如何找出这样做的原因。
另外,困扰我的一件事是该屏幕截图上 Rails 版本中的media=all。不确定这是否会导致这些问题。
编辑 1
正如@coreyward 所指出的,这可能是我的样式表的初始化顺序。在我的原始 HTML/CSS 文件中,Bootstrap 和 Font-Awesome 相关的 css 在 main.css 之前声明。但在 Rails 中,情况正好相反。
鉴于我在 application.html.erb 中的初始声明如下所示:
<%= stylesheet_link_tag "application", :media => "all" %>
如何颠倒这些东西的初始化顺序?
编辑 2
我正在使用这个bootstrap-sass gem,问题是它不希望你使用//=require 指令——所以我不能只是重新安排CSS 清单文件中的顺序。或者更确切地说,我不知道该怎么做。
想法?
【问题讨论】:
-
资产管道在这里根本不应该受到责备,但如果您没有按所需顺序包含资产,可能会产生意想不到的影响。您可能应该刷新有关样式如何在层叠样式表中层叠的知识。
-
嗯......有趣的一点......我肯定会弄错翻译。但问题是我只有 1 个样式表 -
application.css.scss,然后我包含了 Bootstrap 样式表。 Edit1:顺便说一句,你可能是对的。我确实注意到在常规 HTML 版本中,main.css在引导相关样式表之后被调用。在 Rails 中,情况正好相反。鉴于我刚刚完成了这个问题,我该如何解决:<%= stylesheet_link_tag "application", :media => "all" %>在我的布局中? -
资产管道所做的只是连接和缩小。如果您在其他选择器之后放置相同的特定选择器,它们将覆盖任何相同的属性。这就是为什么在定义自己的样式之前包含 Bootstrap。
-
对...查看我更新的评论。如何在 Rails 中的样式之前指定 Bootstrap?
-
@marcamillion 您可以在 CSS 清单文件中执行此操作。见:stackoverflow.com/questions/8890929/…
标签: css ruby-on-rails ruby-on-rails-3 asset-pipeline