Обертати та перекладати


86

У мене виникають проблеми з обертанням і розташуванням рядка тексту. Зараз працює лише позиція. Поворот також працює, але лише якщо я вимкнув позиціонування.

CSS:

#rotatedtext {
    transform-origin: left;
    transform: rotate(90deg);
    transform: translate(50%, 50%);
}

Html - це просто текст.

Відповіді:


157

Причина в тому, що ви двічі використовуєте властивість перетворення. Завдяки правилам CSS з каскадом, остання декларація виграє, якщо вони мають однакову специфіку. Оскільки обидва оголошення перетворення знаходяться в одному наборі правил, це так.

Що він робить, це:

  1. повернути текст на 90 градусів. В порядку.
  2. перекласти 50% на 50%. Добре, це така ж властивість, як і крок перший, тому зробіть цей крок і ігноруйте крок 1.

Дивіться http://jsfiddle.net/Lx76Y/ та відкрийте його в налагоджувачі, щоб побачити першу заяву, перезаписану

Оскільки перекладач перезаписує обертання, натомість вам доведеться об'єднати їх в одній декларації: http://jsfiddle.net/Lx76Y/1/

Для цього ви використовуєте розділений пробілом список перетворень:

#rotatedtext {
    transform-origin: left;
    transform: translate(50%, 50%) rotate(90deg) ;
}

Пам'ятайте, що вони вказані в ланцюжку, тому спочатку застосовується переклад, а потім обертання після цього.


23
Я виявив, що ланцюжок дуже важливо мати на увазі. Порівняйте переклад з подальшим обертанням - jsfiddle.net/Mrjm8/3 - із обертанням з подальшим перекладом - jsfiddle.net/Mrjm8/2
Лука

Як це працює, коли написано в HTML, а не в CSS?
JakeTheSnake

2
@JakeTheSnake Це не так. Перетворення CSS - це функція CSS.
Stijn de Witt

2
Ого спасибі. Вам слід виділити жирний ланцюжок аспекту :), який був ключовим елементом, про який багато блогів і специфікацій ніколи не згадують!
cgatian

@Luke Дякую, що вказав, порядок дійсно важливий !
Ямі Одімель

12

Я не можу коментувати, тому тут йдеться. Про відповідь @David Storey.

Будьте обережні щодо "порядку виконання" в ланцюгах CSS3! Порядок - справа наліво, а не зліва направо.

transformation: translate(0,10%) rotate(25deg);

Спочатку rotateвиконується операція, потім - translate.

Дивіться: CSS3 має порядок перетворення: найправіша операція спочатку


4

У цьому немає необхідності, оскільки ви можете використовувати css 'mode-mode' зі значеннями 'vertical-lr' або 'vertical-rl' за бажанням.

.item {
  writing-mode: vertical-rl;
}

CSS: режим запису


2

Щось, що може пропустити: у моєму ланцюговому проекті виявляється, що розділений пробілом список також потребує крапки з комою в кінці.

Іншими словами, це не працює:

transform: translate(50%, 50%) rotate(90deg);

але це робить:

transform: translate(50%, 50%) rotate(90deg) ; //has a space before ";"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.