CSS3変換が機能しない


122

メニュー項目を10度回転して変形しようとしています。CSSはFirefoxで機能しますが、ChromeとSafariで効果を再現できませんでした。IEはこのCSS3プロパティをサポートしていないので、問題ありません。

私は次のCSSを使用しました:

li a {
   -webkit-transform:rotate(10deg);
   -moz-transform:rotate(10deg);
   -o-transform:rotate(10deg); 
}

誰かが私が間違っているところを提案してくれませんか?

ありがとう。


2
FYI、IEはこのCSS3プロパティをサポートして、あなただけの接頭辞を必要とする:-ms-transform:rotate(10deg);
ジョシュアピンター


2
まだ誰もこれについて言及していないため、2016年なのでtransform: rotate(10deg);、サポートするように選択したプレフィックス付きバージョンの下に、CSSルールのプレフィックスなしバージョン(例:)を配置してください。
Maximillian Laumeister 2016年

回答:


301

これは、残りのHTML / CSSを見ることなく、単に知識に基づいた推測です。

あなたが適用しているdisplay: blockdisplay: inline-blockli a?そうでない場合は、それを試してください。

それ以外の場合は、li代わりにCSS3変換ルールを適用してみてください。


22
わたしは、あなたを愛しています!display: inline-block助けました。
Bugs Bunny 2017

2
説明が役に立ちます:)
scitronboy '22

56

Webkitベースのブラウザー(SafariおよびChrome)では、-webkit-transform インライン要素は無視されます。動作display: inline-block;するように設定します。デモやテストの目的でtransformation-origin、テキストが表示領域外に回転しないように、負の角度を使用することもできます。


私のために完全に働いた、ありがとう!<span>&copy </ span>で使用して、コピーレフトシンボルを作成しました。
エリザベス

@Elisabethそれは素晴らしいアプリケーションです。ただし、エンティティ参照はセミコロンで終了する必要があります(のように<span>&copy;</span>)。ただし、ほとんどのブラウザは両方の方法でレンダリングします。
phihag

もう1つの注意:相互作用状態(:hoverまたはなど:active)に変換を適用する場合、inline-blockを要素のデフォルト状態(例:)に適用する必要がありますa { display: inline-block; } a:active { transform: translateY(0.125em); }inline-blockインタラクション状態だけに適用しても機能しないようです。少なくともChromeでは-Firefoxでは正常に動作します。
Paul d'Aoust 2013年

1
-webkit-transformインラインアイテムでは機能しないという事実を指摘してくれてありがとう。以前これにこだわっていました。
pbojinov 2014年

@phihag優れた点、あなたは私にいくつかの大きな髪を引っ張って救った!これにより、アニメーションの実行後に要素が非表示になる可能性があることに注意してください。
2016

21

誰も関連ドキュメントを参照していないので:

CSS変換モジュールレベル1-用語-変換可能な要素

変換可能な要素は、次のいずれかのカテゴリの要素です。

  • レイアウトがブロックレベルまたはアトミックインラインレベルの要素であるCSSボックスモデルによって管理されている要素、またはその表示プロパティがtable-row、table-row-group、table-header-group、table-footerとして計算される要素 -group、table-cell、またはtable-caption
  • SVG名前空間の要素であり、transform、 'patternTransform'、またはgradientTransform属性を持つCSSボックスモデルによって管理されていません。

あなたの場合、<a>要素はinlineデフォルトです。

displayプロパティの値を変更inline-blockして要素をアトミックなインラインレベルの要素としてレンダリングするため、要素は定義により「変換可能」になります。

li a {
   display: inline-block;
   -webkit-transform: rotate(10deg);
   -moz-transform: rotate(10deg);
   -o-transform: rotate(10deg); 
   transform: rotate(10deg);
}

上記のように、-webkitIE / FFで動作するように見えるので、これはベースのブラウザーでのみ適用できるようです。


0

特にリンクのみを回転させようとしていますか?LIタグでそれ行うのはうまくいくようです。

Snookの変換によると、影響を受ける要素はブロックである必要があります。追加したい場合は、フィルターを使用してIEでこれを機能させるためのコードもいくつかあります(ただし、値に制限があるようです)。


-4

-webkit-transform もう必要ありません

msは既に回転をサポートしています(-ms-transform: rotate(-10deg);

これを試して:

li a {
   ...

    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -sand-transform: rotate(10deg);
    display: block;
    position: fixed;
    }

1
今日のテスト中に、私はそれ-webkit-transformが実際にはChromeで不要になったことに気付きました。しかし、それはまだサファリ8に必要だった
ジョンSlegers

-sand-transformとは何ですか?簡単なGoogle検索では何も見つかりませんでした。
ピート

質問に関連し、物事をより簡単にするかもしれないグーグル「CSSサンドペーパー」。古いバージョンのIEの標準CSSトランスフォームのサポートを実装するハックです
Pedro Justo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.