JUN-NIKKI

現役プログラマーのFXとプログラミングのアウトプットブログです

【Bootstrap 4】Sassを使用する理由と始め方!~導入編~

f:id:jun1221:20190412215220p:plain

 

今回はBootstrap4 + Sassの始め方について説明します。

Bootstrap 4については下記の記事をご覧ください。

jun-nikki.hatenablog.com

 

Bootstrap · The most popular HTML, CSS, and JS library in the world.

 

 

Bootstrapをそのまま使用すると、Bootstrapのデザインでホームページを作成することになります。そうするとBootstrap臭のするデザインになってしまいます。見る人にはわかる、「あ~Bootstrapそのまま使ってるな、このサイト・・・」感。そこでデザインを変更したくなるのですが、デザインを変更するには、CSSをそのまま上書きする方法とSassで変更する方法の2パターンが存在します。両方必要ですが、Bootstrapのデザイン部分はSassでやった方が断然楽ですよというお話です。

 

そもそもSassって?

SassとはCSSを一括で変更できる仕組みのことです。Sassの中に、sassとscssがあり、それぞれ記載方法が異なりますが今回は割愛します。Bootstrapではscssを採用しています。

 

CSS使用とSass使用の比較:例題画面の導入

今回は、Bootstrap 4のExampleからAlbumを使用して説明します。

このサイトに対して、以下を変更します。

 https://getbootstrap.com/docs/4.3/examples/album/

f:id:jun1221:20190421172208p:plain

サイトを右クリックでソースを表示すると下記の様なソースが出てくるのでコピーして下さい。index.htmlファイルを作成し、ソースを貼り付けましょう。

f:id:jun1221:20190421174303p:plain

 

 次に、Bootstrapのcssのパスを変更しましょう。

元「index.html」

<!-- Bootstrap core CSS -->
<link href="/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

 

変更後「index.html」

<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
 

ブラウザで表示すると綺麗に表示できていると思います。

  

CSSをそのまま上書きする方法

上書きする場合はcustom.cssファイルを作成して以下を記載しました。

「custom.css

.btn{
border-radius: 0;
}
.btn-primary {
background-color: #138891;
border-color: #138891;
}

そして、index.htmlにcustom.cssを追加しました。

「index.html」

<link href="custom.css" rel="stylesheet">

 

結果は以下の様になりました。上手く変更できましたね!

f:id:jun1221:20190421175609p:plain

今回はこれだけなので簡単なのですが、他にもprimaryってありますよね。text-primary、bg-primary。。。。。

それはどの様になるかというと、ダークグリーンにはなりません。

試しに<body>の下にbg-primaryを入れてみてください。

「index.html」

<body>
<div class="p-3 mb-2 bg-primary text-white">.bg-primary</div>

 

一番上に青色のバーが表示されましたね。つまりはprimaryという言葉でもそれぞれで色が違います。これでは統一感がないですよね。

そして、primaryを統一しようと思ったら全て調べて、全てに対してダークグリーンを設定しなければなりません。大変ですし、やっぱりワインレッドにしてくれと言われたらすべて修正しなければなりません。この方法はデザインの統一感がない・メンテナンスが大変ということが分かります。

f:id:jun1221:20190421180039p:plain

 

Sassを利用する

※ Sassのインストール方法はこの後に載せておきます。

 

この様な問題を解決するためにSassを使用したデザインのカスタマイズです。SassではBootstrap側がscssファイルを提供しており変数が定義されているため、それを変更して使用します。ですが、変更後はコンパイルが必要です。1行でできます。

main.scssを新規に作成して、以下を入力します。

「main.scss」

$theme-colors: (
"primary": #138891,
);

$enable-rounded: false;
@import "node_modules/bootstrap/scss/bootstrap";
 
コンパイルをします。
「ターミナル(コマンドプロンプト)」
sass .\main.scss .\main.css

custom.cssとbootstrap.min.cssの宣言は削除して、以下を記載してください。

「index.html」

<link href="main.css" rel="stylesheet">

 

保存後、ブラウザで見るとこうなります。

f:id:jun1221:20190421180736p:plain

primary句は全てダークグリーンに変更されていますね!この様に一括で変更できるので、変更対応工数が劇的に少ないです。

 

sassのインストール方法

gemコマンドが必要なので、Windows の方はRubyをインストールしてください。(macの方は不要です)

https://rubyinstaller.org/downloads/

左端の欄から太文字になっているURLをクリックするとインストーラがダウンロードできます。

f:id:jun1221:20190421182906p:plain

 

npmも必要なので、node.jsもインストールしましょう。Windowsmac両方です。

https://nodejs.org/ja/

推奨版をインストールしてください。

f:id:jun1221:20190421184948p:plain

 

その後に、ターミナル(コマンドプロンプト)を開いて以下を実行すると、bootstrap一式とsassをインストールできます。

npm init
npm install bootstrap --save
gem install sass

ホームページの表示とcssのカスタマイズ用に、htmlファイルとscssファイルが必要です。今回のindex.htmlとmain.scssがそれにあたります。

 

 

まとめ

Sassを使用すれば

  1. デザインの統一性の担保
  2. コードの肥大化抑制
  3. メンテナンス性が強い

につながります!

 

Sassを利用して快適なプログラミングをやりましょう!