使用jQuery或CSS在特定位置将链接的ul列表拆分为单独的列
Splitting a ul list of links into a seperate column at a specific point using jQuery or CSS
我目前有一个按钮,其中有一个相当大的链接列表,全部在多个下拉配置中。例如:
<ul id="nav">
<li><a href="">Items</a>
<ul>
<li class="nav-divider">Equipment</li>
<li><a href="#">Weapons »</a>
<ul>
<li class="nav-divider">One-Handed</li>
<li><a href="#">Axe</a></li>
<li><a href="#">Hammer</a></li>
<li><a href="#">Wand</a></li>
<li><a href="#">Sword</a></li>
<li><a href="#">Dagger</a></li>
<li class="nav-divider">Two-Handed</li>
<li><a href="#">Axe</a></li>
<li><a href="#">Hammer</a></li>
<li><a href="#">Staff</a></li>
<li><a href="#">Sword</a></li>
<!-- Would need to split the list here to a separate column -->
<li class="nav-divider">Ranged</li>
<li><a href="#">Bow</a></li>
<li><a href="#">Crossbow</a></li>
<li><a href="#">Ammunition</a></li>
<li><a href="#">Arrows</a></li>
<li><a href="#">Projectiles</a></li>
</ul>
</li>
<li><a href="#">Armor »</a>
<ul>
<li class="nav-divider">Type</li>
<li><a href="#">Plate »</a>
<ul>
<li><a href="#">Head</a></li>
... (a few more, no multiple columns needed)
<li><a href="#">Shoulders</a></li>
</ul>
</li>
<li><a href="#">Chain »</a>
<ul>
<li><a href="#">Head</a></li>
...
<li><a href="#">Shoulders</a></li>
</ul>
</li>
<li class="nav-divider">Other</li>
<li><a href="#">Accessories »</a>
<ul>
<li><a href="#">Earrings</a></li>
<li><a href="#">Rings</a></li>
<li><a href="#">Necklaces</a></li>
</ul>
</li>
<li><a href="#">Off Hand »</a>
<ul>
<li><a href="#">Shields</a></li>
<li><a href="#">Talismans</a></li>
</ul>
</li>
<li><a href="#">Back</a></li>
<li><a href="#">Amulets</a></li>
</ul>
</li>
</ul>
</li>
</ul>
有些列表很好,但是"Items -> Weapons"下的链接列表太长,导致页面在一些较低的显示分辨率下稍微向下伸展。我想将该列表拆分为两列,以便' range '分隔符/标题出现在其自己的列中(我已经指示了拆分应该在代码中使用注释发生的位置)。
我认为我需要某种Javascript来完成这一点,但到目前为止,我一直在尝试不同的代码和不同的方法来实现这一点,但没有成功。有些解决方案将所有列表均匀地分成两列(通过在css中使用column-count)(不希望那样),有些将列分开,但第二个没有任何格式(我不知道为什么)。
我已经把我所拥有的HTML和CSS3放入一个提琴中,您可以在这里查看:http://jsfiddle.net/MSmj9/2/
你可以从上面的注释中看到,我在css中尝试了一些东西,但没有成功。
非常感谢您提供的任何帮助或指导。
问好。
把<ul>
分成两半怎么样?看看这个(非常简化的)小提琴:http://jsfiddle.net/U9CFE/
这是一种CSS模板,只有你的问题区域和一些通用的类名:
.sub, .sub-sub {
display:none;
}
li.parent:hover > .sub {
display: block;
}
li.weapons-parent {
position: relative;
}
.sub-sub {
position: absolute;
border: 1px solid red;
}
.sub-sub:last-child {
left: 199px;
}
.weapons-parent:hover > .sub-sub {
display: inline-block;
}
要做到这一点,您需要将列表项拆分为两个列表。您可以在服务器端或客户端执行此操作。
对于服务器端,只需创建远程武器的额外列表,对于客户端,您可以做类似的事情(jQuery示例,可以通过在列表项上创建额外的类来简化)http://jsfiddle.net/5hJLv/4/
$(function(){
var dividers = $('#nav .level3 .nav-divider');
if (dividers.length > 2) {
var lastIndex = $(dividers.get(2)).index() - 1;
var extraColumn = $('#nav .level3 > li:gt(' + lastIndex + ')');
var parent = $('#nav .level3').first().parent('li');
var extra = $('<ul class="level3 inserted"></ul>').append(col2.clone());
parent.append(extra);
//extra;
col2.remove();
}
});
相关文章:
- 使用下拉列表筛选列表(ul>li)
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 将列表元素动态添加到ul元素中
- 如何将逗号分隔的列表转换为<ul>列表
- JQuery Mobile UL列表仍然不能用于动态列表
- 如何将Array转换为<ul><李>以字母为标题的字母列表
- 将 ul 列表保存到 json 对象中
- 在转换后的 UL 列表中添加选择选项
- 创建带有文本输入和按钮的 UL 列表
- jQuery使用XML数据更新UL列表
- 计算 ul 中的所有第一个列表项
- 有角度的自动建议文本排版和html ul li下拉列表
- jQuery访问列表视图->ul->李->span->img
- JavaScript将缩进文本转换为HTML列表重复顶层<李>'s为<ul>'s
- 当我点击Hospitails的td时,如何调用ul列表
- 防止下拉列表 ul 在淡出鼠标输入时重新出现
- 如何使无序列表(ul)中的ng重复内容可滚动
- 如何将无序列表(UL,LI)转换为连续字符串
- 在jquery中追加到无序列表(ul)
- 排序列表ul->不同id的函数中的li