2014-01-28 3 views
0

Не знаю, почему, но границы не будут отображаться в IE 8-9, у меня не было возможности проверить 10 и выше. Также эффект css :hover не работает и модальное всплывающее окно. Я не знаю, есть ли работа для IE?Границы не отображаются в Internet Explorer

Он отлично работает в FF и хром

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; 
} 
+1

Границы и наведение на IE> = 9, не пробовали 8, так как jsfiddle не работает с ним. –

+0

Хм, скрипка работает в ie9, но локальная копия не –

+0

благодарит @CarlMarkham, что она знает, что она работает в более новых версиях. Я просто надеюсь, что есть способ исправить его для старых – SaturnsEye

ответ

1

Согласно MDN, Internet Explorer < 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). К сожалению, завершение вашего модального всплывающего окна в IE8 с использованием только css будет трудным, потому что :target pseudo isn't supported in that version.

Скриншот с каждым редактированием, сделанным в этом ответе: http://jsfiddle.net/V8H6T/12/.

+0

. Я обновил свой код и скрипту, чтобы включить всплывающее окно модели. Если вы нажмете на верхний «председатель», вы увидите, как он работает (но не в 9 <) – SaturnsEye

+0

@Adsy обновлен ответ для вашей модальной проблемы. – gpgekko

+0

А хорошо, это скрывает всплывающее окно в IE, но оно по-прежнему не появляется, когда я нажимаю ссылку. Это просто случай, когда он не работает в старом IE? – SaturnsEye

1

Lol, заглянул в это много, почесывая мою голову. Оказывается, ответ прост,

Вы используете два двоеточия вместо одного:

ul::before

должен быть

ul:before

Хотя есть еще некоторые ошибки стайлинга с этим так вам нужно будет исправить это. Но по крайней мере границы появляются сейчас, верно? : P

+0

ничего себе, они ха-ха, но да есть еще ошибка стиля! :( – SaturnsEye

+0

Не видел, что вы пришли к тому же решению, что и я, lol. – gpgekko

+0

Кстати, правильный путь с двумя двоеточиями: http://stackoverflow.com/a/13400379/148412 – ANeves

Смежные вопросы