Demo

Der verwendete Code hier

	


		
		

Demo

  1. <style>
  2. main *,
  3. main *:before,
  4. main *:after { border-radius: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0; outline: none; padding: 0; }
  5. main a { color: #16A085; text-decoration: none; -webkit-transition: all 300ms ease; -moz-transition: all 300ms ease; -o-transition: all 300ms ease; transition: all 300ms ease; }
  6. main a:hover { color: #1ABC9C; }
  7. main h1 { font-weight: 300; }
  8. main h2 { font-weight: 300; margin: 3em 0 1em 0; }
  9. main p { margin: 2em 0; }
  10. main pre { background: #34495E; color: #ECF0F1; line-height: 1.4; padding: 2em; tab-size: 4; }
  11. main header,
  12. main section,
  13. main #menu { background: #7F8C8D; }
  14. main #menu a { color: #FFF; }
  15. @media (max-width: 64rem) {
  16. main h2 { margin-top: 2em; }
  17. }
  18. main .sliding-menu { overflow: hidden; position: relative; }
  19. main .sliding-menu ul { float: left; margin: 0; }
  20. main .sliding-menu li { list-style: none; margin: 0; }
  21. main .sliding-menu a { display: block; padding: 1em; }
  22. main .sliding-menu a:hover { background: #333; color: #FFF; }
  23. main .sliding-menu a.nav:before { content: '\3009'; float: right; margin-left: 1em; }
  24. main .sliding-menu a.back { background: #555; color: #FFF; }
  25. main .sliding-menu a.back:before { content: '\3008'; float: left; margin-right: 1em; }
  26. </style>
  27. <script src="/js/index.php?js=jquery.js"></script>
  28. <script>
  29. (function($){
  30. var usedIds = [];
  31. $.fn.menu = function(options){
  32. var selector = this.selector;
  33. var settings = $.extend({
  34. dataJSON: false,
  35. backLabel: 'Back'
  36. }, options);
  37. return this.each(function(){
  38. var self = this,
  39. menu = $(self),
  40. data;
  41. if (menu.hasClass('sliding-menu')){
  42. return;
  43. }
  44. var menuWidth = menu.width();
  45. if (settings.dataJSON){
  46. data = processJSON(settings.dataJSON);
  47. }else{
  48. data = process(menu);
  49. }
  50. menu.empty().addClass('sliding-menu');
  51. var rootPanel;
  52. if (settings.dataJSON){
  53. $(data).each(function(index, item){
  54. var panel = $('<ul></ul>');
  55. if (item.root){
  56. rootPanel = '#' + item.id;
  57. }
  58. panel.attr('id', item.id);
  59. panel.addClass('menu-panel');
  60. panel.width(menuWidth);
  61. $(item.children).each(function(index, item){
  62. var link = $('<a></a>');
  63. link.attr('class', item.styleClass);
  64. link.attr('href', item.href);
  65. link.text(item.label);
  66. var li = $('<li></li>');
  67. li.append(link);
  68. panel.append(li);
  69. });
  70. menu.append(panel);
  71. });
  72. }else{
  73. $(data).each(function(index, item){
  74. var panel = $(item);
  75. if (panel.hasClass('menu-panel-root')){
  76. rootPanel = '#' + panel.attr('id');
  77. }
  78. panel.width(menuWidth);
  79. menu.append(item);
  80. });
  81. }
  82. rootPanel = $(rootPanel);
  83. rootPanel.addClass('menu-panel-root');
  84. var currentPanel = rootPanel;
  85. menu.height(rootPanel.height());
  86. var wrapper = $('<div></div>').addClass('sliding-menu-wrapper').width(data.length * menuWidth);
  87. menu.wrapInner(wrapper);
  88. wrapper = $('.sliding-menu-wrapper', menu);
  89. $('a', self).on('click', function(e){
  90. var href = $(this).attr('href'),
  91. label = $(this).text();
  92. if (wrapper.is(':animated')){
  93. e.preventDefault();
  94. return;
  95. }
  96. if (href == '#'){
  97. e.preventDefault();
  98. }else if (href.indexOf('#menu-panel') == 0){
  99. var target = $(href),
  100. isBack = $(this).hasClass('back'),
  101. marginLeft = parseInt(wrapper.css('margin-left'));
  102. if (isBack){
  103. if (href == '#menu-panel-back'){
  104. target = currentPanel.prev();
  105. }
  106. wrapper.stop(true, true).animate({
  107. marginLeft: marginLeft + menuWidth
  108. }, 'fast');
  109. }else{
  110. target.insertAfter(currentPanel);
  111. if (settings.backLabel === true){
  112. $('.back', target).text(label);
  113. }else{
  114. $('.back', target).text(settings.backLabel);
  115. }
  116. wrapper.stop(true, true).animate({
  117. marginLeft: marginLeft - menuWidth
  118. }, 'fast');
  119. }
  120. currentPanel = target;
  121. menu.stop(true, true).animate({
  122. height: target.height()
  123. }, 'fast');
  124. e.preventDefault();
  125. }
  126. });
  127. return this;
  128. });
  129. function process(data){
  130. var ul = $('ul', data),
  131. panels = [];
  132. $(ul).each(function(index, item){
  133. var panel = $(item),
  134. handler = panel.prev(),
  135. id = getNewId();
  136. if (handler.length == 1){
  137. handler.addClass('nav').attr('href', '#menu-panel-' + id);
  138. }
  139. panel.attr('id', 'menu-panel-' + id);
  140. if (index == 0){
  141. panel.addClass('menu-panel-root');
  142. }else{
  143. panel.addClass('menu-panel');
  144. var li = $('<li></li>'),
  145. back = $('<a></a>').addClass('back').attr('href', '#menu-panel-back');
  146. panel.prepend(back);
  147. }
  148. panels.push(item);
  149. });
  150. return panels;
  151. }
  152. function processJSON(data, parent){
  153. var root = { id: 'menu-panel-' + getNewId(), children: [], root: (parent ? false : true) },
  154. panels = [];
  155. if (parent){
  156. root.children.push({
  157. styleClass: 'back',
  158. href: '#' + parent.id
  159. });
  160. }
  161. $(data).each(function(index, item){
  162. root.children.push(item);
  163. if (item.children){
  164. var panel = processJSON(item.children, root);
  165. item.href = '#' + panel[0].id;
  166. item.styleClass = 'nav';
  167. panels = panels.concat(panel);
  168. }
  169. });
  170. return [root].concat(panels);
  171. }
  172. function getNewId(){
  173. var id;
  174. do{
  175. id = Math.random().toString(36).substring(3, 8);
  176. }
  177. while (usedIds.indexOf(id) >= 0);
  178. usedIds.push(id);
  179. return id;
  180. }
  181. };
  182. } (jQuery));
  183. </script>
  184. <script>
  185. $(document).ready(function(){
  186. $('#menu').menu();
  187. });
  188. </script>
  189. <section>
  190. <h2>Demo</h2>
  191. <div id="menu">
  192. <ul>
  193. <li>
  194. <a href="#">Artists</a>
  195. <ul>
  196. <li>
  197. <a href="#">Aerosmith</a>
  198. <ul>
  199. <li>
  200. <a href="#">Get Your Wings</a>
  201. <ul>
  202. <li>
  203. <a href="#">Train Kept A-Rollin'</a>
  204. </li>
  205. <li>
  206. <a href="#">Same Old Song and Dance</a>
  207. </li>
  208. </ul>
  209. </li>
  210. </ul>
  211. </li>
  212. <li>
  213. <a href="#">Eagles</a>
  214. <ul>
  215. <li>
  216. <a href="#">Hotel California</a>
  217. <ul>
  218. <li>
  219. <a href="#">Hotel California</a>
  220. </li>
  221. <li>
  222. <a href="#">Pretty Maids All in a Row</a>
  223. </li>
  224. </ul>
  225. </li>
  226. </ul>
  227. </li>
  228. <li>
  229. <a href="#">Led Zeppelin</a>
  230. <ul>
  231. <li>
  232. <a href="#">Physical Graffiti</a>
  233. <ul>
  234. <li>
  235. <a href="#">In My Time of Dying</a>
  236. </li>
  237. <li>
  238. <a href="#">Houses of the Holy</a>
  239. </li>
  240. </ul>
  241. </li>
  242. </ul>
  243. </li>
  244. </ul>
  245. </li>
  246. <li>
  247. <a href="#">Albums</a>
  248. <ul>
  249. <li>
  250. <a href="#">Get Your Wings</a>
  251. <ul>
  252. <li>
  253. <a href="#">Train Kept A-Rollin'</a>
  254. </li>
  255. <li>
  256. <a href="#">Same Old Song and Dance</a>
  257. </li>
  258. </ul>
  259. </li>
  260. <li>
  261. <a href="#">Hotel California</a>
  262. <ul>
  263. <li>
  264. <a href="#">Hotel California</a>
  265. </li>
  266. <li>
  267. <a href="#">Pretty Maids All in a Row</a>
  268. </li>
  269. </ul>
  270. </li>
  271. <li>
  272. <a href="#">Physical Graffiti</a>
  273. <ul>
  274. <li>
  275. <a href="#">In My Time of Dying</a>
  276. </li>
  277. <li>
  278. <a href="#">Houses of the Holy</a>
  279. </li>
  280. </ul>
  281. </li>
  282. </ul>
  283. </li>
  284. <li>
  285. <a href="#">Songs</a>
  286. <ul>
  287. <li>
  288. <a href="#">In My Time of Dying</a>
  289. </li>
  290. <li>
  291. <a href="#">Houses of the Holy</a>
  292. </li>
  293. <li>
  294. <a href="#">Hotel California</a>
  295. </li>
  296. <li>
  297. <a href="#">Pretty Maids All in a Row</a>
  298. </li>
  299. <li>
  300. <a href="#">Train Kept A-Rollin'</a>
  301. </li>
  302. <li>
  303. <a href="#">Same Old Song and Dance</a>
  304. </li>
  305. </ul>
  306. </li>
  307. <li>
  308. <a href="#">Genres</a>
  309. <ul>
  310. <li>
  311. <a href="#">Rock</a>
  312. <ul>
  313. <li>
  314. <a href="#">Hotel California</a>
  315. </li>
  316. <li>
  317. <a href="#">Pretty Maids All in a Row</a>
  318. </li>
  319. <li>
  320. <a href="#">Train Kept A-Rollin'</a>
  321. </li>
  322. <li>
  323. <a href="#">Same Old Song and Dance</a>
  324. </li>
  325. </ul>
  326. </li>
  327. <li>
  328. <a href="#">Hard rock</a>
  329. <ul>
  330. <li>
  331. <a href="#">In My Time of Dying</a>
  332. </li>
  333. <li>
  334. <a href="#">Houses of the Holy</a>
  335. </li>
  336. </ul>
  337. </li>
  338. </ul>
  339. </li>
  340. <li>
  341. <a href="#">Settings</a>
  342. <ul>
  343. <li>
  344. <a href="#">Profile</a>
  345. </li>
  346. <li>
  347. <a href="#">Player</a>
  348. <ul>
  349. <li>
  350. <a href="#">Volume</a>
  351. </li>
  352. <li>
  353. <a href="#">Equalizer</a>
  354. </li>
  355. </ul>
  356. </li>
  357. </ul>
  358. </li>
  359. </ul>
  360. </div>
  361. </section>
	<style>

	main *,
	main *:before,
	main *:after { border-radius: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0; outline: none; padding: 0; }

	main a { color: #16A085; text-decoration: none; -webkit-transition: all 300ms ease; -moz-transition: all 300ms ease; -o-transition: all 300ms ease; transition: all 300ms ease; }

	main a:hover { color: #1ABC9C; }
	main h1 { font-weight: 300; }
	main h2 { font-weight: 300; margin: 3em 0 1em 0; }
	main p { margin: 2em 0; }
	main pre { background: #34495E; color: #ECF0F1; line-height: 1.4; padding: 2em; tab-size: 4; }
	main header,
	main section,
	main #menu { background: #7F8C8D; }
	main #menu a { color: #FFF; }
	@media (max-width: 64rem) {
	main h2 { margin-top: 2em; }
	}

main .sliding-menu { overflow: hidden; position: relative; }
main .sliding-menu ul { float: left; margin: 0; }
main .sliding-menu li { list-style: none; margin: 0; }
main .sliding-menu a { display: block; padding: 1em; }
main .sliding-menu a:hover { background: #333; color: #FFF; }
main .sliding-menu a.nav:before { content: '\3009'; float: right; margin-left: 1em; }
main .sliding-menu a.back { background: #555; color: #FFF; }
main .sliding-menu a.back:before { content: '\3008'; float: left; margin-right: 1em; }
  
</style>
<script src="/js/index.php?js=jquery.js"></script>
<script>

(function($){
	var usedIds = [];

	$.fn.menu = function(options){
		var selector = this.selector;
		var settings = $.extend({
			dataJSON: false,
			backLabel: 'Back'

		}, options);

		return this.each(function(){
			var self = this,
				menu = $(self),
				data;

			if (menu.hasClass('sliding-menu')){
				return;
			}
			var menuWidth = menu.width();

			if (settings.dataJSON){
				data = processJSON(settings.dataJSON);
			}else{
				data = process(menu);
			}

			menu.empty().addClass('sliding-menu');

			var rootPanel;

			if (settings.dataJSON){
				$(data).each(function(index, item){
					var panel = $('<ul></ul>');

					if (item.root){
						rootPanel = '#' + item.id;
					}
					panel.attr('id', item.id);
					panel.addClass('menu-panel');
					panel.width(menuWidth);

					$(item.children).each(function(index, item){
						var link = $('<a></a>');

						link.attr('class', item.styleClass);
						link.attr('href', item.href);
						link.text(item.label);
						var li = $('<li></li>');
						li.append(link);
						panel.append(li);
					});
					menu.append(panel);

				});
			}else{
				$(data).each(function(index, item){
					var panel = $(item);

					if (panel.hasClass('menu-panel-root')){
						rootPanel = '#' + panel.attr('id');
					}
					panel.width(menuWidth);
					menu.append(item);
				});
			}

			rootPanel = $(rootPanel);
			rootPanel.addClass('menu-panel-root');
			var currentPanel = rootPanel;
			menu.height(rootPanel.height());
			var wrapper = $('<div></div>').addClass('sliding-menu-wrapper').width(data.length * menuWidth);
			menu.wrapInner(wrapper);
			wrapper = $('.sliding-menu-wrapper', menu);
			$('a', self).on('click', function(e){
				var href = $(this).attr('href'),
					label = $(this).text();

				if (wrapper.is(':animated')){
					e.preventDefault();
					return;
				}

				if (href == '#'){
					e.preventDefault();
				}else if (href.indexOf('#menu-panel') == 0){
					var target = $(href),
					isBack = $(this).hasClass('back'),
					marginLeft = parseInt(wrapper.css('margin-left'));

					if (isBack){
						if (href == '#menu-panel-back'){
							target = currentPanel.prev();
						}

						wrapper.stop(true, true).animate({
						marginLeft: marginLeft + menuWidth
						}, 'fast');
					}else{
						target.insertAfter(currentPanel);
						if (settings.backLabel === true){
							$('.back', target).text(label);
						}else{
							$('.back', target).text(settings.backLabel);
						}
						wrapper.stop(true, true).animate({
							marginLeft: marginLeft - menuWidth
						}, 'fast');
					}
					currentPanel = target;
					menu.stop(true, true).animate({
						height: target.height()
					}, 'fast');
					e.preventDefault();
				}
			});
			return this;
		});

		function process(data){
			var ul = $('ul', data),
			panels = [];
			$(ul).each(function(index, item){
				var panel = $(item),
				handler = panel.prev(),
				id = getNewId();

				if (handler.length == 1){
					handler.addClass('nav').attr('href', '#menu-panel-' + id);
				}
				panel.attr('id', 'menu-panel-' + id);
				if (index == 0){
					panel.addClass('menu-panel-root');
				}else{
					panel.addClass('menu-panel');
					var li = $('<li></li>'),
					back = $('<a></a>').addClass('back').attr('href', '#menu-panel-back');
					panel.prepend(back);
				}
				panels.push(item);
			});
			return panels;
		}

		function processJSON(data, parent){
			var root = { id: 'menu-panel-' + getNewId(), children: [], root: (parent ? false : true) },
			panels = [];
			if (parent){
				root.children.push({
					styleClass: 'back',
					href: '#' + parent.id
				});
			}
			$(data).each(function(index, item){
				root.children.push(item);
				if (item.children){
					var panel = processJSON(item.children, root);
					item.href = '#' + panel[0].id;
					item.styleClass = 'nav';
					panels = panels.concat(panel);
				}
			});
			return [root].concat(panels);
		}

		function getNewId(){
			var id;
			do{
				id = Math.random().toString(36).substring(3, 8);
			}
			while (usedIds.indexOf(id) >= 0);
			usedIds.push(id);
			return id;
		}
	};
} (jQuery));
		</script>
		<script>
			$(document).ready(function(){
				$('#menu').menu();
			});
		</script>
		<section>
			<h2>Demo</h2>
			<div id="menu">
				<ul>
					<li>
						<a href="#">Artists</a>
						<ul>
							<li>
								<a href="#">Aerosmith</a>
								<ul>
									<li>
										<a href="#">Get Your Wings</a>
										<ul>
											<li>
												<a href="#">Train Kept A-Rollin'</a>
											</li>
											<li>
												<a href="#">Same Old Song and Dance</a>
											</li>
										</ul>
									</li>
								</ul>
							</li>
							<li>
								<a href="#">Eagles</a>
								<ul>
									<li>
										<a href="#">Hotel California</a>
										<ul>
											<li>
												<a href="#">Hotel California</a>
											</li>
											<li>
												<a href="#">Pretty Maids All in a Row</a>
											</li>
										</ul>
									</li>
								</ul>
							</li>
							<li>
								<a href="#">Led Zeppelin</a>
								<ul>
									<li>
										<a href="#">Physical Graffiti</a>
										<ul>
											<li>
												<a href="#">In My Time of Dying</a>
											</li>
											<li>
												<a href="#">Houses of the Holy</a>
											</li>
										</ul>
									</li>
								</ul>
							</li>
						</ul>
					</li>
					<li>
						<a href="#">Albums</a>
						<ul>
							<li>
								<a href="#">Get Your Wings</a>
								<ul>
									<li>
										<a href="#">Train Kept A-Rollin'</a>
									</li>
									<li>
										<a href="#">Same Old Song and Dance</a>
									</li>
								</ul>
							</li>
							<li>
								<a href="#">Hotel California</a>
								<ul>
									<li>
										<a href="#">Hotel California</a>
									</li>
									<li>
										<a href="#">Pretty Maids All in a Row</a>
									</li>
								</ul>
							</li>
							<li>
								<a href="#">Physical Graffiti</a>
								<ul>
									<li>
										<a href="#">In My Time of Dying</a>
									</li>
									<li>
										<a href="#">Houses of the Holy</a>
									</li>
								</ul>
							</li>
						</ul>
					</li>
					<li>
						<a href="#">Songs</a>
						<ul>
							<li>
								<a href="#">In My Time of Dying</a>
							</li>
							<li>
								<a href="#">Houses of the Holy</a>
							</li>
							<li>
								<a href="#">Hotel California</a>
							</li>
							<li>
								<a href="#">Pretty Maids All in a Row</a>
							</li>
							<li>
								<a href="#">Train Kept A-Rollin'</a>
							</li>
							<li>
								<a href="#">Same Old Song and Dance</a>
							</li>
						</ul>
					</li>
					<li>
						<a href="#">Genres</a>
						<ul>
							<li>
								<a href="#">Rock</a>
								<ul>
									<li>
										<a href="#">Hotel California</a>
									</li>
									<li>
										<a href="#">Pretty Maids All in a Row</a>
									</li>
									<li>
										<a href="#">Train Kept A-Rollin'</a>
									</li>
									<li>
										<a href="#">Same Old Song and Dance</a>
									</li>
								</ul>
							</li>
							<li>
								<a href="#">Hard rock</a>
								<ul>
									<li>
										<a href="#">In My Time of Dying</a>
									</li>
									<li>
										<a href="#">Houses of the Holy</a>
									</li>
								</ul>
							</li>
						</ul>
					</li>
					<li>
						<a href="#">Settings</a>
						<ul>
							<li>
								<a href="#">Profile</a>
							</li>
							<li>
								<a href="#">Player</a>
								<ul>
									<li>
										<a href="#">Volume</a>
									</li>
									<li>
										<a href="#">Equalizer</a>
									</li>
								</ul>
							</li>
						</ul>
					</li>
				</ul>
			</div>
		</section>

Download

vConsole
03:24:45
Uncaught TypeError: Cannot read properties of null (reading 'style')
/Scripte-Download/index.php?name=jquery_slidemenue.php&ordner=Scripte-Download:2751:53
03:24:45
WeChatLib: 0 (xxxx.xx.xx)
03:24:46
System: Unknown
03:24:46
Protocol: HTTPS
03:24:46
UA: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
03:24:46
navigationStart: 1743909884748
03:24:46
navigation: 7ms
03:24:46
dns: 112ms
03:24:46
tcp (ssl): 224ms (116ms)
03:24:46
request: 215ms
03:24:46
response: 50ms
03:24:46
domComplete (domLoaded): 1662ms (1567ms)
03:24:46
loadEvent: 15ms
03:24:46
total (DOM): 2238ms (2223ms)