LoginSignup
0
1

More than 3 years have passed since last update.

Bootstrapを導入したアプリケーションでCSSが反応しない場合の対策

Posted at

本記事の目的

  • bootstrapを導入したRailsのアプリケーションでCSSが適用されない現象を解決する

背景

RailsでのBootstrapの使い方を学んでいたが、Bootstrapのテンプレではない部分にCSSが反応しなくなった。
以下がコードとブラウザ上での見た目。
(Bootstrapの使い方を試しているだけなので、アクションやファイルの意図は特にない。)

index.html.erb
<%= render 'shared/header' %>
<p class="bg-primary"><button type="button" class="close" aria-label="Close"><span aria-hidden="true">&times;</span></button>
</p>
<p class="bg-success">...</p>
<p class="bg-info">...</p>
<p class="bg-warning">...</p>
<p class="bg-danger">...</p>
_header.html.erb
<header id="header-wrapper"></header>
header.scss
#header-wrapper {
  height: 50vh;
  background-color: blue;
}
application.scss
@import "bootstrap";
@import "tweets.scss";
// tweet.scssは何も記述がない
@import "header.scss";

Google chromeで表示↓
キータ用画像bootstrap.png

緑・青・黄・赤の線はBootstrapのテンプレで、一番上の太い赤の線は自分で用意したヘッダー。
(上に黒い線が見えるが、Google chromeのバーの部分)

1点おかしな箇所がある。
ヘッダー部分を、背景色blue、高さ50vhで指定したのに、背景色red、高さ5vhになってしまっている。
たしかに、最初は背景色red、高さ5vhで設定したが、背景色blue、高さ50vhに変更できるか試したところ、変わらなくなってしまった。

原因

SCSSファイルの読み込みの順番

上記コードの記述の通り、application.scssで、Bootstrapを一番初めに読み込んでいる。
Bootstrapでは、予めクラスやIDが用意されているので、競合したものがある場合、そちらが優先されるらしい。

よって、Bootstrapを読み込む前に、自分で用意したSCSSファイルを先に読み込んでみる。

application.scss
@import "tweets.scss";
// tweet.scssは何も記述がない
@import "header.scss";
@import "bootstrap";

以上の様に読み込む順番を修正し、Google chromeで表示してみると、、、↓

キータ用画像修正後.png

ヘッダー部分がしっかり指定した様に表示された。

結論

読み込む順番を変えれば、SCSSがしっかりと適用される。
(Bootstrapについては学習し始めたばかりの為、原因は他にもあるかもしれない。)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1