質問編集履歴

1

HTMLを修正しCSSを追加しました。

2021/02/18 10:55

投稿

tomo320
tomo320

スコア0

test CHANGED
File without changes
test CHANGED
@@ -2,148 +2,256 @@
2
2
 
3
3
 
4
4
 
5
- タブ切り替えコンテンツ内の要素768pxより小さい画面で表示した時のみslick.jsでスライドさせたいですが、jqueryの知識が乏しく上手く動作させることができません
5
+ slick.jsを使用し画面サイズ768px未満の時のみ、タブ切り替えコンテンツ内をスライドさせたいです。
6
+
6
-
7
+ 画面サイズに応じてスライドの有り無しを設定することはできました。
8
+
7
- ようにすればよいのかご教いただけますと助かります
9
+ しかしスライド有りタブを切り替えると表が崩れます。
10
+
8
-
11
+ ご助言を頂けたら幸いです。宜しくお願い致します。
9
-
10
-
12
+
13
+
14
+
11
- ### 発生している問題・エラメッセ
15
+ ### 該当のソスコ
16
+
12
-
17
+ ```HTML
18
+
13
-
19
+ <!DOCTYPE html>
20
+
21
+ <html lang="ja">
22
+
23
+ <head>
24
+
25
+ <meta charset="UTF-8">
26
+
27
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
28
+
29
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
30
+
31
+ <title>Document</title>
32
+
33
+ <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css"/>
34
+
35
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.css">
36
+
37
+ <link rel="stylesheet" type="text/css" href="style.css">
38
+
39
+ </head>
40
+
41
+ <body>
42
+
43
+
44
+
45
+ <ul class="tabmenu">
46
+
47
+ <li class="tab active">タブ1</li>
48
+
49
+ <li class="tab">タブ2</li>
50
+
51
+ </ul>
52
+
53
+
54
+
55
+ <div class="tab_content current">
56
+
57
+ <div class="tab_box">
58
+
59
+ <div class="tab_item">
60
+
61
+ タブ1の内容1
62
+
63
+ </div>
64
+
65
+ <div class="tab_item">
66
+
67
+ タブ1の内容2
68
+
69
+ </div>
70
+
71
+ </div>
72
+
73
+ </div>
74
+
75
+
76
+
77
+ <div class="tab_content">
78
+
79
+ <div class="tab_box">
80
+
81
+ <div class="tab_item">
82
+
83
+ タブ2の内容1
84
+
85
+ </div>
86
+
87
+ <div class="tab_item">
88
+
89
+ タブ2の内容2
90
+
91
+ </div>
92
+
93
+ </div>
94
+
95
+ </div>
96
+
97
+
98
+
99
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>
100
+
101
+ <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
102
+
103
+
104
+
105
+ <script>
106
+
107
+ //タブ切り替え
108
+
109
+ $('.tab').click(function(){
110
+
111
+ $('.active').removeClass('active');
112
+
113
+ $(this).addClass('active');
114
+
115
+ $('.current').removeClass('current');
116
+
117
+ const index = $(this).index();
118
+
119
+ $('.tab_content').eq(index).addClass('current');
120
+
121
+ });
122
+
123
+
124
+
125
+ //slider
126
+
127
+ const mediaQuery = window.matchMedia('(min-width: 768px)')
128
+
129
+ function checkBreakPoint(mql) {
130
+
131
+ if (mql.matches) {
132
+
133
+ $('.tab_box').slick('unslick');
134
+
135
+ } else {
136
+
137
+ $('.tab_box').slick({
138
+
139
+ autoplay: true,
140
+
141
+ arrow: true,
142
+
143
+ });
144
+
145
+ }
146
+
147
+ }
148
+
149
+ mediaQuery.addListener(checkBreakPoint)
150
+
151
+ checkBreakPoint(mediaQuery)
152
+
153
+ </script>
154
+
155
+
156
+
157
+ </body>
158
+
159
+ </html>
14
160
 
15
161
  ```
16
162
 
163
+ ```css
164
+
165
+ * {
166
+
167
+ margin: 0;
168
+
169
+ padding: 0;
170
+
171
+ list-style: none;
172
+
173
+ }
174
+
175
+ .tabmenu {
176
+
177
+ width: 80%;
178
+
179
+ margin: 10px auto;
180
+
181
+ display: flex;
182
+
17
- ウィンドウサイズによってスライダーのon、offを切り替えることはできたのですが、タブを切り替えると中身が空になります。
183
+ justify-content: space-between;
184
+
185
+ }
186
+
187
+ .tabmenu li {
188
+
189
+ cursor: pointer;
190
+
191
+ background: #e6e6e6;
192
+
193
+ border: 1px solid #6a6a6a;
194
+
195
+ width: 48%;
196
+
197
+ text-align: center;
198
+
199
+ height: 50px;
200
+
201
+ line-height: 50px;
202
+
203
+ }
204
+
205
+ .tabmenu li.active {
206
+
207
+ background: #7eb7bf;
208
+
209
+ }
210
+
211
+ .tab_content {
212
+
213
+ width: 80%;
214
+
215
+ margin: 0 auto;
216
+
217
+ border: 1px solid #6a6a6a;
218
+
219
+ display: none;
220
+
221
+ }
222
+
223
+ .tab_content.current {
224
+
225
+ display: block;
226
+
227
+ }
228
+
229
+ .tab_item {
230
+
231
+ width: 100%;
232
+
233
+ height: 50px;
234
+
235
+ line-height: 50px;
236
+
237
+ text-align: center;
238
+
239
+ background: #feffd6;
240
+
241
+ }
242
+
243
+ .tab_item:nth-of-type(odd) {
244
+
245
+ background: #c3dfc9;
246
+
247
+ }
248
+
249
+ .slick-prev:before,
250
+
251
+ .slick-next:before {
252
+
253
+ color: #000 !important;
254
+
255
+ }
18
256
 
19
257
  ```
20
-
21
-
22
-
23
- ### 該当のソースコード
24
-
25
-
26
-
27
- ```jQuery
28
-
29
- //タブ切り替え
30
-
31
- $('.tab').click(function(){
32
-
33
- $('.active').removeClass('active');
34
-
35
- $(this).addClass('active');
36
-
37
- $('.current').removeClass('current');
38
-
39
- const index = $(this).index();
40
-
41
- $('.tab_content').eq(index).addClass('current');
42
-
43
- });
44
-
45
-
46
-
47
-
48
-
49
- //slider
50
-
51
- const mediaQuery = window.matchMedia('(min-width: 768px)')
52
-
53
- function checkBreakPoint(mql) {
54
-
55
- if (mql.matches) {
56
-
57
- $('.tab_box').slick('unslick');
58
-
59
- } else {
60
-
61
- $('.tab_box').slick({
62
-
63
- autoplay: true,
64
-
65
- });
66
-
67
- }
68
-
69
- }
70
-
71
- mediaQuery.addListener(checkBreakPoint)
72
-
73
- checkBreakPoint(mediaQuery)
74
-
75
-
76
-
77
- ```
78
-
79
-
80
-
81
- ```HTML
82
-
83
- <ul class="tabmenu">
84
-
85
- <li class="tab active">タブ1</li>
86
-
87
- <li class="tab">タブ2</li>
88
-
89
- </ul>
90
-
91
-
92
-
93
- <div class="tab_content current">
94
-
95
- <div class="tab_box">
96
-
97
- <div class="tab_item">
98
-
99
- タブ1の内容
100
-
101
- </div>
102
-
103
- <div class="tab_item">
104
-
105
- タブ1の内容
106
-
107
- </div>
108
-
109
- </div>
110
-
111
- </div>
112
-
113
-
114
-
115
- <div class="tab_content">
116
-
117
- <div class="tab_box">
118
-
119
- <div class="tab_item">
120
-
121
- タブ2の内容
122
-
123
- </div>
124
-
125
- <div class="tab_item">
126
-
127
- タブ2の内容
128
-
129
- </div>
130
-
131
- </div>
132
-
133
- </div>
134
-
135
-
136
-
137
- ```
138
-
139
-
140
-
141
- ### 試したこと
142
-
143
-
144
-
145
- タブ2の初期状態がdisplay:none;となっているため起こる不具合という事は調べました。
146
-
147
- .slick('setPosition');を足せば良いというのは分かったのですが、jQueryを学び始めたばかりでどう書けばよいのか分かりません。
148
-
149
- ご助言を頂けたら幸いです。宜しくお願い致します