Vue.js

【Vuetify】カルーセル(スライダー)コンポーネントの作成方法

はじめに

今回はVuetifyでカルーセルコンポーネントを持つWorkエリアを作成していきます。

完成イメージは下記の通りです。

本記事の内容

■ カルーセルコンポーネントを持つWorkエリア作成方法

■ ページ遷移の際、スクロール位置を調整する方法

本記事は、以下の記事で紹介しているハンズオンの個別解説記事となりますので、全体像やこれまでの実装が知りたい方は以下の記事をご参照ください。

Vuejsでレスポンシブ対応のホームページを作成&公開する方法本記事ではVuejsでレスポンシブ対応のポートフォリオサイトの作成方法をハンズオン形式で解説していきます。ハンズオンを通したVuejsの解説、実践を意識した保守性・可読性の高いコーディング方法、レスポンシブ対応のサイト作成方法を盛り込んだ内容となっております。...

トップページWorkコンポーネントの作成

コンポーネントの新規作成

以下のディレクトリへHomeWork.vueとWork.vueを作成していきます。

コンポーネントの読み込み

次に作成したコンポーネントをトップページのベースコンポーネント(Home.vue)へ読み込みます。

これで事前準備は完了です。

カルーセルコンポーネントを持つWorkエリア作成方法

セクションタイトルの実装

まずは下図の赤枠のようなセクションタイトルを作成していきます。

下記のコードをHomeWork.vueへ貼り付けてください。

こちらは以前作成したグローバル化したstyleが適用されております。

【Vuetify】画像と文章を横一列で表示するAboutエリアの作成本記事ではVuetifyのグリッドレイアウトシステムを使用して、画像と文章を横一列で表示するトップページのAboutエリアを作成していきます。PC表示(画面幅がMedium(ノートPC)以上)のとき、画像と文章を横一列に表示し、スマホのときは画像と文章が縦一列に表示されるPGMを実装していきます。...

画像パスと遷移先URLの定義

次に、Workエリアで使用する画像パスと遷移先URLを以前用意した定数ファイルであるconstants.jsへ定義します。

ここで注意点ですが、画像パスはrequire()で囲み、モジュールとして読み込む必要があります。

こちら後ほどv-bindを使用して画像パスを参照するのですが、画像パスだけセットすると通常時と同じようにコンパイルされず、画像パスがそのままセットされてしまい、「画像がみつかりません」というエラーとなってしまいます。

これを回避するために、画像パスはrequire()で囲みます。

詳細が気になる方はこちらのサイトが分かりやすかったのでご参照ください。

【Vue.js】imgタグのsrc要素は指定の仕方によって読み込み方が違う

上記のように定義したら、HomeWork.vueで読み込むよう以下のコードを追加しましょう。

Vuetifyでのカルーセルの実装

次に、Vuetifyで下図のようなカルーセルを作成していきます。

下記のコードをHomeWork.vueへ貼り付けてください。

作業内容

v-carousel追加

v-carousel-itemタグを追加し、v-forディレクティブで各アイテム表示

v-carouselタグの書き方・使い方

v-carouselタグは以下のような構造になっており、v-carouselタグを使用することで簡単にカルーセルを作成することができます。

コーディングする際は、以下のように書きましょう。

今回のサンプルプログラムでは、v-carousel-itemタグ内は画像パスとURLが異なるだけで要素は同じであるため、先程データ定義したworkItemsを利用して、v-forディレクティブで繰り返し処理を行なっております。

なお、v-carousel-itemタグはvue-routerの遷移先を:toを使用することで遷移先をセットすることができます。

以下に今回使用しているオプションをまとめました。

hide-delimiters カルーセルの下の区切り記号を非表示にします。
height コンポーネントに高さを設定します。デフォルトでは500pxがあたっており、500pxはスマホのとき大きすぎるのでautoを設定しております。

その他オプションは公式サイトをご参照ください。

カルーセルの遷移先である詳細ページの作成

カルーセルの遷移先である詳細ページのWorkコンポーネントを作成していきます。

以下のようにカルーセルの遷移先は単純なページ遷移だけでなく、該当ID部分までスクロールされるような作りにしていきます。

詳細ページのWorkコンポーネント作成

Work.vueに以下のコードを貼り付けてください。

今回、AppBackgroundHolderコンポーネントは以下で作成した下層ページタイトル部分の共通コンポーネントとなります。

【Vuetify】下層ページタイトル部分の共通コンポーネント作成Vuetifyを使用した下層ページタイトル部分の共通コンポーネント作成を解説。また、下層ページタイトル部分は様々なコンポーネントから参照されるため、汎用的に作成するための設計についてもハンズオンを通して学んでいきます。...

また、該当ID部分までスクロールされたことが分かりやすくなるよう各セクションの高さは1000pxとしております。

詳細ページのルーティング

詳細ページに遷移させるため、以前作成したrouter.jsへ下記部分を追記します。

ページ遷移の際、スクロール位置を調整する方法

ページ遷移の際、該当ID部分までスクロールさせる際、ヘッダーの高さ分ずらさなければ、下記のように余分なスペースができてしまいます。

したがって、ヘッダーの高さ分ずらすということをしなければなりません。

このようにスクロール位置を調整するには、vue-routerのオプションであるscrollBehaviorを使用します。

今回のケースだと以下のように、route.jsを追記します。

scrollBehaviorの使い方

上記のように実装すれば、以下のように各セクションにぴったりとスクロール位置を合わせることが可能です。

さいごに

以上でWorkコンポーネントの作成は完了です!

お疲れ様でした!

少し休憩して、次回はカードコンポーネントを作成していきましょう。

【Vuetify】カードコンポーネントの作成方法Vuetifyでカードコンポーネントを作成する方法を紹介します。Vuetifyのカードコンポーネントであるv-cardについて詳しく解説しております。ぜひご覧ください。...

ES6について基礎から学習したい方は、以下の記事で紹介している教材がおすすめです。

【最新版】JavaScript(ES6)が学べるおすすめ書籍・Udemy講座まとめJavaScript(ES6)が学べるおすすめサイト(無料あり)や書籍、Udemy講座をまとめました。自身が参考にした教材の中でも非常に業務に役立ったものを厳選しております。...

VueJsの基礎知識についてより詳しく網羅的に学習したい方は、以下の記事で紹介している教材がおすすめです。

【これだけでOK!】おすすめのVue.js入門教材「Vue.jsを初めてみたいけど、どの教材から手をつけてよいか分からない」という方や「Vue.jsできるようになるためにどんなことをやったらよいのか?」という疑問をもった方向けにおすすめのVue.js入門教材の紹介とその教材の使い方について詳しく解説しております。...

JavaScriptの基礎からVueJsが学べるスクールは以下の記事で紹介しております。

【2020年最新版】おすすめJavaScriptスクール【未経験からフロントエンドエンジニアへ】未経験からフロントエンドエンジニアになりたいけど、独学で限界を感じている方に向け、客観的審査基準から厳選したおすすめのJavaScriptスクールを公開。実践的でモダンなフロントエンド技術が学べるスクールのみご紹介しております。...

さいごまで読んでいただき、ありがとうございました。

フリーランスエンジニア転職完全ロードマップ

知り合いから
「フリーランスエンジニアになれば、年収800万円以上の高報酬でかつ、自由な働き方をチョイスできる」
というのを聞いて、フリーランスエンジニアに興味を持ったのですが、
当時SIer企業でエンジニアをやっていたボクはなかなか一歩踏みだせませんでした。

というもの以下のような不安があったからです。

■フリーランスエンジニアってかなりの技術力がないとなれないのではないのか?

■フリーランスエンジニアって不安定なのではないのか?

■フリーランスエンジニアって人脈やコネ、営業力が必要なのではないのか?

しかし、実際にフリーランスエンジニアになってみて気づきました。

これらはすべて間違いです。

過去のボクのようにフリーランスエンジニアに興味あるけど一歩踏み出せないという方向けに
『フリーランスエンジニア転職完全ロードマップ』
という記事を書きました。

この記事読めば、どうすればフリーランスになれるのかが分かりますので、ぜひ一読ください。