为什么二级菜单会被挡住_导航下拉菜单被遮住或显示不全问题所在和解决办法...

导航下拉菜单被遮住或显示不全问题所在和解决办法

导航下拉菜单被banner遮住/显示不全,这种问题是老生常谈了,经常有新手会问,有些人做了2、3年的还会经常犯错,而且好多人还以为是js问题,其实这是基本的css知识。我觉得还是有必要写一遍文章解释给新手们。

一、导航下拉菜单被遮住,那是因为层叠关系错误

我们必须理解层叠关系满足的2个条件:

1、必须是同级;

2、二者分别设定了position:relative 或 absolute 或 fixed;

这时候通过设置z-index才有效

看看我们比较常见的网页布局:

html:

错误css

.header{ }

.header .nav{ z-index:9999; height:50px; color:#fff; text-align:center; }

.banner{ position:relative; margin:10px auto; height:300px; }

上面css里吧nav的z-index设置成9999,但发现下拉还是被挡住,这是因为此时banner设置了position,会在nav上面。

想要nav在banner上面,就需要向上查找,发现nav的外层(header)和banner在同一级(满足条件1),

这时候同时设置header和banner的position和z-index,使header在banner上面即可,此时nav的z-index已经无关重要了。

正确css:

.header{ position:relative; z-index:1 }

.header .nav{ height:50px; color:#fff; text-align:center; }

.banner{ position:relative; z-index:0; margin:10px auto; height:300px; }

例子2:

如果你的html结构这样的:

那么分别设置header和content的position和z-index,因为2者在最外层并且同级。

其它同理。

二、导航下拉菜单显示不全是因为外层设置了overflow:hidden

很多时因为网页比较复杂,层级比较多,所以经常忽略了外层或者外外外层设置了overflow:hidden导致导航下拉菜单显示不全,其实只要仔细查找就能解决问题,把overflow:hidden去掉,如果需要清除浮动,可以用其它方法,百度css清除浮动就有了。

可以通过 Bootstrap 的下拉菜单和嵌套下拉菜单组合来实现按钮向左显示二级菜单的效果。具体步骤如下: 1. 创建一个按钮,并在其上添加 `data-toggle="dropdown"` 和 `aria-haspopup="true"` 属性,以指示该按钮可以展开下拉菜单。 ```html <button class="btn dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true">Dropdown</button> ``` 2. 在该按钮下方添加一个 `dropdown-menu` 类的无序列表,表示下拉菜单的内容。 ```html <ul class="dropdown-menu"> <!-- 下拉菜单内容 --> </ul> ``` 3. 在下拉菜单中添加一个带有 `dropdown-submenu` 类的列表项,表示该项为一个包含嵌套下拉菜单二级菜单。 ```html <li class="dropdown-submenu"> <a class="dropdown-item" href="#">二级菜单</a> <!-- 嵌套下拉菜单 --> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">二级菜单子项1</a></li> <li><a class="dropdown-item" href="#">二级菜单子项2</a></li> <!-- 更多子项 --> </ul> </li> ``` 4. 在二级菜单项上添加一个右箭头图标,表示该项包含嵌套下拉菜单。 ```html <a class="dropdown-item" href="#">二级菜单 <span class="float-right">▸</span></a> ``` 5. 最后,使用 CSS 样式将下拉菜单向左浮动,即可实现按钮向左显示二级菜单的效果。 ```css .dropdown-menu { left: auto; right: 100%; } ``` 完整代码示例: ```html <div class="dropdown"> <button class="btn dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true">Dropdown</button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">菜单项1</a></li> <li><a class="dropdown-item" href="#">菜单项2</a></li> <li class="dropdown-submenu"> <a class="dropdown-item" href="#">二级菜单 <span class="float-right">▸</span></a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">二级菜单子项1</a></li> <li><a class="dropdown-item" href="#">二级菜单子项2</a></li> <!-- 更多子项 --> </ul> </li> <!-- 更多菜单项 --> </ul> </div> <style> .dropdown-menu { left: auto; right: 100%; } </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值