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

質問編集履歴

1

実際のコードを追加しました。

2021/05/23 04:40

投稿

otakedesu
otakedesu

スコア2

title CHANGED
File without changes
body CHANGED
@@ -25,4 +25,226 @@
25
25
  ・display:none;とfadeInを使いでPC画面の際はドロワーメニューを消す方法
26
26
  ・もしできなければ他のやりかたで表示くずれを防ぐ方法
27
27
 
28
- こちら2点の実装方法をご教授願います。
28
+ こちら2点の実装方法をご教授願います。
29
+
30
+ # 追加情報(該当のコード)
31
+ ```HTML
32
+ <header class="header">
33
+ <!-- hamburger -->
34
+ <button
35
+ type="button"
36
+ id="js-hamburger"
37
+ class="header__hamburfer hamburger"
38
+ aria-expanded="false"
39
+ >
40
+ <span class="hamburger__line"> </span>
41
+ </button>
42
+ <!-- drawer-background -->
43
+ <div
44
+ class="header__drawer-back drawer-background"
45
+ id="js-drawer-background"
46
+ ></div>
47
+ <!-- sp-menu -->
48
+ <div class="header__drawer drawer">
49
+ <div class="drawer__logo-box">
50
+ <a href="front-page.html" class="drawer__logo-link">
51
+ <img
52
+ src="/assets/images/common/logo.png"
53
+ alt="ロゴの写真"
54
+ class="drawer__logo"
55
+ />
56
+ </a>
57
+ </div>
58
+ <nav class="drawer__nav sp-menu" id="js-global-menu">
59
+ <ul class="sp-menu__list">
60
+ <li class="sp-menu__item">
61
+ <a href="front-page.html" class="sp-menu__link">ホーム</a>
62
+ </li>
63
+ <li class="sp-menu__item">
64
+ <a href="archive-news.html" class="sp-menu__link">お知らせ</a>
65
+ </li>
66
+ <li class="sp-menu__item">
67
+ <a href="home.html" class="sp-menu__link">ブログ</a>
68
+ </li>
69
+ <li class="sp-menu__item">
70
+ <a href="page-price.html" class="sp-menu__link">コース・料金</a>
71
+ </li>
72
+ </ul>
73
+ </nav>
74
+ <div class="drawer__button-area">
75
+ <div class="drawer__button-box">
76
+ <a href="#" class="drawer__button drawer__button--orange">資料請求</a>
77
+ </div>
78
+ <div class="drawer__button-box">
79
+ <a href="#" class="drawer__button drawer__button--blue">お問い合わせ</a>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </header>
84
+ ```
85
+ ```SCSS
86
+ // ハンバーガー
87
+ .hamburger {
88
+ position: fixed;
89
+ top: 16px;
90
+ right: 25px;
91
+ z-index: 50;
92
+ width: 48px;
93
+ height: 48px;
94
+ border-radius: 50%;
95
+ border: 1px solid black;
96
+ box-shadow: 0 0 rem(15) transparent;
97
+ outline: none;
98
+ transition: all 0.3s ease-in-out;
99
+ -webkit-transition: all 0.3s ease-in-out;
100
+ display: none;
101
+ }
102
+ @media screen and (max-width: 1,000px) {
103
+ .hamburger {
104
+ display: block;
105
+ }
106
+ }
107
+
108
+
109
+
110
+ // ハンバーガーの線
111
+ .hamburger__line {
112
+ position: absolute;
113
+ top: 0;
114
+ right: 0;
115
+ bottom: 0;
116
+ left: 0;
117
+ margin: auto;
118
+ width: 18px;
119
+ height: 2px;
120
+ background: black;
121
+ transition: inherit;
122
+ -webkit-transition: inherit;
123
+ &::before,
124
+ &::after {
125
+ position: absolute;
126
+ display: block;
127
+ width: 100%;
128
+ height: 100%;
129
+ background-color: inherit;
130
+ content: "";
131
+ transition: inherit;
132
+ -webkit-transition: inherit;
133
+ }
134
+ &::before {
135
+ top: -5px;
136
+ }
137
+ &::after {
138
+ top: 5px;
139
+ }
140
+ }
141
+
142
+
143
+
144
+ // ドロワー時背景マスク
145
+ .drawer-background {
146
+ position: fixed;
147
+ z-index: $layer-floating;
148
+ width: 100vw;
149
+ top: 0;
150
+ right: 0;
151
+ bottom: 0;
152
+ overflow: hidden;
153
+ height: 100vh;
154
+ background: black;
155
+ color: white;
156
+ visibility: hidden;
157
+ opacity: 0;
158
+ display: none;
159
+ }
160
+ @media screen and (max-width: 1,000px) {
161
+ .drawer-background {
162
+ display: block;
163
+ }
164
+ }
165
+
166
+
167
+
168
+ // spメニュー
169
+ .drawer {
170
+ position: fixed;
171
+ z-index: $layer-drawer;
172
+ width: 280px;
173
+ top: 0;
174
+ right: 0;
175
+ bottom: 0;
176
+ overflow: hidden;
177
+ height: 100vh;
178
+ background-color: white;
179
+ transform: translateX(280px);
180
+ transition: 0.3s;
181
+ display: none;
182
+ }
183
+ @media screen and (max-width: 1,000px) {
184
+ .drawer {
185
+ display: block;
186
+ }
187
+ }
188
+
189
+
190
+
191
+ // aria-expandedがtrueになったら
192
+ .hamburger[aria-expanded="true"] .hamburger__line {
193
+ background-color: transparent;
194
+ &::before,
195
+ &::after {
196
+ top: 0;
197
+ background-color: black;
198
+ }
199
+ }
200
+ .hamburger[aria-expanded="true"] .hamburger__line::before {
201
+ transform: rotate(45deg);
202
+ -webkit-transform: rotate(45deg);
203
+ -ms-transform: rotate(45deg);
204
+ }
205
+ .hamburger[aria-expanded="true"] .hamburger__line::after {
206
+ transform: rotate(-45deg);
207
+ -webkit-transform: rotate(-45deg);
208
+ -ms-transform: rotate(-45deg);
209
+ }
210
+
211
+
212
+
213
+ // jsでクラス追加
214
+ .is-drawerActive {
215
+ // 背景固定
216
+ height: 100%;
217
+ overflow: hidden;
218
+
219
+ .drawer {
220
+ transform: translateX(0px);
221
+ transition: 0.3s;
222
+ }
223
+ .drawer-background {
224
+ visibility: visible;
225
+ opacity: 0.8;
226
+ transition: 0.3s;
227
+ }
228
+ }
229
+ ```
230
+ ```JavaScript
231
+ $(function () {
232
+ $('#js-hamburger').click(function () {
233
+ $('body').toggleClass('is-drawerActive');
234
+
235
+ if ($(this).attr('aria-expanded') == 'false') {
236
+ $(this).attr('aria-expanded', 'true');
237
+ $('#js-global-menu').attr('area-hidden', 'false');
238
+ } else {
239
+ $(this).attr('aria-expanded', 'false');
240
+ $('#js-global-menu').attr('area-hidden', 'true');
241
+ }
242
+ });
243
+
244
+ $('#js-drawer-background').click(function () {
245
+ $('body').removeClass('is-drawerActive');
246
+ $('#js-hamburger').attr('aria-expanded', 'false');
247
+ $('#js-global-menu').attr('area-hidden', 'true');
248
+ });
249
+ });
250
+ ```