0

Итак, вот еще одна проблема с z-индексом в IE7, с которой я столкнулся. Я нашел объяснение проблемы еще где, но без исправления.IE возвращает неверный индекс z

Когда у вас есть позиционированный элемент с встроенным z-индексом 0, javascript не возвращает правильный z-индекс. Если z-index установлен в элемент в таблице стилей, он вместо этого вернет z-index. Я получаю тот же результат, используя jQuery.

Сделать HTML-файл со следующим:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function(){ 
     $('button').click(function(){ 
     alert($('#mainBox').css('zIndex')); 
     }); 
    }); 
</script> 
<style type="text/css"> 
    #mainWr { 
     position: relative; 
     z-index: 2; 
     border: 1px solid #333; 
     width: 200px; 
     height: 200px; 
    } 
    #mainBox { 
     z-index: 1; 
     border: 1px solid #555; 
     width: 100px; 
     height: 100px; 
     position: absolute; 
     top: 50px; 
     left: 50px; 
    } 

</style> 

<div id="mainWr"> 
    <div id="mainBox" style="z-index: 0;"></div> 
</div> 
<br /> 
<button type="button">Show #mainBox z-index</button> 

Open, что в IE7. Проблема не существует в IE8.

Я jsfiddled, если у вас есть IE7, в противном случае вам нужно будет использовать код и отобразить его с любым методом, который используется для эмуляции IE7:

http://jsfiddle.net/dalelarsen/DndnM/

Я не знаю ни решений. Любые комментарии приветствуются.

ответ

0

Хорошо, я решил это. Решение состоит в том, чтобы убедиться, что вы точно уловите то, что является встроенным, и не полагайтесь на браузер.

Итак, я написал небольшой объект (как плагин jquery), который анализирует то, что находится в атрибуте стиля элемента, и возвращает правильное значение. Я использую это для получения z-индекса, но я написал его для возврата любого стиля. Вы должны пройти в стиле, запрашиваемом с использованием реального имени css стиля, например. 'z-index' вместо 'zIndex'. Может быть, в какой-то более поздний день я переписал его, чтобы объяснить случай верблюда.

Во всяком случае, здесь:

jQuery.fn.inlineStyle = function(stylesName){ 

    var allStyles = this.attr('style'); 

    var allStylesArr = allStyles.split(';'); 
    var allStylesObj = {}; 
    for (var i = 0; i < allStylesArr.length; i++) { 
     var parts = allStylesArr[i].split(':'); 
     allStylesObj[$.trim(parts[0]).toLowerCase()] = $.trim(parts[1]); 
    } 
    var rStyleVal = false; 
    if (allStylesObj[stylesName]) rStyleVal = allStylesObj[stylesName]; 
    return rStyleVal; 
}; 
+0

Я не заметил эту ошибку. Да, вы должны передать точное имя стиля так же, как и записать его в файле CSS. Была ли причина, по которой вы считали, что 'zIndex' будет работать? – Brad

+0

@Brad, выше это новый сценарий, который я написал. Прежде чем я использовал jcuery .css(), что позволяет принимать zIndex, потому что camelCase - это то, что использует javascript. Javascript не может иметь дефисы в именах переменных и объектов. Мой скрипт не полагается на браузер, возвращающий текущий текущий стиль, он получает только то, что находится в атрибуте style для элемента. В моем сценарии у меня просто не было времени для регистрации camelCase. – UpHelix

1

Если я не ошибаюсь, предоставляя отрицательный z-index, эта проблема решается. Разработчик здесь столкнулся с этой проблемой, и я считаю, что это была резолюция.

+1

Я считаю, что если вы указываете 'г-index' от 0 (или не указать вообще) браузер получает, чтобы определить наслоения этих элементов. Предоставление IE этого усмотрения - это эквивалент макета, позволяющий быку в вашем фарфоровом магазине. – Brad

+0

@ Возможно, я говорил из недавнего опыта. Если изменение отрицательного z-индекса позволило IE правильно обрабатывать нашу страницу. – Woot4Moo

+0

Спасибо за ваши комментарии. Вопрос заключается в том, как IE возвращает значение zIndex, а не как оно выглядит на странице. Это вопрос с использованием JS, а не вопрос css. Если изменить его на что-либо, кроме 0, то он вернет правильный z-индекс. Проблема существует, когда она равна 0. Это когда мне это нужно. – UpHelix

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