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

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

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

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

JavaScript

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

Q&A

解決済

1回答

609閲覧

v-show切り替え時にscrollLeftを効かせたい

yakiuri

総合スコア13

Vue.js

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

JavaScript

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

0グッド

1クリップ

投稿2019/03/26 01:34

困っている事

スクロールバーの出ない画像と出る画像があり、v-showによる要素の表示非表示の切り替え時にscrollLeftを効かせてスクロールバーが出る画像を表示した際にバーを中心に持ってきたいと考えています。
computedやmethodsにscrollLeftを記入しましたがどれも機能せずに困っています。
v-showの切り替え時、またはページの設定としてscrollLeftを設定する方法はありませんでしょうか?

html

1 <div id="app"> 2 <div id="imageArea"> 3 <transition-group name="mainImageArea"> 4 <main-image-component 5 v-for = "(v, i) in filterDate" 6 :id = "filterDate[i].type" 7 :key = "i" 8 :src = "filterDate[i].src" 9 v-show = "selectSeason == filterDate[i].season" 10 ></main-image-component> 11 </transition-group> 12 </div> 13 </div>

vue

1var mainImageComponent = { 2 template: 3 ` 4 <img :src="src" :id="id"> 5 `, 6 props:['id','src'], 7} 8 9new Vue({ 10 el : "#app", 11 components: { 12 'main-image-component': mainImageComponent 13 }, 14 data: { 15 floorList: [], 16 AllImageDate: [], 17 selectNumber: '1', 18 selectType: '1', 19 selectSeason: 'spring', 20 filterDate: [] 21 }, 22 computed: { 23 checkItems: function() { 24 let imageDate = this.AllImageDate; 25 this.filterDate = imageDate.filter(x => x.class == this.selectNumber); 26 return 27 } 28 }, 29 methods: { 30 userSelectFloor: function(imageClass, imageType, imageDefault) { 31 this.selectimage = imageClass;(別コンポーネントからのデータ) 32 this.selectType = imageType;(別コンポーネントからのデータ) 33 this.selectSeason = imageDefault;(別コンポーネントからのデータ) 34 }, 35 userSelectDirection: function(fromChildEvent) { 36 this.selectDirection = fromChildEvent;(別コンポーネントからのデータ) 37 } 38})

試したこと

・html側でwindows.onloadを使用しページの読み込み時にscrollLeftを効かせる
→初期の表示をスクロールバーが存在する画像にしないと動作しない、v-showを切り替えて戻るとバーが左端に戻る。
・methodsにdocument.getElementById('imageArea').scrollLeftを記述し、v-showを切り替えた際に実行させる
→動作しない
・computedにdocument.getElementById('imageArea').scrollLeftを記述し、selectSeasonが切り替わった際に実行させる
→動作しない

お答えいただけると幸いです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

$nextTickを使ってv-showが切り替わった後にscrollLeftを実行させたところ動作しました。

投稿2019/03/29 06:10

yakiuri

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問