DDR爱好者之家 Design By 杰米
目前网上有很多各种各样的手风琴插件,但是没有一个完整实现了的侧菜单,今天写了一个可以无限子节点的手风琴侧菜单,有需要的可以参考一下,有什么好的想法可以留言。(没有经过彻底测试,不过问题应该不大)
下面老规矩,直接贴代码:
(function ($) { 'use strict'; var defaults = { url: null, param: {}, data: {}, fill: true, level_space: 15, onitemclick: null, style: { header: "accordion-header", header_title: "accordion-header-title", content: "accordion-content", selected: "selected", icon_base: "fa", icon_collapse: "fa-angle-up", icon_expand: "fa-angle-down" } } var methods = { init: function (options) { return this.each(function () { var $this = $(this); if (!$this.hasClass("accordion")) { $this.addClass("accordion"); } var settings = $this.data('tw.accordion'); if (typeof (settings) == 'undefined') { settings = $.extend({}, defaults, options); $this.data('tw.accordion', settings); } else { settings = $.extend({}, settings, options); $this.data('tw.accordion', settings); } if (settings.url) { $.ajax({ type: "post", async: false, url: settings.url, data: settings.param, success: function (data) { settings.data = data; } }); } if (settings.fill) { $this.height("100%"); } if (settings.data.length > 0) { $this.data("count", settings.data.length); $.each(settings.data, function () { this.level = 1; var item = $this.accordion("add", this); $this.append(item); }); if ($this.find("." + settings.style.selected).length == 0) { var data = $this.find(">li:first-child").data("data"); $this.accordion("select", data); } } }); }, add: function (data) { var $this = $(this); var settings = $this.data("tw.accordion"); var item = $("<li class='" + settings.style.header + "'></li>"); item.data("data", data); var header = $("<div class='" + settings.style.header_title + "' data-accordion='" + data.id + "'>" + "<i class='" + settings.style.icon_base + "" + data.icon + "'></i>" + "<span>" + data.name + "</span></div>"); header.css("padding-left", settings.level_space * data.level); item.append(header); if (data.childrens) { var toggle = $("<i class='" + settings.style.icon_base + "" + settings.style.icon_collapse + "'></i>"); toggle.css({ "font-size": "1.4em", "position": "absolute", "top": "7px", "right": "7px" }); header.append(toggle); var content = $("<ul class='" + settings.style.content + "'></ul>"); content.data("count", data.childrens.length); $.each(data.childrens, function () { this.level = data.level + 1; var child = $this.accordion("add", this); content.append(child); }); item.append(content); } header.click(function () { $this.accordion("select", data); }); if (data.selected) { $this.accordion("select", data); } return item; }, select: function (data) { var $this = $(this); var settings = $this.data("tw.accordion"); var header = $this.find("[data-accordion='" + data.id + "']"); var item = header.parent(); if (!header.hasClass(settings.style.selected) && !item.hasClass(settings.style.selected)) { var sibling = item.siblings(); sibling.removeClass(settings.style.selected).children("." + settings.style.selected).removeClass(settings.style.selected); sibling.children("." + settings.style.icon_expand).removeClass(settings.style.icon_expand).addClass(settings.style.icon_collapse); if (data.childrens) { item.addClass(settings.style.selected); header.find("." + settings.style.icon_collapse).removeClass(settings.style.icon_collapse).addClass(settings.style.icon_expand); if (settings.fill) { var count = item.parent().data("count") - 1; item.css("height", "calc(100% - " + (item.height() * count) + "px)"); } } else { header.addClass(settings.style.selected); } } if (settings.onitemclick) { settings.onitemclick(data); } }, update: function (url, param) { var $this = $(this); var settings = $this.data("tw.accordion"); if (typeof url == "object") { settings.param = url; } else { settings.url = url; settings.param = param; } $this.accordion("init", settings); }, destroy: function (options) { return $(this).each(function () { var $this = $(this); $this.removeData('accordion'); }); } } $.fn.accordion = function () { var method = arguments[0]; var args = arguments; if (typeof (method) == 'object' || !method) { method = methods.init; } else if (methods[method]) { method = methods[method]; args = $.makeArray(arguments).slice(1); } else { $.error('Method ' + method + ' does not exist on tw.accordion'); return this; } return method.apply(this, args); } })(jQuery);
.accordion { margin:0; padding:0; font-size:14px; } .accordion > .accordion-header { list-style: none; margin: 0; padding: 0; border-bottom: 1px solid #ddd; } .accordion > .accordion-header.selected > .accordion-header-title { color: #0094ff; } .accordion > .accordion-header > .accordion-header-title { position: relative; width: 100%; height: 35px; line-height: 35px; background: #eee; border-bottom: 1px solid #ccc; cursor: pointer; } .accordion > .accordion-header > .accordion-header-title > i:first-child { font-size: 1.3em; } .accordion > .accordion-header > .accordion-header-title > span { position: relative; top: -1px; left: 5px; } .accordion > .accordion-header > .accordion-content { display: none; width: 100%; height: calc(100% - 35px); margin: 0; padding: 0; } .accordion > .accordion-header.selected > .accordion-content { display: block; } .accordion-content > .accordion-header { list-style: none; margin: 0; padding: 0; } .accordion-content > .accordion-header.selected { color: #0094ff; } .accordion-content > .accordion-header > .accordion-header-title { position: relative; width: 100%; height: 32px; line-height: 32px; cursor: pointer; border-bottom: 1px solid #ccc; } .accordion-content > .accordion-header > .accordion-header-title:hover { background:#eee; } .accordion-content > .accordion-header > .accordion-header-title.selected { color: #fff; background: #0094ff; border-left: 3px solid #ff6a00; border-bottom: 0px; } .accordion-content > .accordion-header > .accordion-header-title > i:first-child { font-size: 1.2em; } .accordion-content > .accordion-header > .accordion-header-title > span { position: relative; top: -1px; left: 5px; } .accordion-content > .accordion-header > .accordion-header-title.selected > i:first-child { position:relative; left:-3px; } .accordion-content > .accordion-header > .accordion-header-title.selected > span { position: relative; top: -1px; left: 2px; } .accordion-content > .accordion-header > .accordion-content { display: none; width: 100%; height: calc(100% - 32px); margin: 0; padding: 0; } .accordion-content > .accordion-header.selected > .accordion-content { display: block; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月28日
2024年11月28日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]