Ral*_*onz 4 css jquery overflow horizontallist
我有一个水平菜单溢出:隐藏应用于它.
菜单是CMS管理的,所以有时它不会溢出,但是当它溢出时我想找到最后一个可见的li元素并插入一个下拉ul,其中包含溢出的菜单项.我遇到的问题是选择最后一个可见的li(为了在它之前插入HTML)作为溢出隐藏的元素:隐藏似乎仍被视为可见.
到目前为止我的代码是:
$(window).load( function () {
var totalWidth = 0;
var menu = $('.nav .menu ul');
var menuWidth = menu.innerWidth();
menu.find('li').each(function() {
totalWidth += $(this).innerWidth() + 30; // add margin
});
if (totalWidth > menuWidth) {
var num_li = $('.nav .menu ul > li:visible').length;
$('.nav .menu ul li:nth-child('+num_li+')').append("<li><a>More</a></li>");
}
});
Run Code Online (Sandbox Code Playgroud)
变量num_li返回完整数量的li元素,而不仅仅是查看页面的人可见的元素!
您无法直接查询溢出的元素,因为就DOM而言它们并未隐藏(并且没有要使用JQuery检查的属性更改).
您需要根据菜单的宽度/高度检查位置.
menu.find('li').each(function () {
totalWidth += $(this).outerWidth();
if (totalWidth > menuWidth) {
$(this).before("<li><a>More</a></li>");
return false; // Abort loop
}
});
Run Code Online (Sandbox Code Playgroud)
我在菜单上放置了自动滚动,这样你就可以看到溢出的内容.
| 归档时间: |
|
| 查看次数: |
5983 次 |
| 最近记录: |