javascript - "Priority Nav"在 div float 时中断

标签 javascript jquery css html responsive-design

我正在使用“优先导航”设计模式。对于那些不太确定这是什么的人,基本上当视口(viewport)宽度减小并且没有足够的空间让所有列表项水平固定时,它们会被移动到另一个嵌套列表中,因此仍然可以访问它们.这是在列表末尾的“更多”链接中。

在基本层面上,这在我的示例(如下)中运行良好:

http://codepen.io/moy/pen/RrRJBe

我遇到的问题是:

1) 因为我在导航旁边还有另一个元素,它是 float 的(并且宽度未知),我需要在导航上设置 overflow:hidden;。这意味着当容器的宽度发生变化时,导航会保持在其他内容旁边,而不是放在下一行。它修复了......问题是它还意味着末尾的下拉菜单不可见,因为它显示在导航下方并且 overflow: hidden; 已设置。

对此有任何替代 (CSS) 修复吗?

2) 另一个问题是导航链接需要放在右边。没问题,只需将 div float 即可,是吗?不幸的是,它不喜欢这样,页面几乎崩溃了——一定是与试图计算宽度的脚本有关吗?一旦导航或其父级 float ,它就会中断!

列表项向左浮动,因此它们水平显示。相反,我尝试使用 display: inline-blocktext-align: right;。这样可以正确定位文本,但是当没有足够的水平空间时,元素要么换行,要么全部折叠到“更多”链接中,而不是一个接一个。

-

浏览器要求: 值得注意的是,我的浏览器支持 IE8+,因此不幸的是 flexbox 不可用。即使它有效,也意味着我必须找到 IE8/9 的修复程序。

有没有人能帮忙解决这个问题,或者我应该看看有没有插件。当导航被隔离时,这个脚本工作得很好,但是一旦另一个元素在它的路径中,它就会变得有点棘手。在之前的尝试中,我得到了挡道的元素的宽度,并将其减去可用空间。但这不是那么灵活/可扩展 - 但同样,也许没有其他方法?

谢谢,希望有人能帮忙!

最佳答案

第 1 部分

您可以使用 clearfix 代替 overflow: hidden

将以下内容添加到包含 nav 的父元素中:

.wrap:before, .wrap:after {
    content: '';
    display: table;
    clear: both;
}

但是如果你需要支持IE8,你可以在包含nav的父元素底部添加如下元素即可

html
<div class="clear"></div>

.clear {
    clear: both;
}

关于javascript - "Priority Nav"在 div float 时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418336/

相关文章:

javascript - cordova全局获取设备UUID

html - Bootstrap 导航栏 : Width of left element affects position of element in the center

javascript - jquery $.ajax() 及其成功回调 - 它返回到哪里?

javascript - Bing map 无法在网站上正确显示

jquery - 查找距离单击的按钮最近的 <p>

javascript - 如何使用 jquery 创建弹出 onclick

javascript - 简单数组购物车无法正确显示

javascript - 从threejs中的数组生成纹理

html - 滚动容器中的全宽表格

CSS - Bootstrap navbar-header 垂直居中