我正在关注这本书http://pragprog.com/book/rails4/agile-web-development-with-rails,我的scss文件无效。
css文件就是这个:
.store {
h1 {
margin: 0;
padding-bottom: 0.5em;
font: 150% sans-serif;
color: #226;
border-bottom: 3px dotted #77d;
}
/* An entry in the store catalog */
.entry {
overflow: auto;
margin-top: 1em;
border-bottom: 1px dotted #77d;
min-height: 100px;
img {
width: 80px;
margin-right: 5px;
margin-bottom: 5px;
position: absolute;
}
h3 {
font-size: 120%;
font-family: sans-serif;
margin-left: 100px;
margin-top: 0;
margin-bottom: 2px;
color: #227;
}
p, div.price_line {
margin-left: 100px;
margin-top: 0.5em;
margin-bottom: 0.8em;
}
.price {
color: #44a;
font-weight: bold;
margin-right: 3em;
}
}
}
和html文件如下:
<% if notice %>
<p id="notice"><%= notice %></p>
<% end %>
<h1>Your Pragmatic Catalog</h1>
<% @products.each do |product| %>
<div class="entry">
<%= image_tag(product.image_url) %>
<h3><%= product.title %></h3>
<p><%= sanitize(product.description) %></p>
<div class="price_line">
<span class="price"><%= product.price %></span>
</div>
</div>
<% end %>
CSS正确加载,但未应用。但是,如果添加一个带有“store”类的周围div,它就可以工作。这本书没有提到这种情况,我相信它应该“自动”应用这种风格,对吗?
感谢。
的 的 ** 修改的 * ** * ****
我发现了问题。对于可能遇到相同问题的人,请检查文件:
应用程序/资产/视图/布局/ application.html.erb
body 标记应包含以下代码:
<body class="<%= controller.controller_name %>">
答案 0 :(得分:2)
很高兴您找到了解决方案。但我试图解释幕后发生的事情。
您使用css 的方式不是一般约定。这个设施附带一些额外的宝石。点击此链接 https://stackoverflow.com/a/4564922/1160106 。通过这些宝石,您可以更加DRY方式设计您的CSS。
如果要将样式应用于以下h1
元素
# Here "store" class is the parent element of "h1"
<div class="store">
<h1> some text </h1>
</div>
需要以下css方式
#Here also "store" is written before "h1"
.store h1
{
#some designs
}
可能你正在维护控制器智能css文件。假设你有一个stores_controller
。这就是为什么stores_controller
的类被封装在.store {}
块中的原因。像
.store {
h3 {font-size: 120%;}
}
很明显,您的h3
元素需要具有store
类的父元素。您正在通过class="<%= controller.controller_name %>"
标记添加body
来实现这一目的。毫无疑问,<body>
标记是以下所有节点的父标记。现在,当您点击stores_controller
时,它会设置class="store"
并且您的样式正在运行。
该方法确实是DRY并且值得推荐。
答案 1 :(得分:0)
根据您的代码,所有样式都在.store { }
块之间,因此只要您使用“store”类围绕div,它就不会反映出来
例如
.store {
h3 {
font-size: 120%;
font-family: sans-serif;
margin-left: 100px;
}
}
与
相同.store h3 {
font-size: 120%;
font-family: sans-serif;
margin-left: 100px;
margin-top: 0;
margin-bottom: 2px;
color: #227;
}