質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1229閲覧

vue.jsでスライドバナーを作りたい

harunasan

総合スコア125

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2018/01/29 08:46

前提
vue-cliでのプロジェクト作成

現在スライドバナーを作成しています。
最終的に画像自動スライドと戻ると次へのボタン設置を実装しようと思っております。
現在のソースがこちらです

html

1<!DOCTYPE html> 2<html> 3<head> 4<script type="text/javascript" src="https://vuejs.org/js/vue.js"></script> 5<style type="text/css"> 6.slide-enter-active, .slide-leave-active { 7 transition: transform .5s 8} 9.slide-enter { 10 transform: translateX(300px) 11} 12.slide-leave-active { 13 transform: translateX(-300px); 14} 15 16p { 17 position: absolute; 18 margin: 0; 19 font-size: 3em; 20} 21</style> 22</head> 23 24<body> 25 <div id="app"> 26 <button @click="product++"></button> 27 <transition name="slide"> 28 <p :key="products[product%5]">{{products[product%5]}}</p> 29 </transition> 30</div> 31 <script> 32new Vue({ 33 el: '#app', 34 data: { 35 product: 0, 36 products: ['画像1','画像2','画像3','画像4','画像5'] 37 } 38}) 39</script> 40</body> 41</html>

進むとアニメーションが実装されています、ここから戻ると自動スライド方法が思いつかず困っております、ご教授お願いいたします。

他に試したものがこちらです。
自動化

html

1<!-- ここにHTMLを書きます --> 2<!-- Vue.jsの読み込み --> 3<script src="https://unpkg.com/vue/dist/vue.js"></script> 4 5<!-- ここから --> 6<div class="showbox"> 7 <!-- ▼スライドショーを表示する場所 --> 8 <p> 9 <img src="slideshow.jpg" id="slideshow" alt="スライドショー表示領域"> 10 </p> 11 <!-- ▼スライドショーの制御ボタンを表示 --> 12 <p> 13 <input type="button" value="- 開始/停止 -" id="startstopbutton"> 14 </p> 15</div>

js

1 2// ---------------------------------------------- 3// ▼設定:スライドショーで見せたい画像ファイル群 4// ---------------------------------------------- 5var imgset = [ 6 "sky.jpg" , 7 "snowwoods.jpg" , 8 "water.jpg" , 9 "beachsky.jpg" , 10 "greenplain.jpg" , 11 "seashipsky.jpg" /* 最後にカンマは不要 */ 12]; 13 14// ----------------------------------------------- 15// ▼関数A:指定画像を順に表示させる 16// ----------------------------------------------- 17var counter = 0; 18function slideimage() { 19 if( counter >= imgset.length ) { 20 // カウンタが画像数よりも大きくなったら0番に戻す 21 counter = 0; 22 } 23 // 対象要素の画像URLを次の画像のURLに切り替える 24 document.getElementById('slideshow').src = imgset[counter]; 25 // カウンタを1増やす 26 counter++; 27} 28 29// ----------------------------------------------- 30// ▼関数B:スライドショーを制御 31// ----------------------------------------------- 32var slideid = 0; 33function startstopshow() { 34 if( slideid == 0 ) { 35 // 始まっていなければ始める 36 slideid = setInterval(slideimage,500); // 1000は切替秒数(ミリ秒) 37 } 38 else { 39 // IDがあれば止める 40 clearInterval(slideid); 41 slideid = 0; 42 } 43} 44 45// ▼ボタンクリックに関数を割り当てる 46 47document.getElementById('startstopbutton').onclick = startstopshow;

css

1.showbox { 2 display: inline-block; 3} 4.showbox p { 5 text-align: center; 6} 7.showbox img { 8 border: 2px solid skyblue; 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

やるなら全部Vueでやったほうがいいですよ!

完全に実装してしまいました。参考にしてみてください。
https://jsbin.com/tonofaduce/edit?html,output

投稿2018/01/29 11:47

編集2018/01/29 11:48
sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harunasan

2018/01/29 13:36

回答ありがとうございます、いま見本にして作成しています。 まだ考え中なのですが、配列に画像を入れるところではまっています、 よろしければアドバイスお願いいたします。 ---------------------------vue.js----------------- <template src="./Home.html"></template> <style scoped src="./Home.css"></style> <script> const imagePrefix = '/static/eventBanner/hogeEvent-banner_000'; export default { name: 'Home', data () { return { product: 0, products: [currentImage, currentImage, imagePrefix, '画像4', '画像5'], timer: null }; }, mounted: function () { this.onTimer(); }, methods: { nextSlide: function () { this.product = this.product < this.products.length - 1 ? this.product += 1 : 0; this.slideImage(this.product); }, previousSlide: function () { this.product = this.product < this.products.length - 1 ? this.product -= 1 : 0; this.slideImage(this.product); }, slideImage: function (imageList) { this.currentImage = imagePrefix + imageList; }, onTimer: function () { this.timer = setInterval(() => { this.nextSlide(); }, 2000); }, offTimer: function () { if (this.timer === null) { this.onTimer(); } else { clearInterval(this.timer); this.timer = null; } } }, onClickStartButton: function () { this.$router.push('quest'); } }; </script> -----html------- <div class="home"> <button class="questButton" @click="onClickStartButton()"> </button> <div> <button @click="nextSlide">次</button> <button @click="previousSlide">戻</button> <transition name="slide"> <p :key="products[product]">{{products[product]}}</p> </transition> </div> </div> --------css-------- .questButton { position: fixed; top: 60%; right: 40%; width: 54%; height: 18%; background: url(/static/home/hoge.png) no-repeat center; background-size: 200px; border-color: transparent; } questButton:active { transform: scale(0.95); } .showbox { display: inline-block; margin-top: 120%; } .showbox p { text-align: center; } .showbox img { border: 2px solid skyblue; width: 80%; height: 80%; } .slide-enter-active, .slide-leave-active { transition: transform .5s } .slide-enter { transform: translateX(300px) } .slide-leave-active { transform: translateX(-300px); } p { position: absolute; margin: 0; font-size: 3em; }
sakapun

2018/01/30 01:26

やりたいことがわかりませんでした。 このトピックはスライドショーについてなので、別トピックにしましょう。
harunasan

2018/01/30 02:01

ありがとうございます、別トピックにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問