これは、次のようにして可能になるはずです。
.verticalText
{
/* IE-only DX filter */
writing-mode: tb-rl;
filter: flipv fliph;
/* Safari/Chrome function */
-webkit-transform: rotate(270deg);
/* works in latest FX builds */
-moz-transform: rotate(270deg);
}
これはIEで機能します。
Safariで奇妙な方法でうまくいかない、Chrome and FX-セルのサイズが計算される前にテキストが回転!
ここにデモがあります: http://jsfiddle.net/HSKws/
私は動的画像を回避策として使用していますが、それは 問題もあります です。これはフォールバックとして満足していますが、このCSSを機能させる方法があるはずです。
変換が適用された後、セルをコンテンツに合わせる方法を誰かが知っていますか?
「変形」は、要素内のテキストコンテンツではなく、宣言した要素全体の向きを変更します。これは、「ライティングモード」ではなく、IEの「マトリックス」プロパティに似ています。
重要なことに、要素を変換しても、コンテンツサイズの計算方法(またはその親のレイアウトがそのサイズによってどのように影響を受けるか)は変わりません。 CSSの垂直方向と水平方向のサイズ変更のアルゴリズムは異なり、使いこなすのに十分困難です。彼らが任意のローテーションでコンテンツを収容できる実際の一貫した方法はありません。したがって、「変換」は「位置:相対」を使用するようなものです。コンテンツがレンダリングされる場所は変わりますが、レイアウトサイズとは関係ありません。
したがって、表に含める場合は、セルの「高さ」を明示的に設定して、予想される回転された「幅」に対応する必要があります。事前にそれがわからない場合は、おそらくJavaScriptでハッキングする可能性があります。
FWIW:私にとってFx3.1b3では、スパンも他のように回転されます。ただし、Windowsで水平のみのアンチエイリアス(ClearType)を使用すると、レンダリングが美しく表示されません...うまくレンダリングされた画像は、かなり良くなる可能性があります。
XHTMLドキュメントでインラインSVGを使用することは可能です(私はSafariとFirefoxのみをテストしました):
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<table border="1">
<tr>
<td> </td>
<td>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="150">
<text id="thetext" transform="rotate(270, 12, 0) translate(-140,0)">Example column header</text>
</svg>
</td>
<td>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="150">
<text id="thetext" transform="rotate(270, 12, 0) translate(-140,0)">Example column header</text>
</svg>
</td>
<td>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="150">
<text id="thetext" transform="rotate(270, 12, 0) translate(-140,0)">Example column header</text>
</svg>
</td>
</tr>
<tr>
<td>Example row header</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
</body>
</html>
残念ながら、テーブルセルの幅と高さ、およびSVGを使用してレンダリングされたテキストの翻訳を明示的に設定する必要があります。また、ファイル拡張子はxhtml
でなければなりません。
Webkitが追加しました:
-webkit-writing-mode:vertical-rl;
div
に適用できるもの。
同様の質問 で回答したので、これを David VotrubecによるjQueryプラグイン とブログ投稿の下のMikeによるコメントを使用して解決しました。
これを.jsファイルに入れます。
(function ($) {
$.fn.rotateTableCellContent = function (options) {
/*
Version 1.0
7/2011
Written by David Votrubec (davidjs.com) and
Michal Tehnik (@Mictech) for ST-Software.com
*/
var cssClass = ((options) ? options.className : false) || "vertical";
var cellsToRotate = $('.' + cssClass, this);
var betterCells = [];
cellsToRotate.each(function () {
var cell = $(this)
, newText = cell.text()
, height = cell.height()
, width = cell.width()
, newDiv = $('<div>', { height: width, width: height })
, newInnerDiv = $('<div>', { text: newText, 'class': 'rotated' });
newInnerDiv.css('-webkit-transform-Origin', (width / 2) + 'px ' + (width / 2) + 'px');
newInnerDiv.css('-moz-transform-Origin', (width / 2) + 'px ' + (width / 2) + 'px');
newDiv.append(newInnerDiv);
betterCells.Push(newDiv);
});
cellsToRotate.each(function (i) {
$(this).html(betterCells[i]);
});
};
})(jQuery);
そして、これはあなたのページの上部にあります:
<script src="rotatetablecellcontent.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.yourtableclass').rotateTableCellContent();
});
</script>
そしてこれはあなたのCSSで:
/* Styles for rotateTableCellContent plugin*/
table div.rotated {
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
writing-mode:tb-rl;
white-space: nowrap;
}
thead th {
vertical-align: top;
}
table .vertical {
white-space: nowrap;
}
次に、テーブルにクラス「yourtableclass」があり、ローテーションするすべてのTDにクラス「vertical」があることを確認します。
これが jsFiddleで実行中のデモ です。
私が2年遅れても、それが誰かを助けることを願っています!
テーブルヘッダー内でテキストを回転させるには:
th
にposition:relativeを設定し、回転したdivにposition:absoluteを設定します。th
ヘッダーの高さも設定するできました。
あなたはそれをここで見ることができます:
ウィンドウを細くすると、このページに表示されます-1000ピクセル未満で、テーブルヘッダーが回転します http://www.rugbydata.com/
これが私が使ったコードです:
div.rotatabletext {
-webkit-transform: rotate(-90deg);
/* Firefox */
-moz-transform: rotate(-90deg);
/* IE */
-ms-transform: rotate(-90deg);
/* Opera */
-o-transform: rotate(-90deg);
/* Internet Explorer */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
width:0px;
text-align:left;
height:0px;
margin-left:0px;
margin-top:0px;
bottom:2px;
position:absolute;
}
table.tournamentresults > * > tr > td {
padding:1px;
}
table.tournamentresults > thead > tr:nth-child(1) > th:nth-child(1) {
height:70px;
position:relative;
}
table.tournamentresults > thead > tr:nth-child(2) th {
height:70px;
position:relative;
}
このツールは私のためのすべての考えをしました...
http://www.boogdesign.com/examples/transforms/matrix-calculator.html