2013-07-19 2 views
0

Короче говоря: мне нужно переопределить отображение: none! Важно для некоторых элементов, которые имеют отображение: встроенный встроенный встроенный элемент HTML.Селектор атрибутов CSS в режиме IE7 Стандартные режимы

Это должно работать в IE с установленным стандартом IE7.

Посмотрите на мою Pastebin ссылку для подробностей: http://pastebin.com/m06YXwHq Результат: http://cdpn.io/sgrjz

Это работает в IE9 с режимом IE9 стандартов (и все другие современные браузеры тоже), но не с стандартном режиме IE7.

Любая помощь оценена!

+1

Этот вопрос хорошо иллюстрирует, почему '! Important' считается такой плохой практикой. – Spudley

+0

Да, я знаю о проблемах. Я не полностью контролирую код, поэтому я в этом беспорядке. – jBoive

ответ

1

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

Как вы, по-видимому, уже знаете, IE7 не поддерживает селектора атрибутов, используемые таким образом, чтобы вы были перекошены на этом фронте, и единственным другим жизнеспособным решением является добавление класса к элементу и стилю (но если вы мог бы сделать это, я думаю, вы уже это сделали).

Кроме того, вы смотрите на решения Javascript.

Вы можете попробовать один из сценариев polyfill, который добавляет поддержку новых CSS-функций в старый IE. Либо IE9.js, либо Selectivizr. Эти два сценария, как правило, довольно хороши в добавлении поддержки селекторов CSS к старым IE, но то, что вы здесь делаете, является реальным краеугольным камнем, и я не удивлюсь, если они не справятся с этим. Дайте им попробовать, но не ожидайте чудес.

Учитывая, что более ручной подход может работать лучше: если вы используете jQuery или аналогичную библиотеку, они должны иметь возможность легко выбирать нужные элементы, и вы могли бы работать оттуда. (если вы не используете jQuery или библиотеку со встроенным движком селектора, тогда вы будете бороться, но если вы поддерживаете IE7, было бы неожиданностью услышать, что вы уже не используете jQuery)

Но реальное сообщение, которое выходит из этого, заключается в том, что встроенные стили и модификатор CSS !important являются плохими практиками и возвратятся, чтобы укусить вас. И тебя сильно укусили.

+0

На самом деле, IE7 поддерживает поддержку селекторов атрибутов. Но, видимо, вы не можете использовать атрибут style .. http://reference.sitepoint.com/css/attributeselector – jBoive

+0

Я понял, что он вообще не поддерживается в IE7, но прошло какое-то время, так как я даже пытался использовать его в IE7, поэтому я могу ошибаться. В любом случае мы согласны с тем, что конкретный случай, в котором вы нуждаетесь, не работает, поэтому он не имеет никакого значения для результата.(Я бы предположил, что это даже делает менее вероятным, что библиотеки полиполков помогут, хотя) – Spudley

+0

IE7 имеет поддержку селекторов атрибутов CSS2/CSS3, но это невероятно неоднородно. – BoltClock

0

Как я уже говорил, IE7 не может использовать атрибут style как CSS-селектор.

Мне удалось обойти его, поэтому я вышел из леса. Ни одно решение, которое кто-либо еще не найдет для использования, так как это характерно для моей настройки.

Спасибо за все входные данные в любом случае!

/J

+0

Без вреда, давая нам знать, что вы сделали, чтобы решить эту проблему, хотя? В противном случае вы также можете не публиковать ответ в первую очередь. – BoltClock

+0

Я отправил «решение» - мое единственное руководство было тупиком. Я думаю, что это достаточно разумно. Но хорошо: мне удалось использовать иерархию моей HTML-страницы вместо того, чтобы использовать атрибут style для достижения того же. – jBoive

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