我正在尝试对齐表格顶行中的文本,以便使用旋转变换功能垂直显示。虽然我成功地旋转了表格标题中的单词,但我无法将表格列的宽度缩短为与旋转标题的宽度相同。(如果水平放置,它保持标题的相同宽度)。另外,我使用百分比来表示列宽。
.vertical-th {
transform: rotate(-90deg);
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<th colspan="3" class="text-center risk-th" style="width: 20%">Controls</th>
<th class="risk-th" style="width: 4%">
<!--Manuality-->
</th>
<th class="risk-th" style="width: 4%">
<!--Probability-->
</th>
<th class="risk-th" style="width: 4%">
<!--Gravity-->
</th>
<th class="risk-th" style="width: 4%">
<!--Mitigation-->
</th>
<th colspan="3"></th>
<th class="vertical-th">Manuality</th>
<th class="vertical-th">Probability</th>
<th class="vertical-th">Gravity</th>
<th class="vertical-th">Mitigation</th>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
使用以下概念创建旋转表标题的简单方法。
$(function() {
var header_height = 0;
$('.rotate-table-grid th span').each(function() {
if ($(this).outerWidth() > header_height) header_height = $(this).outerWidth();
});
$('.rotate-table-grid th').height(header_height);
});Run Code Online (Sandbox Code Playgroud)
table.rotate-table-grid{box-sizing: border-box;
border-collapse: collapse;}
.rotate-table-grid tr, .rotate-table-grid td, .rotate-table-grid th {
border: 1px solid #ddd;
position: relative;
padding: 10px;
}
.rotate-table-grid th span {
transform-origin: 0 50%;
transform: rotate(-90deg);
white-space: nowrap;
display: block;
position: absolute;
bottom: 0;
left: 50%;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="rotate-table-grid">
<thead>
<tr>
<th><span>Shorter Title</span></th>
<th><span>Much Much Longer Title</span></th>
<th><span>Shorter Title</span></th>
<th><span>Much Much Longer Title</span></th>
<th><span>Shorter Title</span></th>
<th><span>Much Much Longer Title</span></th>
<th><span>Shorter Title</span></th>
<th><span>Much Much Longer Title</span></th>
</tr>
</thead>
<tbody>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody>
</table>Run Code Online (Sandbox Code Playgroud)
我们可以通过扭曲标题文本内部并在其内部应用DIV's一些规则来执行一些CSS技巧,然后我们可以获得更多的样式能力,然后即使文本很长,我们也可以缩短标题的宽度。thDIV's
比如: 希望对你有帮助,谢谢
th, td, table{
border:solid 1px;
}
div.vertical{
position: absolute;
transform: rotate(-90deg);
-webkit-transform: rotate(-90deg); /* Safari/Chrome */
-moz-transform: rotate(-90deg); /* Firefox */
-o-transform: rotate(-90deg); /* Opera */
-ms-transform: rotate(-90deg); /* IE 9 */
}
th.vertical{
max-width: 50px;
height: 85px;
line-height: 14px;
padding-bottom: 20px;
text-align: inherit;
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<th colspan="3" class="text-center risk-th" style="width: 20%">Controls</th>
<th class="risk-th" style="width: 4%">
<!--Manuality-->
</th>
<th class="risk-th" style="width: 4%">
<!--Probability-->
</th>
<th class="risk-th" style="width: 4%">
<!--Gravity-->
</th>
<th class="risk-th" style="width: 4%">
<!--Mitigation-->
</th>
<th class="vertical"><div class="vertical">Manuality</div></th>
<th class="vertical"><div class="vertical">Probability</div></th>
<th class="vertical"><div class="vertical">Gravity</div></th>
<th class="vertical"><div class="vertical">Mitigation</div></th>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)