Это невозможно сделать с помощью CSS2.1, но это возможно с помощью CSS3-атрибутов подгонки подбора соответствия (которые являются поддерживаются в IE7 +):
div[class^="status-"], div[class*=" status-"]
Обратите внимание на пробел символ во втором селекторе атрибутов. Это поднимает элементы div
, чей атрибут class
соответствует любому из этих условий:
[class^="status-"]
- начинается с «status-» (очевидно). [class*=" status-"]
- содержит подстроку «status-», которая возникает непосредственно после символа пробела. Имена классов разделяются пробелом на спецификацию HTML , следовательно, значимый пробельный символ. Это проверяет любые другие классы после первого, если указано несколько классов, и добавляет бонус к проверке первого класса в случае, если значение атрибута заполняется пробелом (что может случиться с некоторыми приложениями, которые выводят class
атрибуты динамически). Естественно, это также работает в jQuery, как показано здесь здесь .
Причина, по которой вам нужно объединить два атрибута селекторы, как описано выше, потому, что селектор атрибутов, такой как [class*="status-"]
, будет соответствовать следующему элементу, что может быть нежелательным:
Если вы можете гарантировать, что такой сценарий никогда не произойдет, бесплатно использовать такой селектор для простоты. Однако вышеописанная комбинация гораздо более надежна.
Если у вас есть контроль над источником HTML или приложением, создающим разметку, может быть проще просто сделать префикс status-
своим status
классом вместо этого , как предлагает Gumbo .