2009-07-03 17 views
238

クロスブラウザ(> = IE6、> Firefox 2、Chrome、Safari、またはOperaのいずれかのバージョン)をサポートし、テキストの1単語を90度回転させたいとします。これはどうすればできますか?CSSのクロスブラウザで縦書きテキストを描画するにはどうすればよいですか?

+4

あなたは、クロスの互換性で使用することができます何の純粋なCSSはありません。私が持っているのはそこにあるすべてです。あなたはイメージが良いです。 –

+0

ここに私が使ったテクニックの内訳があります:http://scottgale.com/blog/css-vertical-text/2010/03/01/ –

+0

ここには、IEでもすべての種類のテキスト変換を行う方法を説明するチュートリアルがあります(あなたの問題への解決策を含む):) http://www.useragentman.com/blog/2010/03/09/cross-browser-css-transforms-even-in-ie/ –

答えて

210

最新の情報(CSS Tricks)でこの回答を更新しました。フィルターの実装を指摘してくれたMattとDouglasの功績。

.rotate { 
    -webkit-transform: rotate(-90deg); 
    -moz-transform: rotate(-90deg); 
    -ms-transform: rotate(-90deg); 
    -o-transform: rotate(-90deg); 
    transform: rotate(-90deg); 

    /* also accepts left, right, top, bottom coordinates; not required, but a good idea for styling */ 
    -webkit-transform-origin: 50% 50%; 
    -moz-transform-origin: 50% 50%; 
    -ms-transform-origin: 50% 50%; 
    -o-transform-origin: 50% 50%; 
    transform-origin: 50% 50%; 

    /* Should be unset in IE9+ I think. */ 
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 
} 

旧答え:FF 3.5やSafari/Webkitの3.1

、チェックアウト:-moz-transformを(と-webkit-変換)。 IEはMatrix filter(v5.5 +)ですが、使用方法はわかりません。 Operaにはまだ変換機能はありません。

.rot-neg-90 { 
    /* rotate -90 deg, not sure if a negative number is supported so I used 270 */ 
    -moz-transform: rotate(270deg); 
    -moz-transform-origin: 50% 50%; 
    -webkit-transform: rotate(270deg); 
    -webkit-transform-origin: 50% 50%; 
    /* IE support too convoluted for the time I've got on my hands... */ 
} 
+1

ありがとう、しかしff 2はひどく見えます。 – usr

+0

FF2は何もしません、それは-transformを解釈しません。 –

+0

ですから、垂直メニューは非常に広いでしょう。 – usr

6

私はhttp://snook.ca/archives/html_and_css/css-text-rotationからこれを適応:

 
<style> 
    .Rotate-90 
    { 
     display: block; 
     position: absolute; 
     right: -5px; 
     top: 15px; 
     -webkit-transform: rotate(-90deg); 
     -moz-transform: rotate(-90deg); 
    } 
</style> 
<!--[if IE]> 
    <style> 
     .Rotate-90 { 
      filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 
      right:-15px; top:5px; 
     } 
    </style> 
    <![endif]--> 
73

私はページ内の縦書きのテキストを書くために、次のコードを使用しています。 のFirefox 3.5+、WebKitの、オペラX 10.5+とIE

.rot-neg-90 { 
    -moz-transform:rotate(-270deg); 
    -moz-transform-origin: bottom left; 
    -webkit-transform: rotate(-270deg); 
    -webkit-transform-origin: bottom left; 
    -o-transform: rotate(-270deg); 
    -o-transform-origin: bottom left; 
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 
} 
+0

クロム5で動作します。IE 8 "quirks"モードで動作しません。 * IE8標準モードで動作します。 –

+0

私にお知らせいただきありがとうございます。 quirksモードでIEに垂直​​テキストを表示する方法を見つけたら、ここに投稿してください。IE6 +およびすべての最新ブラウザ間の差別愛する – tchoesang

5

私は純粋なCSSでそれをやろうとして問題を持っていた - フォントによって、それはビットゴミを見ることができます。代わりに、SVG/VMLを使ってそれを行うこともできます。例えば、ブラウザを簡単にクロスブラウズするのに役立つライブラリがあります。 RaphaelおよびExtJS。 ExtJS4でコードは次のようになります。これは、IE6 +およびすべての最新ブラウザで動作します

var drawComp = Ext.create('Ext.draw.Component', { 
     renderTo: Ext.getBody(), //or whatever.. 
     height: 100, width: 100 //ditto.. 
    }); 
    var text = Ext.create('Ext.draw.Component', { 
     type: "text", 
     text: "The text to draw", 
     rotate: { 
      x: 0, y: 0, degrees: 270 
     }, 
     x: -50, y: 10 //or whatever to fit (you could calculate these).. 
    }); 
    text.show(true); 

、しかし、残念ながら私はあなたが、少なくともFF3.0が必要だと思います。

+1

- あなたがIEのすべてのバージョンを言っているかのように読み、現代ではありません:) – ClarkeyBoy

+1

@ClarkeyBoyは、私が唯一のIE10は、他のブラウザでスピードほとんど次第です、とだけ強制ので、GPUと言うでしょうレンダリングとグリッドレイアウト。あなたはx3 - x10倍遅くして、他のすべてのブラウザを更新するので、あなたは本当に現代的なブラウザのIEを調整することはできません。 – skmasq

+0

最善の策は、あなたがCSSのtransformプロパティを使用すると、あなたの応答に設計されたページと互換性がない可能性があることを見つけることとして、SVGファイルまたはこのJSを使用することです。 – b01

4

クロム、Firefoxの、IE9、IE10(あなたの要件ごとに度を変更します)上で動作します私のソリューション:

.rotate-text { 
    -webkit-transform: rotate(270deg); 
    -moz-transform: rotate(270deg); 
    -ms-transform: rotate(270deg); 
    -o-transform: rotate(270deg); 
    transform: rotate(270deg); 
    filter: none; /*Mandatory for IE9 to show the vertical text correctly*/  
} 
5

ブートストラップ3を使用する場合、あなたはそれのミックスインのいずれかを使用できます。

.rotate(degrees); 

例:

.rotate(-90deg); 
+1

はまだ動作しますが、それに気づく: **すべてのベンダーのミックスインが原因私たちのGruntfileで Autoprefixerの導入にV3.2.0のよう推奨されていません。彼らは、V4に削除されます以前のものよりもはるかに優れ** – yishaiz

5

CSS Writing Modesモジュールは垂直テキスト直交流れを導入します。

writing-modeプロパティを目的の値に設定するだけです。

span { margin: 20px; } 
 
#vertical-lr { writing-mode: vertical-lr; } 
 
#vertical-rl { writing-mode: vertical-rl; } 
 
#sideways-lr { writing-mode: sideways-lr; } 
 
#sideways-rl { writing-mode: sideways-rl; }
<span id="vertical-lr"> 
 
    ↑ (1) vertical-lr 至<br /> 
 
    ↑ (2) vertical-lr 至<br /> 
 
    ↑ (3) vertical-lr 至 
 
</span> 
 
<span id="vertical-rl"> 
 
    ↓ (1) vertical-rl 至<br /> 
 
    ↓ (2) vertical-rl 至<br /> 
 
    ↓ (3) vertical-rl 至 
 
</span> 
 
<span id="sideways-lr"> 
 
    ↓ (1) sideways-lr 至<br /> 
 
    ↓ (2) sideways-lr 至<br /> 
 
    ↓ (3) sideways-lr 至 
 
</span> 
 
<span id="sideways-rl"> 
 
    ↓ (1) sideways-rl 至<br /> 
 
    ↓ (2) sideways-rl 至<br /> 
 
    ↓ (3) sideways-rl 至 
 
</span>

+0

後の文字列の配置でも問題なく横向き-RLを広くサポートされていない今のように、私は垂直-RLをお勧めしますし、180℃に回転します – godblessstrawberry

関連する問題