Ответ 1
К сожалению, вы не можете сделать это с помощью чистого CSS. На данный момент ваша лучшая надежда состоит в том, чтобы либо переписать текст, чтобы избежать медиальных/финальных капиталов, либо использовать JavaScript. (Да, мои глаза тоже катятся.)
Ваш предлагаемый подход не работает, потому что только одно значение свойства text-transform
применяется к элементу за раз. Когда вы укажете что-то вроде...
#parent { text-transform: lowercase; }
#parent #child { text-transform: capitalize; }
... значение text-transform
для дочернего элемента теперь capitalize
, и ничего больше. Это единственное преобразование, применяемое к этому элементу.
Существует проект предложения, позволяющий авторам определять настраиваемые таблицы сопоставления с правилом @text-transform
, но, поскольку он стоит, я сомневаюсь, что это работа для этого сценария. Проблема состоит в том, что дескриптор scope
(где в слово применяется преобразование) принимает только одно значение - вы можете определить преобразование в целом слово или некоторая комбинация начальной, конечной или средней части слова, но это не очевидно, если у вас могут быть разные преобразования для каждой части.
Это, по-видимому, подтверждено в Проблема 8 в проекте проекта вики, а несколько преобразований обсуждались пару лет назад WWW-стиль. В этом потоке предполагается, что для элемента должно быть разрешено только одно значение text-transform
, и это объединение должно выполняться в правиле @text-transform
; однако в черновике примечания:
Если упомянутые текстовые преобразования имеют разную область действия, чем указанная область в текстовом преобразовании, который относится к ним, они применяются на пересечении две области.
Итак, правило вроде этого не работает:
@text-transform lowercase-then-capitalize {
transformation: lowercase, "a-z" to "A-Z" single;
scope: initial;
}
Я вижу три очевидных решения:
- разрешить несколько значений
scope
в правиле@text-transform
; - добавить дескриптор для наследования предыдущего преобразования без переопределения его значения области; или
- разрешить несколько значений
text-transform
для селектора.
Список рассылки www-стиля может быть хорошим местом для этого, если вы когда-нибудь захотите увидеть чистое решение CSS для этого вопроса.