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