icon
Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【Vue.js & Element Plus】Element Plusスライダーに、ループ回して画像をバインドする方法

更新: 2024/05/05 2276文字

今回は、Vue.js & ライブラリElement Plusで使用できるスライダーについて、画像をバインドする方法を紹介します。前回のサンプルでは、単純に文字&背景だけのスライダーになりましたが、実際のサイト運用のように画像をバインドするには、どうしたらよいでしょうか。早速確認していきましょう。

前回の課題~Element Plusスライダーでの、画像のバインド

前回作ったVue.js & Element Plusのスライダーでは、Element Plus公式のサンプルからそのままコードを拝借しただけで、画像がバインドされているわけではありませんでした。だからといって、単純に以下のようなコード・・・

■スライダー表示部分
<el-carousel-item v-for="item in 6" :key="item">
 <img src="./imgs/00.{{item}}jpg"/>
</el-carousel-item>

では、画像は表示されません(展開されずmgs/00.{{item}}jpgというurlがそのまま出る)。今回はこれに画像バインドするにはどうしたらよいかを検討します。

Element Plusスライダーに画像をバインドするコードと表示例

コード例(html&javascript)

CSSはElement Plusにあったものから変更していないのですが、html&javascriptについては以下のように変更しました。

■html
<el-carousel :interval="4000" type="card" height="300px">
 <el-carousel-item v-for="item in imgpath" :key="item">
   <h3 text="2xl" justify="center"><img :src="item"/></h3>
 </el-carousel-item>
</el-carousel>

ポイントは『v-for="item in imgpath"』ってところです。imgpathはvueインスタンス内にある配列で、画像urlがまとめて入っています。これをループで回してバインドしていきます。また『img :srcは、img v-bind:srcの短縮形』だそうです。

■javascript
<script>
const sampleApp = {
data() {
 return {
  imgpath :['./imgs/001.jpg','./imgs/002.jpg','./imgs/003.jpg','./imgs/004.jpg','./imgs/005.jpg'],
   };
 },
};
const app = Vue.createApp(sampleApp);
app.use(ElementPlus);
app.mount("#app");
</script>

javascript・vueアプリケーションインスタンス部分です。data内に新しくimgpathという配列を定義しました。この中にスライダーの画像のパスが入っています。

表示例

上記のような対応を行ったところ、スライダーの画像が全部表示されてくれました。なお、今回の動作サンプルも、当サイトドメイン内の以下のページに設置していますので、実際のコードや動作例を確認したい場合はご覧ください。

あとがき・まとめ

  • vueの画像タグ・src属性内では、Mustacheで値が展開されず、スライダーの画像も表示されない
  • スライダーで複数の画像を使うときは、インスタンス・data内にパスをまとめておくと、ループで使える
  • 画像urlを出力するときは、Mustacheではなくimg v-bind:src(img :src)を使う

まとめると、こんなところでしょうか。ちょっとコツがいりましたが、理屈がわかればなんとかなります。当サイトでは、今後もvueは扱っていく予定です。


【カテゴリ】- javascript/jQuery、その他
【タグ】- ,

関連記事