Проблема в том, что эти два div
не являются взаимоисключающими - IE видит оба ваших .content и .content_IE div, а расположение, которое вы пытаетесь установить, определяется внутренним .content div (потому что оба имеют к ним position: relative
). Попробуйте удалить .content div из своего кода и посмотрите на него в IE, вы, скорее всего, увидите те же проблемы, что и в других браузерах. (Для получения дополнительной информации, эта статья довольно хорошо описывает позиционирование)
(это, возможно, немного многословно, но предоставляет некоторые разумные стратегии для предотвращения подобных проблем в будущем):
Здесь происходит несколько вещей: специфичная для IE обработка и проблемы z-index.
Во-первых, несколько рекомендаций по стилю / стратегии:
- Не используйте встроенные стили (высоту, которую вы устанавливаете для классов .content и .content_IE), это имеет еще меньше смысла, поскольку вы устанавливаете другие свойства стиля (например, ширину) с помощью CSS. Единственная причина, по которой я могу это сделать (и даже тогда я бы порекомендовал против этого), заключается в том, что вы что-то делаете с Javascript.
Для объявлений, специфичных для IE, лучшим подходом является настройка ваших стилей, чтобы вы могли позаботиться о каскаде - установка базовых стилей (высота, ширина и т. Д.) Для класса .content и затем примените несколько определенных правил IE (например, разной высоты). Это будет выглядеть примерно так:
<style>
.content {
background: #fff;
height: 550px;
width: 990px;
position: relative;
float: left;
top: 50px;
}
</style>
<!--[if IE 7]>
<style>
.content {
height: 750px;
}
</style>
<![endif]-->
Таким образом, вы должны испытывать а) меньшую потенциальную странность и б) легче поддерживать свой код. Если ваши таблицы стилей достаточно велики, разбейте правила на два (например, «main.css» и «ie7.css» и укажите ссылку на IE внутри условного комментария.
Теперь, что касается проблемы z-index - я бы порекомендовал применить z-index к изображению, которое вы пытаетесь поместить «поверх» содержимого, и использовать положительное значение. Это должно предотвратить то, что, по моему мнению, происходит в IE (в общем, IE имеет проблемы с отрицательными значениями, поэтому старайтесь избегать их, если можете).
Если это решит проблему, продолжайте работать с вашим кодом, чтобы вам тоже не понадобился условный CSS.