4

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 %>">
4

2 に答える 2

2

あなたが解決策を見つけたのは素晴らしいことです。しかし、舞台裏で何が起こったのかを説明しようとしています。

CSS の使用方法は、一般的な規則ではありません。この機能には、いくつかの追加の宝石が付属しています。このリンクhttps://stackoverflow.com/a/4564922/1160106を確認してください。これらの gem を使用すると、CSS をよりDRYな方法で設計できます。


総会

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_controllerclass="store"

このアプローチは本当にDRYであり、お勧めです。

于 2012-10-16T11:31:18.777 に答える
0

コードによると、すべてのスタイルは.store { }ブロックの間にあるため、divをクラス「store」で囲んでいる限り反映されません。

例えば

.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;
    }
于 2012-10-16T10:43:58.820 に答える