回転して翻訳する


86

テキスト行の回転と配置に問題があります。今では、機能するのは位置だけです。回転も機能しますが、位置決めを無効にした場合に限ります。

CSS:

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

htmlは単なるプレーンテキストです。

回答:


157

これは、transformプロパティを2回使用しているためです。カスケードを使用したCSSルールにより、同じ特異性がある場合は最後の宣言が優先されます。両方の変換宣言が同じルールセットに含まれているため、これが当てはまります。

それがしていることはこれです:

  1. テキストを90度回転します。OK。
  2. 50%を50%変換します。わかりました。これは手順1と同じプロパティなので、この手順を実行し、手順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
Luke

CSSではなくHTMLで記述した場合、これはどのように機能しますか?
JakeTheSnake 2015

2
@JakeTheSnakeそうではありません。CSS変換はCSS機能です。
Stijn de Witt

2
わぁ、ありがとう。多くのブログや仕様で言及されていない重要な要素である連鎖の側面太字にする必要があります:)。
cgatian

@ルークそれを指摘してくれてありがとう、順序は本当に重要です!
ヤミオディメル

12

コメントできないので、ここに行きます。@DavidStoreyの回答について。

CSS3チェーンの「実行順序」に注意してください!順序は、左から右ではなく、右から左です。

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

rotate操作は、その後、最初に行われますtranslate

参照: CSS3変換順序の問題:右端の操作が最初


4

必要に応じて値「vertical-lr」または「vertical-rl」を指定してcss「writing-mode」を使用できるため、その必要はありません。

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

CSS:書き込みモード


2

見逃される可能性のあるもの:私のチェーンプロジェクトでは、スペースで区切られたリストの最後にスペースで区切られたセミコロンも必要であることがわかりました。

言い換えれば、これは機能しません:

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

しかし、これはします:

transform: translate(50%, 50%) rotate(90deg) ; //has a space before ";"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.