【问题标题】:Internet Explorer 8 producing strange CSS bug on :hoverInternet Explorer 8 在 :hover 上产生奇怪的 CSS 错误
【发布时间】:2014-09-01 03:36:58
【问题描述】:

我正在做网站开发,目前正在使用 CSS 设置面包屑路径的样式。但是,我在 Internet Explorer 8 中遇到了这个奇怪的错误,我不知道为什么会这样。为了说明,这里有一些图片:

这是其中一个面包屑在悬停时的样子:http://i.imgur.com/Lrr5Qo0.png(在 Chrome 中拍摄的图像)

在 Internet Explorer 中,这是悬停时的样子:http://i.imgur.com/V5dzdcX.png

它在悬停之前显示良好,但是一旦鼠标移到它上面,它就会发疯。

我浏览了 CSS 代码,与 :hover 相关的唯一属性是颜色、背景、溢出和文本装饰。与margin、padding、height等无关。

可能是什么原因造成的?

相关 HTML:

<div class="headtitle pull-left">
    <h1 id="pageTitle" class="ms-core-pageTitle">

    CX Team

    </h1>
    <ul class="s4-breadcrumb">
        <li class="s4-breadcrumbRootNode">
            <span class="s4-breadcrumb-arrowcont">
                <img src="/_layouts/images/nodearrow.png" alt="" style="border-width:0px;display:inline-block;padding-top:4px;" />
            </span>
            <a class="s4-breadcrumbRootNode" href="/sites/cc/Pages/index.aspx">Connect</a>
            <ul class="s4-breadcrumbRootNode">
                <li class="s4-breadcrumbNode">
                    <span class="s4-breadcrumb-arrowcont">
                        <img src="/_layouts/images/nodearrow.png" alt="" style="border-width:0px;display:inline-block;padding-top:4px;" />
                    </span>
                    <a class="s4-breadcrumbNode" href="/sites/cc/residential/Pages/index0709-9951.aspx">Residential</a>
                    <ul class="s4-breadcrumbNode">
                        <li class="s4-breadcrumbNode">
                            <span class="s4-breadcrumb-arrowcont">
                                <img src="/_layouts/images/nodearrow.png" alt="" style="border-width:0px;display:inline-block;padding-top:4px;" />
                            </span>
                            <a class="s4-breadcrumbNode" href="/sites/cc/residential/customerexperience/Pages/default.aspx">Customer Experience</a>
                            <ul class="s4-breadcrumbNode">
                                <li class="s4-breadcrumbCurrentNode">
                                    <span class="s4-breadcrumb-arrowcont">
                                        <img src="/_layouts/images/nodearrow.png" alt="" style="border-width:0px;display:inline-block;padding-top:4px;" />
                                    </span>
                                    <a class="s4-breadcrumbCurrentNode" href="/sites/cc/residential/customerexperience/Pages/CX-Team.aspx">CX Team</a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

不幸的是,我无法控制这一点;它是由 Sharepoint 动态创建的(我不得不使用它)。

CSS:

.s4-breadcrumb a:hover {
    overflow:auto\9;
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF9900', endColorstr='#FF6600');
    background-image:-moz-linear-gradient(top,#F90,#F60);
    background-image:-webkit-gradient(linear,0 0,0 100%,from(#F90),to(#F60));
    background-image:-o-linear-gradient(top,#F90,#F60);
    background-image:linear-gradient(to bottom,#F90,#F60);
}

.v4master .s4-breadcrumbNode a,
.v4master .s4-breadcrumbCurrentNode a,
.v4master .s4-breadcrumbRootNode a,
.v4master .s4-breadcrumbNode a:hover,
.v4master .s4-breadcrumbCurrentNode a:hover,
.v4master .s4-breadcrumbRootNode a:hover {
    color:white !important;
}

ul.s4-breadcrumb,
ul.s4-breadcrumb ul {
    line-height:normal;
}

ul.s4-breadcrumb a {
    line-height:40px;
}

ul.s4-breadcrumb,
ul.s4-breadcrumb ul {
    margin-bottom:0;
}

ul.s4-breadcrumb .s4-breadcrumb-arrowcont {
    margin-bottom:14px;
}

ul.s4-breadcrumb,
ul.s4-breadcrumb ul {
    margin-left:0;
}

ul.s4-breadcrumb,
ul.s4-breadcrumb ul {
    margin-right:0;
}

ul.s4-breadcrumb,
ul.s4-breadcrumb ul {
    margin-top:0;
}

ul.s4-breadcrumb .s4-breadcrumb-arrowcont {
    margin-top:10px;
}

.s4-breadcrumb a {
    padding-left:5px;
}

.headtitle > ul.s4-breadcrumb {
    padding-left:10px;
}

.headtitle > ul.s4-breadcrumb {
    padding-left:0\9;
}

.s4-breadcrumb {
    padding-left:15px;
}

.s4-breadcrumb a {
    padding-right:5px;
}

.s4-breadcrumb {
    padding-right:15px;
}

.s4-breadcrumb a:hover {
    text-decoration:none;
}

【问题讨论】:

  • 贴出相关的HTML/CSS,这个看截图是无法调试的。
  • 我试试猜,加ul li a:hover{margin-bottom:0}
  • 添加 ul.s4-breadcrumb a:hover {margin-bottom:0} 有这个效果:i.imgur.com/OjD0RnG.png

标签: html css internet-explorer web internet-explorer-8


【解决方案1】:

我看到了两个可能导致它的原因:带有仅限 IE9 的 hack 的溢出声明,以及缺少修复旧 IE hasLayout 错误的声明,如果您使用 CSS 过滤器会出现该错误。

看看这是否可行(我希望你确实可以控制 CSS):

.s4-breadcrumb a:hover {
    overflow: auto; /* or: hidden */
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF9900', endColorstr='#FF6600');
    zoom: 1; /* cure for the bug */
    background-image:-moz-linear-gradient(top,#F90,#F60);
    background-image:-webkit-gradient(linear,0 0,0 100%,from(#F90),to(#F60));
    background-image:-o-linear-gradient(top,#F90,#F60);
    background-image:linear-gradient(to bottom,#F90,#F60);
} 

.
如果这不能治愈它,请创建一个http://jsbinb.com。如果您为图像指定宽度、高度和边框,那么您不能自己上传它们并不重要。也就是说:如果您的 HTML 中的图像在其中发挥作用。

【讨论】:

  • 尝试添加缩放和注释掉溢出(以及将其设置为隐藏),但似乎都没有任何效果。这是你要找的吗? gist.github.com/a4849ee75f15967bdd6a 代码道歉; Sharepoint 绝对是一团糟:/
  • 还是jsbin.com/nicebapu/1 更好?它显示不完美,但应该给你一个想法。
  • 我忘记了 JSBin 之类的东西在 IE8 中不起作用。现在,我可以将代码复制并粘贴到我的编辑器中,从而在 IE8 中对其进行测试,但您确实必须将代码修剪到相关部分。您在问题中包含的代码 缺少 基本部分,所以这也不好。只需亲自尝试该代码,您就会看到。
  • 缺少哪些部分?我非常乐意提供我的 CSS 文件。
  • 我不知道。只需使用您提供的两个代码部分创建一个页面,并查看它不会重现问题。它甚至不会在包含图像的导航菜单附近形成。
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多