Internet Explorer 11 ignores list-style:none on th

2020-05-16 23:46发布

I am using the Superfish jQuery plugin for my menu. In Chrome and in mobile Opera emulator it works fine but in Internet Explorer 11 the CSS property list-style:none only applies to the top level of the menu and not to the toggled submenus, although in the dev tools view it seemingly applies to the appropriate elements. It results in this : Bugged menu The used this CSS:

/*** ESSENTIAL STYLES ***/
.sf-menu, .sf-menu * {
    margin: 0;
    padding: 0;
    list-style: none;
}
.sf-menu li {
    position: relative;
}
.sf-menu ul {
    position: absolute;
    display: none;
    top: 100%;
    left: 0;
    z-index: 99;
}
.sf-menu > li {
    float: left;
}
.sf-menu li:hover > ul,
.sf-menu li.sfHover > ul {
    display: block;
}

.sf-menu a {
    display: block;
    position: relative;
}
.sf-menu ul ul {
    top: 0;
    left: 100%;
}


/*** DEMO SKIN ***/
.sf-menu {
    float: left;
    margin-bottom: 1em;
}
.sf-menu ul {
    box-shadow: 2px 2px 6px rgba(0,0,0,.2);
    min-width: 12em; /* allow long menu items to determine submenu width */
    *width: 12em; /* no auto sub width for IE7, see white-space comment below */
}
.sf-menu a {
    border-left: 1px solid #fff;
    border-top: 1px solid #dFeEFF; /* fallback colour must use full shorthand */
    border-top: 1px solid rgba(255,255,255,.5);
    padding: .75em 1em;
    text-decoration: none;
    zoom: 1; /* IE7 */
}
.sf-menu a {
    color: #13a;
}
.sf-menu li {
    background: #BDD2FF;
    white-space: nowrap; /* no need for Supersubs plugin */
    *white-space: normal; /* ...unless you support IE7 (let it wrap) */
    -webkit-transition: background .2s;
    transition: background .2s;
}
.sf-menu ul li {
    background: #AABDE6;
}
.sf-menu ul ul li {
    background: #9AAEDB;
}
.sf-menu li:hover,
.sf-menu li.sfHover {
    background: #CFDEFF;
    /* only transition out, not in */
    -webkit-transition: none;
    transition: none;
}

/*** arrows (for all except IE7) **/
.sf-arrows .sf-with-ul {
    padding-right: 2.5em;
    *padding-right: 1em; /* no CSS arrows for IE7 (lack pseudo-elements) */
}
/* styling for both css and generated arrows */
.sf-arrows .sf-with-ul:after {
    content: '';
    position: absolute;
    top: 50%;
    right: 1em;
    margin-top: -3px;
    height: 0;
    width: 0;
    /* order of following 3 rules important for fallbacks to work */
    border: 5px solid transparent;
    border-top-color: #dFeEFF; /* edit this to suit design (no rgba in IE8) */
    border-top-color: rgba(255,255,255,.5);
}
.sf-arrows > li > .sf-with-ul:focus:after,
.sf-arrows > li:hover > .sf-with-ul:after,
.sf-arrows > .sfHover > .sf-with-ul:after {
    border-top-color: white; /* IE8 fallback colour */
}
/* styling for right-facing arrows */
.sf-arrows ul .sf-with-ul:after {
    margin-top: -5px;
    margin-right: -3px;
    border-color: transparent;
    border-left-color: #dFeEFF; /* edit this to suit design (no rgba in IE8) */
    border-left-color: rgba(255,255,255,.5);
}
.sf-arrows ul li > .sf-with-ul:focus:after,
.sf-arrows ul li:hover > .sf-with-ul:after,
.sf-arrows ul .sfHover > .sf-with-ul:after {
    border-left-color: white;
}

(The menu ul has the class of sf-menu). What is even more interesting is that on the second or another visit of the same page it displays properly. However on the first load of the IE instance it always displays wrong.

EDIT: When I set the list style rule for every ul instead, it works as expected.

15条回答
ゆ 、 Hurt°
2楼-- · 2020-05-17 00:21

Not pretty, using jQuery, but hey, it's a darned annoying bug. (Really takes me back man!)

    // Mitigate IE/Edge bug showing bullets on lists which are hidden when loading the page
    $(document).ready(function(){
        if (document.documentMode || /Edge/.test(navigator.userAgent)) {
            $('ul:hidden').each(function(){
                $(this).parent().append($(this).detach());
            });
        }
    });
查看更多
兄弟一词,经得起流年.
3楼-- · 2020-05-17 00:27

Just place it in "head" tag:

<style>
    ul { list-style-type:none }
</style>

You're wellcome :)

查看更多
来,给爷笑一个
4楼-- · 2020-05-17 00:36

I had the same problem with IE10 & IE11. Using <ul style="display: none;"></ul> did not work for me but

.sf-arrows li {
    list-style-image: url(data:0);
}

worked perfect! Peter's solution above should be marked as the answer.

查看更多
forever°为你锁心
5楼-- · 2020-05-17 00:37

I run into this problem a lot. I find that wrapping my CSS in a media query of @media with list-style:none; usually works.

查看更多
虎瘦雄心在
6楼-- · 2020-05-17 00:37

I had a similar issue in IE11 and setting the list-style for the ul didn't solve it. But I found the following solution here which did work for IE11:

.sf-arrows li {
    list-style-image: url(data:0);
}
查看更多
可以哭但决不认输i
7楼-- · 2020-05-17 00:40

This solution works perfectly for me, the only one tha worked

.sf-arrows li {
list-style-image: url(data:0);
}

Thank you for sharing it

查看更多
登录 后发表回答