2014-05-11 3 views
1

Что я хочу сделать, это написать селектор, который соответствует произвольному значению в одном месте, а затем требует, чтобы другое значение было равно ему. Если [attr="value"] разобраны «значение» как регулярное выражение, то это было бы решить мою проблему:Как использовать/эмулировать regex-подобные обратные ссылки в селекторах атрибутов?

*[class="(.+)"] *[class="if_\1"] {/* styles */} 

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

Возможно ли это?

+0

Ваш вопрос о CSS или о Javascript? Название говорит CSS, но единственный тег для Javascript. – Boaz

+0

Возможно, вам стоит перепроектировать код, чтобы не требовать такого рода магии. –

+0

@Boaz моя ошибка, теги теперь исправлены. –

ответ

1

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

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

+0

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

+0

@twberger в каждом подходе, о котором я могу думать, вам нужно иметь этот список или создать его как первый шаг. –

+0

@twberger: В этом весь смысл, но я был вынужден добавить отдельный параграф о препроцессорах, чтобы кто-то еще не говорил об этом, как будто я не знал, что они существуют. – BoltClock

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