回答編集履歴

1

ご質問の追記内容により回答を修正

2021/01/21 09:26

投稿

Twoshi
Twoshi

スコア354

test CHANGED
@@ -1,79 +1,97 @@
1
- ご質問拝見たしました。
1
+ Vue.jsのtransitionを利用すると良と思いました。
2
-
3
- ご質問内容からおそらく表題にあるv-pagination コンポーネントにtransitionをつけるのではなく、v-paginationでページを切り替え、切り替わる表示部分にtransitionをつけアニメーションをつけたいということかと思いました。
4
2
 
5
3
 
6
4
 
7
- 認識あっていれば...
8
-
9
- v-tabs コンポーネントを併用してページの切り替えにtransitionをつけるのはいかがでょうか?
5
+ まず、記事表示部分 Cardタグを transitionタグで囲い、Cardタグにv-show="show"追加てみました。
10
-
11
- 以下の例を作成してみました。
12
6
 
13
7
  ```HTML
14
8
 
15
- <div id="app">
9
+ <section class="p-posts">
16
10
 
17
- <v-tabs v-model="page">
11
+ <transition name="fade">
18
12
 
19
- <v-tab-item :value="1" transition="scroll-x-transition">
13
+ <Card
20
14
 
21
- <v-card>
15
+ v-show="show"
22
16
 
23
- <v-card-text v-text="'ページ1'"></v-card-text>
17
+ v-for="post in pagePosts"
24
18
 
25
- </v-card>
19
+ :key="post.fields.slug"
26
20
 
27
- </v-tab-item>
21
+ :title="post.fields.title"
28
22
 
29
- <v-tab-item :value="2" transition="scroll-x-reverse-transition">
23
+ :slug="post.fields.slug"
30
24
 
31
- <v-card>
25
+ :header-image="post.fields.headerImage"
32
26
 
33
- <v-card-text v-text="'ページ2'"></v-card-text>
27
+ :published-at="post.fields.publishedAt"
34
28
 
35
- </v-card>
29
+ :tag="post.fields.tag.fields.tag"
36
30
 
37
- </v-tab-item>
31
+ :tag-slug="post.fields.tag.fields.tagSlug"
38
32
 
39
- <v-tab-item :value="3">
33
+ />
40
34
 
41
- <v-card>
35
+ </transition>
42
36
 
43
- <v-card-text v-text="'ページ3'"></v-card-text>
44
-
45
- </v-card>
37
+ </section>
46
-
47
- </v-tab-item>
48
-
49
- </v-tabs>
50
-
51
- <v-pagination v-model="page" :length="3"> </v-pagination>
52
-
53
- </div>
54
38
 
55
39
  ```
56
40
 
57
41
 
58
42
 
59
- ```Javascript
43
+ 次に datashowを追加します。初期値:true
60
44
 
61
- new Vue({
45
+ ```Vue
62
46
 
63
- el: '#app',
47
+ data () {
64
48
 
65
- vuetify: new Vuetify(),
49
+ return {
66
50
 
67
- data: {
51
+ page: 1,
68
52
 
53
+ pagePosts: [],
54
+
69
- page: 1
55
+ pageSize: 6,
56
+
57
+ length:0,
58
+
59
+ show: true
70
60
 
71
61
  }
72
62
 
73
- })
63
+ }
74
64
 
75
65
  ```
76
66
 
77
67
 
78
68
 
69
+ 最後に pageChange関数を以下のようにしました。
70
+
71
+ ```Vue
72
+
73
+ pageChange: function(pageNumber){
74
+
75
+ this.show = false;
76
+
77
+ this.pagePosts = this.posts.slice(this.pageSize*(pageNumber -1), this.pageSize*(pageNumber))
78
+
79
+ window.setTimeout(() => {
80
+
81
+ this.show = true;
82
+
83
+ }, 500);
84
+
85
+
86
+
87
+ }
88
+
89
+ ```
90
+
91
+ ご定義いただいているstyleをそのまま利用します。
92
+
93
+ Cardコンポーネントをdivタグで代用し上記で動作いたしました。
94
+
95
+
96
+
79
- ご参考になれば幸いです。
97
+ もっと良い方法があるかもしれませんが、ご参考になれば幸いです。