Search code examples
cssinternet-explorer-9

IE9: removing "dirty" round corners


This portion of code draws round borders on a menu.

That works well in Chrome, IE11 and even IE10, but in IE9 there is a problem: the round borders are "dirty"...

enter image description here

.navsub {
    display: block;
    z-index: 999;
}
.navsub li {
    /*float: left;*/
    margin: 0px 2px;
    padding: 3px 5px;
    display: inline-block;
    border: 2px solid #fff;
    border-radius: 5px;
    z-index: 100;
    position: relative;
}
.navsub li:hover a, .navsub li.selected a {
    color: #fff;
}
.navsub li:hover, .navsub li.selected {    
    background: rgb(204, 0, 0);
    background: -moz-linear-gradient(top, rgb(204, 0, 0) 0%, rgb(170, 0, 0) 43%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(204, 0, 0)), color-stop(43%, rgb(170, 0, 0)));
    background: -webkit-linear-gradient(top, rgb(204, 0, 0) 0%, rgb(170, 0, 0) 43%);
    background: -o-linear-gradient(top, rgb(204, 0, 0) 0%, rgb(170, 0, 0) 43%);
    background: -ms-linear-gradient(top, rgb(204, 0, 0) 0%, rgb(170, 0, 0) 43%);
    background: linear-gradient(to bottom, rgb(204, 0, 0) 0%, rgb(170, 0, 0) 43%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cc0000', endColorstr='#aa0000', GradientType=0);
    color: white;
}
.navsub li:hover::before, .navsub li.selected::before {
    border: solid;
    border-color: #A00000;
    border-width: 8px 10px 5px 4px;
    bottom: -3px;
    content:"";
    left: 10px;
    position: absolute;
    z-index: -1;
    -webkit-box-shadow: 3px 3px 5px -1px rgba(0, 0, 0, .3);
    box-shadow: 3px 3px 5px -1px rgba(0, 0, 0, .3);
    transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
}
<ul class="navsub">
    <li class="nav1"><a href="#">Una volta</a></li>
    <li class="nav1 selected"><a href="#">Un tango</a></li>
    <li class="nav1"> <a href="#">Una ragazza</a></li>
</ul>

How can I remove the "dirty" borders that draws Internet Explorer 9?


Solution

  • use this handy tool for generating the css for gradients http://www.colorzilla.com/gradient-editor/

    Support for full multi-stop gradients with IE9 (using SVG).

    .navsub {
        display: block;
        z-index: 999;
    }
    .navsub li {
        /*float: left;*/
        margin: 0px 2px;
        padding: 3px 5px;
        display: inline-block;
        border: 2px solid #fff;
        border-radius: 5px;
        z-index: 100;
        position: relative;
    }
    .navsub li:hover a, .navsub li.selected a {
        color: #fff;
    }
    .navsub li:hover, .navsub li.selected {    
       background: rgb(204,0,0); /* Old browsers */
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2NjMDAwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjQ3JSIgc3RvcC1jb2xvcj0iI2FhMDAwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYTAwMDAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
    background: -moz-linear-gradient(top, rgb(204,0,0) 0%, rgb(170,0,0) 47%, rgb(170,0,0) 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(204,0,0)), color-stop(47%,rgb(170,0,0)), color-stop(100%,rgb(170,0,0))); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, rgb(204,0,0) 0%,rgb(170,0,0) 47%,rgb(170,0,0) 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, rgb(204,0,0) 0%,rgb(170,0,0) 47%,rgb(170,0,0) 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, rgb(204,0,0) 0%,rgb(170,0,0) 47%,rgb(170,0,0) 100%); /* IE10+ */
    background: linear-gradient(to bottom, rgb(204,0,0) 0%,rgb(170,0,0) 47%,rgb(170,0,0) 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc0000', endColorstr='#aa0000',GradientType=0 ); /* IE6-8 */
        color: white;
    }
    .navsub li:hover::before, .navsub li.selected::before {
        border: solid;
        border-color: #A00000;
        border-width: 8px 10px 5px 4px;
        bottom: -3px;
        content:"";
        left: 10px;
        position: absolute;
        z-index: -1;
        -webkit-box-shadow: 3px 3px 5px -1px rgba(0, 0, 0, .3);
        box-shadow: 3px 3px 5px -1px rgba(0, 0, 0, .3);
        transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        -webkit-transform: rotate(45deg);
    }
    <ul class="navsub">
        <li class="nav1"><a href="#">Una volta</a></li>
        <li class="nav1 selected"><a href="#">Un tango</a></li>
        <li class="nav1"> <a href="#">Una ragazza</a></li>
    </ul>