让我先说我知道这个问题已经被问了很多,但没有一个答案对我有用。
大多数解决方案都指示使用transform:rotate(270deg);
,但是,这会与宽度混淆,因为块的生成方式不考虑旋转,从而使块比期望的更宽。
我的目标是获得如下内容(在表格中):
我一直在玩各种不同的 CSS 属性,现在很幸运。这是我一直在使用的一个基本沙箱,它展示了我遇到的一些问题。
让我先说我知道这个问题已经被问了很多,但没有一个答案对我有用。
大多数解决方案都指示使用transform:rotate(270deg);
,但是,这会与宽度混淆,因为块的生成方式不考虑旋转,从而使块比期望的更宽。
我的目标是获得如下内容(在表格中):
我一直在玩各种不同的 CSS 属性,现在很幸运。这是我一直在使用的一个基本沙箱,它展示了我遇到的一些问题。
修改th
如下:
<th>
<div class="container">
<div class="head">
<div class="vert">Column 1</div>
</div>
</div>
</th>
<th>
<div class="container">
<div class="head">
<div class="vert">Col 2</div>
</div>
</div>
</th>
<th>
<div class="container">
<div class="head">
<div class="vert">Column Two</div>
</div>
</div>
</th>
并添加小提琴中提供的 CSS,我希望你会得到想要的结果。
JSFiddle 似乎已关闭,所以我看不到您的代码——但也许transform-origin
除了rotate
转换之外您还应该包括在内。这是我的意思的演示:http: //jsbin.com/isinoh/2/edit
这里最困难的部分是将垂直文本与表格格式结合起来。参照。如何使用 CSS 跨浏览器绘制垂直文本?似乎您可能需要在每个标题单元格中的两个级别上进行额外标记,因为您需要定位(为了将旋转的内容从单元格中取出,以便它们未旋转的尺寸不会弄乱表格格式)并且表格单元格不需要' t 定位时表现良好。
例子:
<!doctype html>
<style>
* { line-height: 1.3 }
table { border-collapse: collapse }
td, th
{
border: 1px solid black;
white-space: nowrap;
}
#title th
{
width: 15px;
height: 100px;
vertical-align: bottom;
font-weight: normal;
}
#title th > div {
position: relative;
}
#title th > div > div {
position: absolute;
bottom: 0;
-webkit-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
transform: rotate(-90deg);
-webkit-transform-origin: 0 100%;
-ms-transform-origin: 0 100%;
transform-origin: 0 100%;
left: 1.1em;
}
</style>
<table>
<tr id="title">
<th> </th>
<th><div><div>Column 1</div></div></th>
<th><div><div>Column 2</div></div></th>
<th><div><div>Column 3</div></div></th>
</tr>
<tr>
<td>Row 1</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>Row 2</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>Row 3</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</table>
在许多系统中,结果不会很漂亮,因为字体渲染问题导致旋转的文本不能很好地绘制(当您不编写正常的水平文本时,提示无济于事)。
您可以使用canvas
可以手动呈现文本的元素。在这种情况下,您还必须手动调整元素的宽度和高度。