Alasannya adalah karena Anda menggunakan properti transform dua kali. Karena aturan CSS dengan kaskade, deklarasi terakhir menang jika memiliki kekhususan yang sama. Karena kedua deklarasi transformasi berada dalam kumpulan aturan yang sama, inilah masalahnya.
Apa yang dilakukannya adalah ini:
- putar teks 90 derajat. Baik.
- terjemahkan 50% kali 50%. Ok, ini adalah properti yang sama seperti langkah pertama, jadi lakukan langkah ini dan abaikan langkah 1.
Lihat http://jsfiddle.net/Lx76Y/ dan buka di debugger untuk melihat deklarasi pertama ditimpa
Karena terjemahan menimpa rotate, Anda harus menggabungkannya dalam deklarasi yang sama: http://jsfiddle.net/Lx76Y/1/
Untuk melakukan ini, Anda menggunakan daftar transformasi yang dipisahkan spasi:
#rotatedtext {
transform-origin: left;
transform: translate(50%, 50%) rotate(90deg) ;
}
Ingat bahwa mereka ditentukan dalam rantai, jadi terjemahan diterapkan terlebih dahulu, lalu putar setelah itu.
Saya tidak bisa berkomentar jadi begini. Tentang jawaban @David Storey.
Hati-hati dengan "urutan eksekusi" di rantai CSS3! Urutannya dari kanan ke kiri, bukan dari kiri ke kanan.
transformation: translate(0,10%) rotate(25deg);
The
rotate
Operasi dilakukan terlebih dahulu, makatranslate
.Lihat: CSS3 mengubah urutan penting: operasi paling kanan dulu
sumber
Tidak perlu untuk itu, karena Anda dapat menggunakan 'mode penulisan' css dengan nilai 'vertikal-lr' atau 'vertikal-rl' sesuai keinginan.
.item { writing-mode: vertical-rl; }
sumber
Sesuatu yang mungkin terlewatkan: dalam proyek chaining saya, ternyata daftar yang dipisahkan spasi juga membutuhkan titik koma yang dipisahkan spasi di bagian akhir.
Dengan kata lain, ini tidak berhasil:
transform: translate(50%, 50%) rotate(90deg);
tapi ini:
transform: translate(50%, 50%) rotate(90deg) ; //has a space before ";"
sumber