search
LoginSignup
0

More than 1 year has passed since last update.

Organization

BootstrapをSassで編集するための手順

はじめに

簡単そうで意外と面倒だったSassの使い方を備忘録として書いておきます。
※この記事は既にBootstrapが導入されていて、これからSassを使ってレイアウト編集することを想定しています。

Sassを使おうと思ったきっかけは現場で使える Ruby on Rails 5速習実践ガイドを使ってタスク管理アプリを作成中に細かいレイアウトを編集したいなと思ったのですが、参考書ではBootstrapだけを使った装飾しか使われていなかったためです。

そもそもSassって何?という人は以下のリンクを参照
これからはcssはSassで書こう。
Bootstrap 4を使うならSassを使って3倍幸せになろう

Sassの使い方(簡易版)

とりあえずレイアウト編集できればいい!という方はapplication.scssに編集内容を記述すればviewに反映されます。

ただおすすめはしません。

理由は以下のような問題があるためです。
- どのviewファイルに対してどのscssを適用させているのかわからない。
- application.scssファイルが必要以上に肥大化する。
- 保守性が著しく低下する。(特にチーム開発の場合)

例)app/views/session.html.slim中のsession_formクラスと
  app/views/post.html.slim中のpost_formクラスと
  app/views/user.html.slim中のuser_formクラスに
  各々のpaddingを適用させたい場合

app/assets/stylesheets/application.scss
@import 'bootstrap';

.session_form {
  padding: 10px 100px;
}
.post_form {
  padding: 20px 200px;
}
.user_form {
  padding: 30px 300px;
}

Sassの使い方(viewファイルごとに管理したい場合)

管理しやすい使い方としてviewファイルごとにscssファイルを用意しapplication.scssに読み込ませることをおすすめします。

手順は
1)scssファイルを入れるためのディレクトリ(ここではpartialディレクトリ)を用意する。
2)application.scssファイルにpartialディレクトリを読み込ませるため@import 'partial';を記述する。
3)partialディレクトリ内に_(アンダーバー)から始まるscssファイルを作成し編集内容を記述する。
4)partialディレクトリ内に_index.scssファイルを作成し3)で作成したファイル名から_を取り除いた形式で記述する。
ここで大事なことが2点あります。
1点目はアンダーバーを除いた形式で記述しないとscssファイルが読み込まれないことがあるため要注意。
2点目は_index.scssファイルがないとapplication.scssファイルがpartialディレクトリを読み込んでくれません。

例)
1)scssファイルを入れるためのディレクトリ(ここではpartialディレクトリ)を用意する。
2)application.scssファイルにpartialディレクトリを読み込ませるため@import 'partial';を記述する。

app/assets/stylesheets/application.scss
@import 'bootstrap';
@import 'partial';

3)partialディレクトリ内に_(アンダーバー)から始まるscssファイルを作成し編集内容を記述する。

app/assets/stylesheets/partial/_sessions.scss
.login_form {
  padding: 10px 100px;
}
app/assets/stylesheets/partial/_posts.scss
.post_form {
  padding: 20px 200px;
}
app/assets/stylesheets/partial/_users.scss
.user_form {
  padding: 30px 300px;
}

4)partialディレクトリ内に_index.scssファイルを作成し3)で作成したファイル名から_を取り除いた形式で記述する。
ここで大事なことが2点あります。
1点目はアンダーバーを除いた形式で記述しないとscssファイルが読み込まれないことがあるため要注意。
2点目は_index.scssファイルがないとapplication.scssファイルがpartialディレクトリを読み込んでくれません。

app/assets/stylesheets/partial/_index.scss
// _は記述しない!`_sessions`はだめ。
@import 'sessions', 'posts', 'users';

参照

わからないことがあったら公式ドキュメントを読むのが一番手っ取り早いです
Sass公式
ruby-sass

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
What you can do with signing up
0