【问题标题】:CSS drop-down menu fails to remain following hover activityCSS下拉菜单无法在悬停活动之后保持
【发布时间】:2013-11-08 12:13:57
【问题描述】:

我目前正在处理下一页上的几个下拉菜单: http://icao.tungsten.hireserve-test.com/home.html

最初,我们只有其中一个菜单,但我们的客户后来更改了他们的模板,我们现在需要实现两个下拉菜单。以前这是通过触发 show() 和 hide() 的 jQuery hover() 事件完成的,但现在我用 CSS 替换了它。

li.dynamic-children{
    position: relative
}

li.dynamic-children ul{
    display: none;
    position: absolute;
}

li.dynamic-children:hover ul{
    display: block;
    left: -1px;
    top: 18px;
    position: absolute;
    z-index: 100
}

li.dynamic-children:hover ul span{
    width: 100%
}

下拉菜单在悬停时成功显示,但是因为它是使用 CSS 完成的,所以似乎没有任何方法可以确保当用户离开触发下拉菜单的链接时下拉菜单仍然存在。这意味着用户无法选择下拉菜单中的任何项目,使其无用。

你们中的任何人对我如何强制菜单持续足够长的时间以使用户能够对下拉菜单进行选择有任何想法吗?

编辑:

基于下面提供的一些代码,我现在包含了以下 CSS 规则:

.s4-tn .horizontal ul.dynamic {
    background-color: #ECF4FC;
    border-top:4px solid #003D78;
    margin: 0;
    width: 255px;
    z-index: 1000 !important;
}


.menu-horizontal li.static, .menu-horizontal a.static, .menu-horizontal span.static {
    float: left;
    padding-bottom: 5px;
}

这些规则导致菜单保持不变,但在 IE7 中,下拉菜单现在落后于页面上的其他元素,使其在此浏览器中仍然无用。我尝试了许多 z-index 修复无济于事。

【问题讨论】:

  • 你的 CSS 搞砸了。在文件 controlesSharepoint.css 的第 99 行中,您要么必须增加 a 标签的高度,要么减少 ul 的 margin-top。设置margin: 0px 0 0 0; 并完成。使用 chrome 检查器进行检查
  • 这不是我的 CSS。它是由我们的客户提供的,因此它为什么如此混乱。不幸的是,我们不应该改变太多。
  • 但是 css 是唯一的罪魁祸首。您必须更正相同的内容才能使功能正常工作。也可以在第 2840 行增加height:34px
  • 我知道。如果有的话,我们应该用 icams-specific.css 文件覆盖他们的 css。

标签: html css drop-down-menu


【解决方案1】:

试试这个,

.s4-tn .horizontal ul.dynamic {
    background-color: #ECF4FC;
    border: 0 solid #003D78;
    margin: 0;
    width: 255px;
    z-index: 101;
}



 li.dynamic-children:hover ul {
    display: block;
    left: -1px;
    position: absolute;
    top: 22px;
}

【讨论】:

  • 这是一个很好的解决方案,尽管我添加了哪个属性来将下拉菜单稍微向下移动(所以我下降到深蓝色以下)
  • 这会导致菜单下降到左侧菜单下方。
  • k 如果您更喜欢使用此边框顶部:4px 实心 #003D78;到 .s4-tn .horizo​​ntal ul.dynamic
  • 这并不能解决左侧就业菜单覆盖下拉菜单的问题。尤其是在 IE7 中。
  • 同样的问题。现在问题出在 Firefox 中
【解决方案2】:

两者之一:

  • 选项 1(第 2840 行)

.s4-tn li.static > .menu-item {

color: #3b4f65;

white-space: nowrap;

border: 1px solid transparent;

padding: 4px 10px;

display: inline-block;

height: 34px;

vertical-align: middle;

}

  • 选项 2(第 99 行)

    .s4-tn .horizontal ul.dynamic {

margin: 0 0 0 0;

border: 0px #003D78 solid;

width: 255px;

background-color: #ecf4fc;

}

【讨论】:

  • IE7 不支持 inline-block 所以第一个选项不会在这个浏览器中中断吗?
  • 上面显示的代码与您的文件相同。我刚刚从您的网站复制了相同的内容并更改了高度的值。因此,如果您的一方在 IE7 上运行良好,那么在此之后它也可以正常运行。否则,请告诉您的客户的提供者先更正此问题,
  • 快到了。不幸的是,该菜单现在出现在 IE7 左侧菜单的后面。我已经为此添加了 100 的 z-index 值,但它似乎没有效果。
  • 您网站的菜单在 IE8 上运行良好,但在 IE7 中无法运行。我现在只能说您尝试搜索 shiv/shim 并添加相同的内容。试试看有没有帮助
猜你喜欢
  • 2017-06-28
  • 1970-01-01
  • 2018-06-29
  • 2017-08-18
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
相关资源
最近更新 更多