- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
下面有一个数组:
Array
(
[0] => Array
(
[id] => 1
[name] => Electronics
[parent] => 0
[description] => Large amount of electronics in our store
[columns] => 6
[products] => 5
[subcat] => Array
(
[0] => Array
(
[id] => 7
[name] => Moble phones
[parent] => 1
[description] =>
[columns] => 0
[products] => 5
[subcat] => Array
(
)
)
[1] => Array
(
[id] => 16
[name] => Computers
[parent] => 1
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
[0] => Array
(
[id] => 37
[name] => Desktops
[parent] => 16
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
)
)
[1] => Array
(
[id] => 17
[name] => Car Electronics
[parent] => 16
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
[0] => Array
(
[id] => 43
[name] => GPS & Navigation
[parent] => 17
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
)
)
)
)
)
)
[2] => Array
(
[id] => 18
[name] => TV & Video
[parent] => 1
[description] =>
[columns] => 0
[products] => 2
[subcat] => Array
(
[0] => Array
(
[id] => 48
[name] => LED TVs
[parent] => 18
[description] =>
[columns] => 0
[products] => 2
[subcat] => Array
(
)
)
[1] => Array
(
[id] => 49
[name] => Plasma TVs
[parent] => 18
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
)
)
)
)
)
)
[1] => Array
(
[id] => 14
[name] => Video Games
[parent] => 0
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
[0] => Array
(
[id] => 30
[name] => Nintendo Wii
[parent] => 14
[description] =>
[columns] => 0
[products] => 0
[subcat] => Array
(
)
)
)
)
)
我有一个 php 递归函数来将这个数组转换成 html 菜单:
private function buildNavHTML($nav, $tabs = "") {
$html = !strlen($tabs) ?
$tabs.'<ul class="navs">' :
$tabs.'<ul>';
foreach($nav as $page) {
$html .= $tabs." ".'<li>';
(isset($page['subcategories'][0])) ?
$html .= '<a class="subcat" href="cat?cid='.$page['id'].'">'.$page['name'].'</a>' :
$html .= '<a href="cat?cid='.$page['id'].'">'.$page['name'].'</a>';
if(isset($page['subcat'][0])) {
$html .= self::buildNavHTML($page['subcat'], $tabs." ");
}
$html .= '</li>';
}
$html .= $tabs.'</ul>';
return $html;
}
这个函数将输出 HTML 树:
<ul class="navs">
<li class="">
<a class="shop_subcat" href="cat?cid=1">Electronics</a>
<ul>
<li>
<a href="cat?cid=7">Moble phones</a>
</li>
<li>
<a class="shop_subcat" href="cat?cid=16">Computers</a>
<ul>
<li>
<a href="cat?cid=37">Desktops</a>
</li>
<li>
<a class="shop_subcat" href="cat?cid=17">Car Electronics</a>
<ul>
<li>
<a href="cat?cid=43">GPS & Navigation</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a class="shop_subcat" href="cat?cid=18">TV & Video</a>
<ul>
<li>
<a href="cat?cid=48">LED TVs</a>
</li>
<li>
<a href="cat?cid=49">Plasma TVs</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="">
<a class="shop_subcat" href="cat?cid=14">Video Games</a>
<ul>
<li>
<a href="cat?cid=30">Nintendo Wii</a>
</li>
</ul>
</li>
</ul>
但我需要得到类似的东西:_http://vasterad.com/plugins/responsive_css3_mega_menu/#
按列分隔,因为我的数据库中有一个列字段。如何修复我的递归函数?谢谢!
最佳答案
1.首先你应该在你的页面中添加这个CSS:
<style>
@import url("icons.css"); .menu{display:block;position:relative}.menu,.menu ul{margin:0;padding:0;list-style:none;position:relative}.menu ul a{float:left}.menu ul ul a{float:none}.menu .mega-menu a{float:none;padding:0}.menu ul ul,.menu .mega-menu,.menu .mega-menu ol li{opacity:0;visibility:hidden;display:none ! important/9;-webkit-transition:opacity 150ms ease-in-out;-moz-transition:opacity 150ms ease-in-out;-o-transition:opacity 150ms ease-in-out;-ms-transition:opacity 150ms ease-in-out;transition:opacity 150ms ease-in-out}.menu li:hover>ul,.menu li:hover>.mega-menu,.menu li:hover>.mega-menu ol li{opacity:1;visibility:visible;display:block ! important/9}.menu ul:after{content:"";clear:both;display:block}.menu ul li{float:left;-webkit-transition:all 150ms ease-in-out;-moz-transition:all 150ms ease-in-out;-o-transition:all 150ms ease-in-out;-ms-transition:all 150ms ease-in-out;transition:all 150ms ease-in-out}.menu ul li a{display:block;padding:14px 20px 15px 20px;color:#fff;font-weight:700;text-decoration:none}.menu .arrow:after{content:"";float:right;text-align:right;width:0;height:0;display:block;border-left:3px solid rgba(0,0,0,0);border-right:3px solid rgba(0,0,0,0);border-top:3px solid #fff;top:9px;margin:0 0 0 5px;position:relative;border-left:3px solid transparent/9;border-right:3px solid transparent/9}.menu ul li ul li .arrow:after{border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:3px solid #bbb;margin:-2px 0 0 5px}.menu i{font-size:14px;font-weight:400;font-style:normal;float:left;margin:4px 4px 0 -2px;line-height:14px;padding:0}.menu .right{float:right}.menu .right ul,.menu .right .mega-menu{right:0}.menu ul ul{background:#fff;border:1px solid #e0e0e0;border-top:0;border-bottom:0;position:absolute;top:100%;width:170px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu ul ul ul{position:absolute;left:100%;border-top:1px solid #e0e0e0;top:-1px}.menu ul ul li a{font-weight:400;padding:8px 12px;color:#777;border-bottom:1px solid #e4e4e4}.menu ul ul li{float:none;position:relative;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.menu ul ul li a:active,.menu ul ul li:hover{background:#f5f5f5!important}.menu ul ul li{background:#fff!important}.mega-menu{position:absolute;top:100%;padding:18px 11px;background-color:#fff;border:1px solid #e0e0e0;border-top:none;color:#777;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mega-menu ol{list-style:none;padding:0}.mega-menu ol li{width:100%}.mega-menu ol li:hover,.mega-menu ol li a{color:#777;font-size:12px;padding:0;font-weight:400;background-color:#fff;background-image:none}.mega-menu ol li a:hover{color:#505050}.mega-menu div h4{font-size:14px;font-weight:700;color:#404040;border-bottom:1px solid #e4e4e4;padding:0 0 8px 0;margin:0 0 10px 0}.mega-menu .col-1{width:135px}.mega-menu .col-2{width:288px}.mega-menu .col-3{width:441px}.mega-menu .col-4{width:594px}.mega-menu .col-5{width:747px}.mega-menu .col-6{width:900px}.mega-menu .col-1,.mega-menu .col-2,.mega-menu .col-3,.mega-menu .col-4,.mega-menu .col-5,.mega-menu .col-6{float:left;margin:0 9px}.mega-menu.full-width{left:0;width:100%;padding:18px 0}.full-width .col-1{width:14.1%}.full-width .col-2{width:30.4%}.full-width .col-3{width:46.7%}.full-width .col-4{width:63%}.full-width .col-5{width:79.3%}.full-width .col-6{width:95.6%}.full-width .col-1,.full-width .col-2,.full-width .col-3,.full-width .col-4,.full-width .col-5,.full-width .col-6{float:left;margin:0 0 0 2.2%}@media only screen and (max-width: 767px){.menu ul li{width:100%;cursor:pointer}.menu ul li{position:relative}.menu .mega-menu ol li{height:0}.menu li:hover>.mega-menu ol li{height:auto}.mega-menu,.menu ul ul{z-index:100}.menu ul ul{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.menu ul ul ul{left:0}.menu ul ul li:hover>ul{position:relative;border:none;border-top:1px solid #e4e4e4;-webkit-box-shadow:none;box-shadow:none}.menu ul li ul li .arrow:after{border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #bbb;margin:0}.mega-menu{padding:18px 0}.mega-menu ol li:last-child{margin:0 0 20px 0}.menu .col-1,.full-width .col-1,.menu .col-2,.full-width .col-2,.menu .col-3,.full-width .col-3,.menu .col-4,.full-width .col-4,.menu .col-5,.full-width .col-5,.menu .col-6,.full-width .col-6{float:left;margin:0 0 0 5%;width:90%}} .style-1.menu, .style-1.menu ul li { background-color: #2b2a28; background-image: linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.04) 0%); background-image: -o-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.04) 0%); background-image: -moz-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.04) 0%); background-image: -webkit-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.04) 0%); background-image: -ms-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.04) 0%); } .style-1.menu ul li:hover { background-color: #eb4e01; background-image: linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.08) 0%); background-image: -o-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.08) 0%); background-image: -moz-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.08) 0%); background-image: -webkit-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.08) 0%); background-image: -ms-linear-gradient(bottom, rgba(0,0,0, 0) 50%, rgba(255,255,255, 0.08) 0%); }
</style>
你应该让你的函数有这个输出:
<div class="container">
<div class="menu style-1">
<ul class="menu">
<!--head of your tabs-->
<li>
<a class="arrow" href="#">
<i class="icon-folder-open"></i>
Electronics
</a>
<!--subtabs of your head tabs-->
<ul>
<li>
<a href="#">Moble phones</a>
</li>
</ul>
</li>
</ul>
注意:你应该了解更多关于css的知识http://www.w3schools.com/css/最好的问候
关于php - 从邻接表生成 megamenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473513/
在 Opencart 2 中使用 Megamenu,当我们有很多子类别时,将鼠标悬停在底部类别上时会出现一个小问题。它的子类别将显示在更低的位置,这不利于用户友好。 是否可以实现像下面的概念图,子
我一直在尝试构建大型导航,但我不知道如何定位 anchor 并使其下拉内容自动显示。我在 http://codepen.io/shanekweb/pen/EZpjKo 有一个我在 codepen 上的
我的 MegaMenu 有一个小问题,当我打开一个子菜单(单击主菜单的一个元素)时,我希望当我单击文档主体上的任意位置或选择其他菜单项时该子菜单消失,上一个子菜单必须关闭,如果我单击该子菜单('ul'
我手上有一个小问题,我有一个 Megamenu,可以在移动设备和桌面上使用,我想让菜单中心的内容对齐,但我只能左对齐或右对齐。我可以将中心与 > ul { display: flex; //it w
下面有一个数组: Array ( [0] => Array ( [id] => 1 [name] => Electronics
我正在尝试使用我在此处找到的以下 Bootstrap megamenu: http://jsfiddle.net/apougher/ydcMQ/ 我想不通的是,当我在移动 View 中单击类别链接时,
我正在尝试为 bootstrap 3 创建一个响应式 megamenu,我在下面找到了一个 http://geedmo.github.io/yamm3/ 并将其应用到我的构建中 http://thin
我创建了一个大型菜单。它工作正常,但我想做一些改变。但我不知道该怎么做。我想让导航栏的宽度覆盖整个网页的宽度。然后我希望 megamenu 如此屏幕截图所示。我怎样才能做到这一点。请帮助。这是我的代码
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and t
我有一个 megamenu,我想将点击事件更改为悬停事件。当您悬停“所有类别”时能够显示子菜单。 目前该示例仅适用于点击。您必须单击“所有类别”才能显示所有类别。 我试图改变事件: $('.categ
我有一个包含多个子菜单的大型菜单。单击第二个子类别中的元素时,动画无法正常工作。在我看来,这部分代码造成了这个错误,但如果没有它,动画将无法正常工作,当第二次点击它时: 有什么办法可以解决吗? $('
您好,我想创建一种新型的导航下拉菜单(新的,因为我以前从未见过)。 基本上,当我将鼠标悬停在导航项上时,导航下方会出现一个下拉框。与普通下拉菜单的不同之处在于,我希望此下拉菜单包含所有导航子元素(而不
我正在使用来自 http://www.designchemical.com 的 jquery Vertical Mega 菜单当我的页面加载时,它首先在呈现时显示所有菜单(包括子菜单)一瞬间,然后子菜
我不确定是否有人可以提供帮助,但我想我还是会问的。 http://www.acuity-sports.com/ 我可以让我的大型菜单背景在左对齐的棒球点击下填充背景,但在右对齐的垒球选项卡上它不会填充
我正在使用用于 Bootstrap 的 yamm mega 菜单。我在大型菜单中添加了一个悬停菜单。它没有正确坐好。我希望悬停菜单与子菜单标题和插入符号对齐。它坐在下面,我想改变它。我在绝对位置上尝试
我正在学习本教程并尝试修改它以供我使用:http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-a-kick-butt-c
我正在努力更新这个 css megamenu 但是,我似乎无法摆脱非下拉元素元素上的选项卡外观。谁能看到这个选项在 css 中的什么位置? CSS: body, ul, li { font-s
我需要放慢打开下拉菜单的速度,我尝试了几种不同的过渡效果,但都没有给出合适的解决方案,我的想法是在这一部分添加过渡效果: /* Showing Drop Down on Mouse Hover */
因此,由于 Bootstrap,我有一个可以正常工作和按比例缩小的下拉菜单。 然而,客户希望折叠起来像 Accordion 一样。 我正在尝试获取类似于 this 的内容. Avada 的主导航菜单缩
in primefaces? 添加透明效果
下面是我的jsf页面(正文中的代码)和css文件: JSF 页面:
我是一名优秀的程序员,十分优秀!