回答編集履歴

2

改善

2022/10/15 05:12

投稿

CODEMAN
CODEMAN

スコア56

test CHANGED
@@ -2,43 +2,155 @@
2
2
 
3
3
  必要なデータが揃ってから(TABを開いた時) new Swiper すればいいんじゃね?
4
4
  ってことで、やっつけ気味に書いたのが以下です(参考程度に)
5
- ```JavaScript
6
- var sliderOptions = { // Swiperオプション(共通)
7
- effect: 'slide',
8
- slidesPerView: 1.5,
9
- spaceBetween:10,
10
- centeredSlides : true,
11
- autoplay: {
12
- delay: 2000,
13
- },
14
- loop: true,
15
- pagination: {
16
- el: '.swiper-pagination',
17
- },
18
- navigation: {
19
- nextEl: '.swiper-button-next',
20
- prevEl: '.swiper-button-prev',
21
- },
22
- scrollbar: {
23
- el: '.swiper-scrollbar',
24
- },
25
- };
26
-
27
- var slider1 = new Swiper ('.slider1', sliderOptions); // 最初に開いているTAB
28
- var sliders = [slider1, null, null]; // TAB(input要素)と紐付けするSwiperオジェクトリ
29
-
30
- document.addEventListener('change', function (e) {
31
- var target = e.target;
32
- if (target.name !== 'tab_item') return false; // name属性で選別
33
- var elemList = document.getElementsByName('tab_item'); // 対象要素リスト
34
- for (var i = 0; i < elemList.length; i++) {
35
- if (target === elemList[i]) { // 開いたTAB番号(i)を見付ける
36
- // 紐付けたSwiperオブジェクトがnullなら new Swiper(始動)
37
- // でなければ停止中を確認してstart()
38
- if (sliders[i] === null) sliders[i] = new Swiper ('.slider' + (i + 1), sliderOptions); // class名: '.slider' + (i + 1)
39
- else if (!sliders[i].autoplay.running) sliders[i].autoplay.start();
40
- } else if (sliders[i] && sliders[i].autoplay.running) sliders[i].autoplay.stop(); // 開いたTAB以外は停止
41
- }
42
- return true;
43
- });
5
+ ```html
6
+ <!DOCTYPE html>
7
+ <html lang="ja">
8
+ <head>
9
+ <title>Untitled</title>
10
+ <!-- Swiper css -->
11
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.css">
12
+ <!-- Swiper js -->
13
+ <script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>
14
+ <style>
15
+ /*
16
+ 【CSS】CSSだけでタブ切り替えを作る方法
17
+ https://bagelee.com/design/css/create_tabs_using_only_css/
18
+ */
19
+ /*タブ切り替え全体のスタイル */
20
+ .tabs {
21
+ margin-top: 50px;
22
+ padding-bottom: 40px;
23
+ background-color: #fff;
24
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
25
+ width: 700px;
26
+ margin: 0 auto;}
27
+
28
+ /*タタイル*/
29
+ .tab_item {
30
+ width: calc(100%/3);
31
+ height: 50px;
32
+ border-bottom: 3px solid #5ab4bd;
33
+ background-color: #d9d9d9;
34
+ line-height: 50px;
35
+ font-size: 16px;
36
+ text-align: center;
37
+ color: #565656;
38
+ display: block;
39
+ float: left;
40
+ text-align: center;
41
+ font-weight: bold;
42
+ transition: all 0.2s ease;
43
+ }
44
+ .tab_item:hover {
45
+ opacity: 0.75;
46
+ }
47
+
48
+ /*ラジオボタンを全て消す*/
49
+ input[name="tab_item"] {
50
+ display: none;
51
+ }
52
+
53
+ /*タブ切り替えの中身のスタイル*/
54
+ .tab_content {
55
+ display: none;
56
+ padding: 40px 40px 0;
57
+ clear: both;
58
+ overflow: hidden;
59
+ }
60
+
61
+
62
+ /*選択されているタブのコンテンツのみを表示*/
63
+ #all:checked ~ #all_content,
64
+ #programming:checked ~ #programming_content,
65
+ #design:checked ~ #design_content {
66
+ display: block;
67
+ }
68
+
69
+ /*選択されているタブのスタイルを変える*/
70
+ .tabs input:checked + .tab_item {
71
+ background-color: #5ab4bd;
72
+ color: #fff;
73
+ }
74
+ </style>
75
+ </head>
76
+ <body>
77
+ <!--
78
+ 【CSS】CSSだけでタブ切り替えを作る方法
79
+ https://bagelee.com/design/css/create_tabs_using_only_css/
80
+ -->
81
+ <div class="tabs">
82
+ <input id="all" type="radio" name="tab_item" checked> <label class="tab_item" for="all">総合</label>
83
+ <input id="programming" type="radio" name="tab_item"> <label class="tab_item" for="programming">プログラミング</label>
84
+ <input id="design" type="radio" name="tab_item"> <label class="tab_item" for="design">デザイン</label>
85
+ <div class="tab_content" id="all_content">
86
+ <div class="swiper-container slider1">
87
+ <div class="swiper-wrapper">
88
+ <div class="swiper-slide">slider1-1</div>
89
+ <div class="swiper-slide">slider1-2</div>
90
+ <div class="swiper-slide">slider1-3</div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <div class="tab_content" id="programming_content">
95
+ <div class="swiper-container slider2">
96
+ <div class="swiper-wrapper">
97
+ <div class="swiper-slide">slider2-1</div>
98
+ <div class="swiper-slide">slider2-2</div>
99
+ <div class="swiper-slide">slider2-3</div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ <div class="tab_content" id="design_content">
104
+ <div class="swiper-container slider3">
105
+ <div class="swiper-wrapper">
106
+ <div class="swiper-slide">slider3-1</div>
107
+ <div class="swiper-slide">slider3-2</div>
108
+ <div class="swiper-slide">slider3-3</div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <script>
114
+ // Swiper https://swiperjs.com/
115
+ var sliderOptions = { // Swiperオプション(共通)
116
+ effect: 'slide',
117
+ slidesPerView: 1.5,
118
+ spaceBetween:10,
119
+ centeredSlides : true,
120
+ autoplay: {
121
+ delay: 2000,
122
+ },
123
+ loop: true,
124
+ pagination: {
125
+ el: '.swiper-pagination',
126
+ },
127
+ navigation: {
128
+ nextEl: '.swiper-button-next',
129
+ prevEl: '.swiper-button-prev',
130
+ },
131
+ scrollbar: {
132
+ el: '.swiper-scrollbar',
133
+ }
134
+ };
135
+
136
+ var slider1 = new Swiper ('.slider1', sliderOptions); // 最初に開いているTAB
137
+ var sliders = [slider1, null, null]; // TAB(input要素)と紐付けするSwiperオブジェクトリスト
138
+
139
+ document.addEventListener('change', function (e) {
140
+ var target = e.target;
141
+ if (target.name !== 'tab_item') return false; // name属性で選別
142
+ var elemList = document.getElementsByName('tab_item'); // 対象要素リスト
143
+ for (var i = 0; i < elemList.length; i++) {
144
+ if (target === elemList[i]) { // 開いたTAB番号(i)を見付ける
145
+ // 紐付けたSwiperオブジェクトがnullなら new Swiper(始動)
146
+ // でなければ停止中を確認してstart()
147
+ if (sliders[i] === null) sliders[i] = new Swiper ('.slider' + (i + 1), sliderOptions); // class名: '.slider' + (i + 1)
148
+ else if (!sliders[i].autoplay.running) sliders[i].autoplay.start();
149
+ } else if (sliders[i] && sliders[i].autoplay.running) sliders[i].autoplay.stop(); // 開いたTAB以外は停止
150
+ }
151
+ return true;
152
+ });
153
+ </script>
154
+ </body>
155
+ </html>
44
156
  ```

1

コード修正

2022/10/14 07:59

投稿

CODEMAN
CODEMAN

スコア56

test CHANGED
@@ -41,4 +41,4 @@
41
41
  }
42
42
  return true;
43
43
  });
44
- ```
44
+ ```