A razão é porque você está usando a propriedade transform duas vezes. Devido às regras de CSS com cascata, a última declaração ganha se elas tiverem a mesma especificidade. Como ambas as declarações de transformação estão no mesmo conjunto de regras, esse é o caso.
O que está fazendo é o seguinte:
- gire o texto 90 graus. Está bem.
- traduzir 50% por 50%. Ok, esta é a mesma propriedade da etapa um, então execute esta etapa e ignore a etapa 1.
Veja http://jsfiddle.net/Lx76Y/ e abra-o no depurador para ver a primeira declaração sobrescrita
Como a tradução está substituindo a rotação, você deve combiná-los na mesma declaração: http://jsfiddle.net/Lx76Y/1/
Para fazer isso, você usa uma lista de transformações separadas por espaço:
#rotatedtext {
transform-origin: left;
transform: translate(50%, 50%) rotate(90deg) ;
}
Lembre-se de que eles são especificados em uma cadeia, portanto, a translação é aplicada primeiro e, em seguida, a rotação.