Есть ли способ заставить IE6 изящно потерпеть неудачу при встрече с '>'? - PullRequest
2 голосов
/ 10 декабря 2010

Хорошо известно, что IE6 не поддерживает прямой выбор потомков с >, но недавно я обнаружил, что если у вас есть несколько правил выбора, разделенных запятыми, он игнорирует их все, если у одного есть >.

Вот фрагмент кода, который я использовал для проверки проблемы:

<body>
    <style>
        .one, .two{
            width: 100px; 
            height: 100px;
            background-color: #FFCCAA;
        }
        body .two, body > .one{
            background-color: #CCFFAA;
        }
    </style>
    <div class="one"></div>
    <div class="two"></div>     
</body>

Я предполагаю (не читал документы), что это ожидаемое поведение, потому что когда вы пишете AAA, BBB, вына самом деле не определяют два селектора, а один из двух частей.

Тем не менее, я должен спросить ... Есть ли решение, которое не подразумевает написание моих правил CSS дважды?

СпасибоВы,
Алинь

PS Использование JavaScript недопустимо.

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Поведение, с которым вы столкнулись, является частью стандартного исправления ошибок CSS , поэтому IE6 делает это правильно (для браузера, который не поддерживает CSS2).

Вам необходимо продублироватьправило и использовать селекторы CSS2 отдельно:

<style>
    body .two {
        background-color: #CCFFAA;
    }
    body > .one  {
        background-color: #CCFFAA;
    }
</style>
1 голос
/ 10 декабря 2010

Извините, но я не верю, что это возможно без использования Javascript.

Существуют некоторые JS-хаки ( Дин Эдвардс IE7 скрипт приходит на ум), но без JS простой факт заключается в том, что IE6 не поддерживает его, поэтому вы не можете его использовать.

Полагаю, если вы готовы сделать что-нибудь без JS, вы можете рассмотреть плагин Google Frame, который полностью заменяет движок рендеринга в IE в пользу движка Chrome. , Но это гораздо больше, чем все, что когда-либо делал Javascript, так что я думаю, вы тоже не захотите этого делать.

Честно говоря, лучший вариант - отказаться от поддержки IE6. Но я ценю это, возможно, не вариант. (это будет хорошо для вашего здравомыслия, хотя)

Если вам действительно требуется поддержка IE6, единственная реальная опция, которую вы имеете, это поместить классы или идентификаторы во все и забыть об использовании чего-либо, кроме самых простых селекторов CSS.

Извините.

...