Nuxt.jsで使っているBuefyのスタイルをカスタマイズする

はじめに
Nuxt.jsでBuefyを使っており、部分的にスタイルをカスタマイズしたい場面がありました。この記事では、Nuxt.jsで使っているBuefyのスタイルをカスタマイズする方法をまとめます。 もしBuefyについて興味がある方は、以下に使い方などをまとめているので見てみてください。
BuefyはBulmaというUIコンポーネントセットをベースにしたVue.js用のUIコンポーネントセットです。Bootstrapのようにあらかじめ用意されたHTMLタグやCSSクラスを使うことで簡単にそれなりの見た目になります。ここでは、Vue.jsアプリでBuefyを使えるようにするための準備手順と、最後にmarginやpadding用のクラスをBeufyに追加する方法をメモします。
前提と環境
ここでは、Nuxt.jsにnuxt-buefyをインストールして使っている前提です。
- Nuxt.js : 2.9.0
- nuxt-buefy: 0.3.14
nuxt-buefyの公式リポジトリは以下です。
It's really very simple to start with nuxt. But we can make it even simpler by adding nuxt-buefy.
事前準備
はじめにオリジナルのSCSSファイルをコンパイルして読み込めるようにするためにnode-sassとsass-loaderの2つをインストールしておきます。
以上で事前準備は完了です。
オリジナルのSCSSファイルを作成する
自身のNuxt.jsアプリのルートディレクトリに、assetsというディレクトリが存在すると思います。このassetsの中に、style.scssという名前のファイルを新しく作成し、中身を以下のようにします。
上記では、Buefyにデフォルトで用意されている$primary、$successの色を変更しています。なお、Buefy(Bulma)では、is-primaryのようなCSSクラス名も多数用意されています。例えば、以下です。
自身で作成したSCSSファイルで$primaryの色を変更しても、上記のようにis-primaryのようなCSSクラスの色までは変更されません。
もしCSSクラスの色も変更した色を反映させたい場合は、以下のように$colorsの記述を加えます。
上記ではついでに$primary-invert、$success-invertも設定しています。この「invert」とついているのは、例えばボタンで背景色とテキスト色を反転させた場合の色です。
なお、Buefy(Bulma)で定義されているスタイルの変数は以下の公式ドキュメントに記載されています。
また、findColorInvert関数については以下の公式ドキュメントに記載されています。
nuxt.config.jsを編集する
あとは作成したSCSSファイルを、nuxt.config.jsで読み込むように記述します。具体的には、以下のようにcss部分に作成したSCSSファイルのパスを追記します。
まとめ
BeufyはWebアプリとして必要となりそうな要素や機能、スタイルも十分揃っているのでおすすめです。
関連記事
公開日:2019/06/15 更新日:2019/06/15Electron + Vue.js アプリでSQLite3を使う手順
Electron + Vue.jsで構築したデスクトップアプリでSQLite3を使うための手順をまとめます。
公開日:2019/06/13 更新日:2019/06/13Electron + Vue.jsで画面をPDF化する手順
Electron + Vue.jsで構築したデスクトップアプリで画面をPDF化するための手順をまとめます。
公開日:2018/11/30 更新日:2018/11/30Vue.jsアプリをNow(zeit.co)にデプロイするまでの手順と使い方
Nowは非常にシンプルなPaaSです。他のPaaSと比較しても必要な設定やデプロイまでの作業が非常に簡単になっています。この記事では、ローカルにあるVue.jsアプリをNow上にデプロイし、実際にブラウザからアクセスしてみるところまでの手順をメモします。
公開日:2018/11/27 更新日:2018/11/27Vue.jsからFirestoreを使うための準備とFirestoreへのデータ書き込み手順
FirebaseのCloud Firestore(以降、Firestore)とVue.jsを組み合わせると、データ書き込みや読み込みが非常に簡単に実行できます。ここでは、Vue.jsで簡素なフォームを作成し、そのフォームからFirestoreにデータを書き込むところまでをメモします。