teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2021/02/18 10:55

投稿

tomo320
tomo320

スコア0

title CHANGED
File without changes
body CHANGED
@@ -1,27 +1,65 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- タブ切り替えコンテンツ内の要素768pxより小さい画面で表示した時のみslick.jsでスライドさせたいですが、jqueryの知識が乏しく上手く動作させることができません
3
+ slick.jsを使用し画面サイズ768px未満の時のみ、タブ切り替えコンテンツ内をスライドさせたいです。
4
+ 画面サイズに応じてスライドの有り無しを設定することはできました。
4
- どのようにすればよいのか、ご教いただけますと助かります
5
+ しスライド有りの時タブを切り替えると表が崩れます。
6
+ ご助言を頂けたら幸いです。宜しくお願い致します。
5
7
 
6
- ### 発生している問題・エラメッセ
8
+ ### 該当のソスコ
9
+ ```HTML
10
+ <!DOCTYPE html>
11
+ <html lang="ja">
12
+ <head>
13
+ <meta charset="UTF-8">
14
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
15
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
16
+ <title>Document</title>
17
+ <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css"/>
18
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.css">
19
+ <link rel="stylesheet" type="text/css" href="style.css">
20
+ </head>
21
+ <body>
7
22
 
8
- ```
23
+ <ul class="tabmenu">
9
- ウィンドウサイズによってスライダーのon、offを切り替えることはできたのですが、タブを切り替えると中身が空になります。
24
+ <li class="tab active">タブ1</li>
25
+ <li class="tab">タブ2</li>
10
- ```
26
+ </ul>
11
27
 
28
+ <div class="tab_content current">
29
+ <div class="tab_box">
30
+ <div class="tab_item">
31
+ タブ1の内容1
12
- ### 該当のソースコード
32
+ </div>
33
+ <div class="tab_item">
34
+ タブ1の内容2
35
+ </div>
36
+ </div>
37
+ </div>
13
38
 
39
+ <div class="tab_content">
40
+ <div class="tab_box">
41
+ <div class="tab_item">
14
- ```jQuery
42
+ タブ2の内容1
43
+ </div>
44
+ <div class="tab_item">
45
+ タブ2の内容2
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>
51
+ <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
52
+
53
+ <script>
15
54
  //タブ切り替え
16
55
  $('.tab').click(function(){
17
- $('.active').removeClass('active');
56
+ $('.active').removeClass('active');
18
- $(this).addClass('active');
57
+ $(this).addClass('active');
19
- $('.current').removeClass('current');
58
+ $('.current').removeClass('current');
20
- const index = $(this).index();
59
+ const index = $(this).index();
21
- $('.tab_content').eq(index).addClass('current');
60
+ $('.tab_content').eq(index).addClass('current');
22
61
  });
23
62
 
24
-
25
63
  //slider
26
64
  const mediaQuery = window.matchMedia('(min-width: 768px)')
27
65
  function checkBreakPoint(mql) {
@@ -30,46 +68,62 @@
30
68
  } else {
31
69
  $('.tab_box').slick({
32
70
  autoplay: true,
71
+ arrow: true,
33
72
  });
34
73
  }
35
74
  }
36
75
  mediaQuery.addListener(checkBreakPoint)
37
76
  checkBreakPoint(mediaQuery)
77
+ </script>
38
78
 
79
+ </body>
80
+ </html>
39
81
  ```
40
-
41
- ```HTML
82
+ ```css
83
+ * {
84
+ margin: 0;
42
- <ul class="tabmenu">
85
+ padding: 0;
43
- <li class="tab active">タブ1</li>
44
- <li class="tab">タブ2</li>
45
- </ul>
86
+ list-style: none;
46
-
87
+ }
88
+ .tabmenu {
89
+ width: 80%;
90
+ margin: 10px auto;
91
+ display: flex;
92
+ justify-content: space-between;
93
+ }
94
+ .tabmenu li {
95
+ cursor: pointer;
96
+ background: #e6e6e6;
97
+ border: 1px solid #6a6a6a;
98
+ width: 48%;
99
+ text-align: center;
100
+ height: 50px;
101
+ line-height: 50px;
102
+ }
103
+ .tabmenu li.active {
104
+ background: #7eb7bf;
105
+ }
106
+ .tab_content {
107
+ width: 80%;
108
+ margin: 0 auto;
109
+ border: 1px solid #6a6a6a;
110
+ display: none;
111
+ }
47
- <div class="tab_content current">
112
+ .tab_content.current {
113
+ display: block;
114
+ }
115
+ .tab_item {
116
+ width: 100%;
117
+ height: 50px;
118
+ line-height: 50px;
48
- <div class="tab_box">
119
+ text-align: center;
120
+ background: #feffd6;
121
+ }
49
- <div class="tab_item">
122
+ .tab_item:nth-of-type(odd) {
123
+ background: #c3dfc9;
124
+ }
50
- タブ1の内容
125
+ .slick-prev:before,
126
+ .slick-next:before {
51
- </div>
127
+ color: #000 !important;
52
- <div class="tab_item">
53
- タブ1の内容
128
+ }
54
- </div>
55
- </div>
56
- </div>
57
-
58
- <div class="tab_content">
59
- <div class="tab_box">
60
- <div class="tab_item">
61
- タブ2の内容
62
- </div>
63
- <div class="tab_item">
64
- タブ2の内容
65
- </div>
66
- </div>
67
- </div>
68
-
69
- ```
129
+ ```
70
-
71
- ### 試したこと
72
-
73
- タブ2の初期状態がdisplay:none;となっているため起こる不具合という事は調べました。
74
- .slick('setPosition');を足せば良いというのは分かったのですが、jQueryを学び始めたばかりでどう書けばよいのか分かりません。
75
- ご助言を頂けたら幸いです。宜しくお願い致します