Folding Paper Menu to create a dropdown menu that allows the user to reveal menu items with collapsible effects just as they would on a piece of paper.
multi level dropdown side menu, jquery multi level slide menu, multi level responsive menu jquery, best jquery menu plugins, full width menu jquery, jquery dropdown menu, jquery menu bar with submenu
How to make use of it:
1. Load the newest jQuery library and Bootstrap’s stylesheet within the doc.
<link rel="stylesheet" href="/path/to/cdn/bootstrap.min.css" /> <script src="/path/to/cdn/jquery.min.js"></script>
2. Create a dropdown menu utilizing Bootstrap’s checklist group part as follows:
<ul class="list-group position-relative" id="folding"> <li class="list-group-item d-flex align-items-center"> <img class="mr-4" src="https://picsum.photos/100?random=1"/> <div> <h2>Lorem Ipsum 1</h2> <p>Dolor sit amet</p> </div> </li> <li class="list-group-item d-flex align-items-center"> <img class="mr-4" src="https://picsum.photos/100?random=2"/> <div> <h2>Lorem Ipsum 2</h2> <p>Dolor sit amet</p> </div> </li> <li class="list-group-item d-flex align-items-center"> <img class="mr-4" src="https://picsum.photos/100?random=3"/> <div> <h2>Lorem Ipsum 3</h2> <p>Dolor sit amet</p> </div> </li> ... more list items here ... <li class="list-group-item navbar-light text-center"><span class="navbar-toggler-icon"></span></li> </ul>
3. The required CSS types for the menu objects.
.list-group li { position: absolute; left: 0px; right: 0px; zoom: 1; transform-origin: 50% 100%; transform: perspective(1000px) rotate3d(1, 0, 0, 90deg); } .list-group li:nth-child(even) { transform-origin: 50% 0%; background: #eee; } .list-group li:last-child { transform: none; cursor: pointer; }
4. The principal JavaScript (jQuery Script) to allow the folding dropdown menu.
const foldingMenu = $("#foldingMenu"), toggler = $("li:last-child", foldingMenu), steps = 10, animationTime = 400, perspective = 1000, degree = 90, classNames = { animatingUp: "animating-up", animatingDown: "animating-down", unfolded: "unfolded", folded: "folded" }; (() => foldingMenu.each(() => { const evenChild = foldingMenu.children(":even").not(toggler), oddChild = foldingMenu.children(":odd").not(toggler), listItems = $('li', foldingMenu), firstItemHeight = $('li', foldingMenu).eq(0).outerHeight(), degreePerStep = degree / steps; let counter = 0; changeStatus = (callBack) => { (applyTransform = () => { let angle = 90 - (foldingMenu.hasClass(classNames.unfolded) ? --counter : ++counter) * degreePerStep, currentHeight = 0, itemTop = 0; evenChild.css("transform", `perspective(${perspective}px) rotate3d(1, 0, 0, -${angle}deg)`); oddChild.css("transform", `perspective(${perspective}px) rotate3d(1, 0, 0,${angle}deg)`); currentHeight = (counter >= 0) ? parseInt(listItems[0].getBoundingClientRect().height) : 0; for (let i = 0; i < listItems.length; i++) { itemTop = (1 === i % 2) ? currentHeight * (i + 1) - firstItemHeight : currentHeight * i; listItems[i].style.top = itemTop + "px"; } (counter === steps || 0 === counter) ? callBack() : setTimeout(applyTransform, animationTime / steps); })(); }; toggler.on("click", e => { foldingMenu.hasClass(classNames.animatingUp) || (foldingMenu.hasClass(classNames.unfolded) ? (foldingMenu.addClass(classNames.animatingUp), changeStatus(() => foldingMenu.removeClass(`${classNames.animatingUp} ${classNames.unfolded}`)) ) : (foldingMenu.addClass(classNames.animatingUp, classNames.animatingDown), changeStatus(() => { foldingMenu.removeClass(`${classNames.animatingUp} ${classNames.animatingDown}`); foldingMenu.addClass(classNames.unfolded); }))); e.preventDefault(); }); }) )(jQuery);
Dropdown Menu With Folding/Unfolding Effects, Folding Paper Menu Plugin/Github
See Demo And Download
Official Website(housamz): Click Here
This superior jQuery/javascript plugin is developed by housamz . For extra Advanced Usages, please go to the official website.
Be First to Comment