边框不会在Internet Explorer中显示

时间:2014-01-28 08:50:47

标签: html css

我不知道为什么但是IE 8-9中没有显示边框,我还没有去检查10及以上。此外,css :hover效果也不起作用模态弹出窗口。我不知道IE是否有解决方法?

它在FF和chrome中完美运行

FIDDLE

HTML:

<div class="tree">
    <ul>
        <li>
            <a href="chairman"><span class="accent">Chairman / Owner</span><p>Name</p></a>



            <ul>
                <li>
                    <a href="financemanager"><span class="accent">Finance &<br>
                    Managing Director</span><span>Name</span></a>

                    <ul>
                        <li><a href="financeteam"><span class="accent">Finance
                        Team</span> <span>Name</span><br></a></li>

                        <li><a href="salesdirector"><span class="accent">Sales
                        Director</span><span>Name</span></a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

CSS:

body {
    width:100%;
}

* {margin: 0; padding: 0;}

ul {
    line-height:20px;
}

.tree ul {
    padding-top: 20px; position: relative;

    transition: all 0.5s;
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
}

.tree li {
    float: left; text-align: center;
    list-style-type: none;
    position: relative;
    padding: 20px 5px 0 5px;

    transition: all 0.5s;
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
}

/*We will use ::before and ::after to draw the connectors*/

.tree li::before, .tree li::after{
    content: '';
    position: absolute; top: 0; right: 50%;
    border-top: 1px solid #ccc;
    width: 50%; height: 20px;
}
.tree li::after{
    right: auto; left: 50%;
    border-left: 1px solid #ccc;
}

/*We need to remove left-right connectors from elements without 
any siblings*/
.tree li:only-child::after, .tree li:only-child::before {
    display: none;
}

/*Remove space from the top of single children*/
.tree li:only-child{ padding-top: 0;}

/*Remove left connector from first child and 
right connector from last child*/
.tree li:first-child::before, .tree li:last-child::after{
    border: 0 none;
}

/*Adding back the vertical connector to the last nodes*/

.tree li:last-child::before{
    border-right: 1px solid #ccc;
    border-radius: 0 0px 0 0;
    -webkit-border-radius: 0 0px 0 0;
    -moz-border-radius: 0 0px 0 0;
}

.tree li:first-child::after{
    border-radius: 0px 0 0 0;
    -webkit-border-radius: 0px 0 0 0;
    -moz-border-radius: 0px 0 0 0;
}

/*Time to add downward connectors from parents*/
.tree ul ul::before{
    content: '';
    position: absolute; top: 0; left: 50%;
    border-left: 1px solid #ccc;
    width: 0; height: 20px;
}

.tree li a{
    border: 1px solid #ccc;
    padding: 5px 10px;
    text-decoration: none;
    color: #666;
    font-family: arial, verdana, tahoma;
    font-size: 13px;
    display: inline-block;

    border-radius: 0px;
    -webkit-border-radius: 0px;
    -moz-border-radius: 0px;

    transition: all 0.5s;
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
}

/*Time for some hover effects*/
/*We will apply the hover effect the the lineage of the element also*/
.tree li a:hover, .tree li a:hover+ul li a {
    background: #E9E9E9; color: black; border: 1px solid #94a0b4;
}
/*Connector styles on hover*/
.tree li a:hover+ul li::after, 
.tree li a:hover+ul li::before, 
.tree li a:hover+ul::before, 
.tree li a:hover+ul ul::before{
    border-color:#06C;
}

span.accent{
    background-color: #113963;
    display: block;
    margin: -5px -10px 5px;
    padding: 5px;
    color: white;
    font-weight:bold;
}

模态CSS:

.modalDialog {
    position: fixed;
    font-family: Arial, Helvetica, sans-serif;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0, 0, 0, 0.8);
    z-index: 99999;
    opacity:0;
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    pointer-events: none;
}

.modalDialog:target {
    opacity:1;
    pointer-events: auto;
}

.modalDialog > div {
    width: 400px;
    position: relative;
    margin: 10% auto;
    padding: 5px 20px 13px 20px;
    border-radius: 5px;
    background: #F4F4F4;    
}

.close {

    background: #FF2E28;
    color: #FFFFFF;
    line-height: 25px;
    position: absolute;
    right: -12px;
    text-align: center;
    top: -10px;
    width: 24px;
    text-decoration: none;
    font-weight: bold;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    border-radius: 12px;
}

.close:hover {
    background: #600;
}

.modalDialog + image {
    border:solid 1px black;
}

2 个答案:

答案 0 :(得分:1)

哈哈,看着这很多人挠我的头。事实证明答案很简单,

您使用的是两个冒号而不是一个:

ul::before

应该是

ul:before

虽然这还有一些样式错误,所以你需要修复它们。但现在至少出现了边界,对吧? :P

答案 1 :(得分:1)

根据MDN,Internet Explorer&lt; 9不支持CSS3 ::before伪。如果你想支持8,你将不得不使用CSS2 :before伪。这将解决边界问题。

悬停问题可能与声明正确doctype有关,如评论中所述。

模态的问题在于IE中,它实际上位于其他元素的前面,只是看不见。您必须设置display: none,然后在实际显示时将其放置:

.modalDialog {
    display: none;
}

.modalDialog:target {
    display: block;
}

原因是pointer-events css属性isn't supported in IE(或至少不是11之前)。 遗憾的是,仅使用css在IE8中完成模态弹出将很难,因为:targetisn't supported in that version

摆弄这个答案中的每一个编辑:http://jsfiddle.net/V8H6T/12/