У меня есть интересная проблема здесь. Я использую класс для элемента в качестве переключателя для управления большим количеством макетов на моем сайте.
Если класс применяется, определенные вещи случаются, а если класс не применяется, они не случаются. Javascript используется для применения и удаления класса. Соответствующий CSS примерно такой:
.rightSide { display:none; }
.showCommentsRight .rightSide { display:block; width:50%; }
.showCommentsRight .leftSide { display:block; width:50%; }
И HTML:
<body class="showCommentsRight">
<div class="container"></div>
<div class="leftSide"></div>
<div class="rightSide"></div>
</div>
<div class="container"></div>
<div class="leftSide"></div>
<div class="rightSide"></div>
</div>
<div class="container"></div>
<div class="leftSide"></div>
<div class="rightSide"></div>
</div>
</body>
Я упростил вещи, но это по сути метод. Вся страница меняет макет (скрывая правую сторону в трех разных областях), когда на теле установлен флаг. Это работает в Firefox и IE8. Он не работает в IE8 в режиме совместимости. Что удивительно, так это то, что если вы сидите и обновляете страницу, результаты могут отличаться. Он выберет правую часть другого раздела, чтобы показать. Иногда он будет отображать только правую часть верхней части, иногда - середину.
Я пытался:
- валидатор (для поиска искаженного HTML)
- дважды проверил мое форматирование CSS, и ...
- убедиться, что мой лист взлома IE7 не дал эффекта.
- помещая класс флага в другой элемент-обертку без тела (все еще имеет то же странное поведение)
Итак, мой вопрос:
- Есть ли способ сделать это поведение надежным?
- Когда IE7 решает сделать стайлинг заново?
Спасибо всем.