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

質問編集履歴

1

jsとhtmlの追記

2017/05/07 03:22

投稿

yoshimitsu41
yoshimitsu41

スコア36

title CHANGED
File without changes
body CHANGED
@@ -12,6 +12,21 @@
12
12
  よろしくお願いいたします。
13
13
 
14
14
  ```html
15
+
16
+ <body class="drawer drawer--right">
17
+ <header role="banner">
18
+ <button type="button" class="drawer-toggle drawer-hamburger">
19
+ <span class="sr-only">toggle navigation</span>
20
+ <span class="drawer-hamburger-icon"></span>
21
+ </button>
22
+ <nav class="drawer-nav" role="navigation">
23
+ <ul class="drawer-menu">
24
+ <li><a class="drawer-menu-item" href="/"><i class="fa fa-home" aria-hidden="true"></i>Home</a></li>
25
+ <li><a class="drawer-menu-item" href=""><i class="fa fa-sign-in" aria-hidden="true"></i>お問合わせ</a></li>
26
+ </ul>
27
+ </nav>
28
+ </header>
29
+
15
30
  <div class="search">
16
31
  <div class="container">
17
32
  <div class="row">
@@ -63,4 +78,205 @@
63
78
  </div>
64
79
  </div>
65
80
 
81
+
82
+ <script type="text/javascript">
83
+ $(document).ready(function() {
84
+ $('.drawer').drawer({
85
+ class: {
86
+ navClass: 'drawer-nav',
87
+ toggle: 'drawer-toggle',
88
+ overlay: 'drawer-overlay',
89
+ open: 'drawer-open',
90
+ close: 'drawer-close',
91
+ dropdown: 'drawer-dropdown'
92
+ }});
93
+
94
+ });
95
+ </script>
96
+
97
+ ```
98
+
99
+ ```javascript
100
+ /*!
101
+ * jquery-drawer v3.2.2
102
+ * Flexible drawer menu using jQuery, iScroll and CSS.
103
+ * http://git.blivesta.com/drawer
104
+ * License : MIT
105
+ * Author : blivesta <design@blivesta.com> (http://blivesta.com/)
106
+ */
107
+
108
+ ;(function umd(factory) {
109
+ 'use strict';
110
+ if (typeof define === 'function' && define.amd) {
111
+ define(['jquery'], factory);
112
+ } else if (typeof exports === 'object') {
113
+ module.exports = factory(require('jquery'));
114
+ } else {
115
+ factory(jQuery);
116
+ }
117
+ }(function Drawer($) {
118
+ 'use strict';
119
+ var namespace = 'drawer';
120
+ var touches = typeof document.ontouchstart != 'undefined';
121
+ var __ = {
122
+ init: function init(options) {
123
+ options = $.extend({
124
+ iscroll: {
125
+ mouseWheel: true,
126
+ preventDefault: false
127
+ },
128
+ showOverlay: true
129
+ }, options);
130
+
131
+ __.settings = {
132
+ state: false,
133
+ events: {
134
+ opened: 'drawer.opened',
135
+ closed: 'drawer.closed'
136
+ },
137
+ dropdownEvents: {
138
+ opened: 'shown.bs.dropdown',
139
+ closed: 'hidden.bs.dropdown'
140
+ }
141
+ };
142
+
143
+ __.settings.class = $.extend({
144
+ nav: 'drawer-nav',
145
+ toggle: 'drawer-toggle',
146
+ overlay: 'drawer-overlay',
147
+ open: 'drawer-open',
148
+ close: 'drawer-close',
149
+ dropdown: 'drawer-dropdown'
150
+ }, options.class);
151
+
152
+ return this.each(function instantiateDrawer() {
153
+ var _this = this;
154
+ var $this = $(this);
155
+ var data = $this.data(namespace);
156
+
157
+ if (!data) {
158
+ options = $.extend({}, options);
159
+ $this.data(namespace, { options: options });
160
+
161
+ __.refresh.call(_this);
162
+
163
+ if (options.showOverlay) {
164
+ __.addOverlay.call(_this);
165
+ }
166
+
167
+ $('.' + __.settings.class.toggle).on('click.' + namespace, function toggle() {
168
+ __.toggle.call(_this);
169
+ return _this.iScroll.refresh();
170
+ });
171
+
172
+ $(window).on('resize.' + namespace, function close() {
173
+ __.close.call(_this);
174
+ return _this.iScroll.refresh();
175
+ });
176
+
177
+ $('.' + __.settings.class.dropdown)
178
+ .on(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed, function onOpenedOrClosed() {
179
+ return _this.iScroll.refresh();
180
+ });
181
+ }
182
+
183
+ }); // end each
184
+ },
185
+
186
+ refresh: function refresh() {
187
+ this.iScroll = new IScroll(
188
+ '.' + __.settings.class.nav,
189
+ $(this).data(namespace).options.iscroll
190
+ );
191
+ },
192
+
193
+ addOverlay: function addOverlay() {
194
+ var $this = $(this);
195
+ var $overlay = $('<div>').addClass(__.settings.class.overlay + ' ' + __.settings.class.toggle);
196
+
197
+ return $this.append($overlay);
198
+ },
199
+
200
+ toggle: function toggle() {
201
+ var _this = this;
202
+
203
+ if (__.settings.state) {
204
+ return __.close.call(_this);
205
+ } else {
206
+ return __.open.call(_this);
207
+ }
208
+ },
209
+
210
+ open: function open() {
211
+ var $this = $(this);
212
+
213
+ if (touches) {
214
+ $this.on('touchmove.' + namespace, function disableTouch(event) {
215
+ event.preventDefault();
216
+ });
217
+ }
218
+
219
+ return $this
220
+ .removeClass(__.settings.class.close)
221
+ .addClass(__.settings.class.open)
222
+ .drawerCallback(function triggerOpenedListeners() {
223
+ __.settings.state = true;
224
+ $this.trigger(__.settings.events.opened);
225
+ });
226
+ },
227
+
228
+ close: function close() {
229
+ var $this = $(this);
230
+
231
+ if (touches) $this.off('touchmove.' + namespace);
232
+
233
+ return $this
234
+ .removeClass(__.settings.class.open)
235
+ .addClass(__.settings.class.close)
236
+ .drawerCallback(function triggerClosedListeners() {
237
+ __.settings.state = false;
238
+ $this.trigger(__.settings.events.closed);
239
+ });
240
+ },
241
+
242
+ destroy: function destroy() {
243
+ return this.each(function destroyEach() {
244
+ var _this = this;
245
+ var $this = $(this);
246
+ $('.' + __.settings.class.toggle).off('click.' + namespace);
247
+ $(window).off('resize.' + namespace);
248
+ $('.' + __.settings.class.dropdown).off(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed);
249
+ _this.iScroll.destroy();
250
+ $this
251
+ .removeData(namespace)
252
+ .find('.' + __.settings.class.overlay)
253
+ .remove();
254
+ });
255
+ }
256
+
257
+ };
258
+
259
+ $.fn.drawerCallback = function drawerCallback(callback) {
260
+ var end = 'transitionend webkitTransitionEnd';
261
+ return this.each(function setAnimationEndHandler() {
262
+ var $this = $(this);
263
+ $this.on(end, function invokeCallbackOnAnimationEnd() {
264
+ $this.off(end);
265
+ return callback.call(this);
266
+ });
267
+ });
268
+ };
269
+
270
+ $.fn.drawer = function drawer(method) {
271
+ if (__[method]) {
272
+ return __[method].apply(this, Array.prototype.slice.call(arguments, 1));
273
+ } else if (typeof method === 'object' || !method) {
274
+ return __.init.apply(this, arguments);
275
+ } else {
276
+ $.error('Method ' + method + ' does not exist on jQuery.' + namespace);
277
+ }
278
+ };
279
+
280
+ }));
281
+
66
282
  ```