Я честно не вижу способ сделать то, что вы хотите, в чистом CSS, кроме исправления кода, чтобы удалить горы плохой практики, которые привели вас по этому пути в первую очередь.
Как вы, по-видимому, уже знаете, IE7 не поддерживает селектора атрибутов, используемые таким образом, чтобы вы были перекошены на этом фронте, и единственным другим жизнеспособным решением является добавление класса к элементу и стилю (но если вы мог бы сделать это, я думаю, вы уже это сделали).
Кроме того, вы смотрите на решения Javascript.
Вы можете попробовать один из сценариев polyfill, который добавляет поддержку новых CSS-функций в старый IE. Либо IE9.js, либо Selectivizr. Эти два сценария, как правило, довольно хороши в добавлении поддержки селекторов CSS к старым IE, но то, что вы здесь делаете, является реальным краеугольным камнем, и я не удивлюсь, если они не справятся с этим. Дайте им попробовать, но не ожидайте чудес.
Учитывая, что более ручной подход может работать лучше: если вы используете jQuery или аналогичную библиотеку, они должны иметь возможность легко выбирать нужные элементы, и вы могли бы работать оттуда. (если вы не используете jQuery или библиотеку со встроенным движком селектора, тогда вы будете бороться, но если вы поддерживаете IE7, было бы неожиданностью услышать, что вы уже не используете jQuery)
Но реальное сообщение, которое выходит из этого, заключается в том, что встроенные стили и модификатор CSS !important
являются плохими практиками и возвратятся, чтобы укусить вас. И тебя сильно укусили.
Этот вопрос хорошо иллюстрирует, почему '! Important' считается такой плохой практикой. – Spudley
Да, я знаю о проблемах. Я не полностью контролирую код, поэтому я в этом беспорядке. – jBoive