【问题标题】:Vertical Text in a Table [duplicate]表格中的垂直文本[重复]
【发布时间】:2020-03-24 01:24:20
【问题描述】:

我有一张有很多列的表。所以我想用类似的文字创建列标题

  <tr><td style="vertical???">Vertical</td>
      <td style="Vertical???">Heading</td>...</tr>

没什么特别的。没有花哨的偏移量。只是单元格中的垂直文本。

最终会是这样的

V   H
e   e
r   a
t   d
i   i
c   n
a   g
l

我尝试了多种浮点数和变换原点,但未能完成这个最简单的事情。框外的奇怪文字,很容易。但是一个简单的表格标题,没有。

是否可以不诉诸绝对定位和其他粗俗的技巧?

【问题讨论】:

标签: html css html-table


【解决方案1】:

试试这个,希望对你有帮助..

table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th, td {
  padding: 5px;
  text-align: left;    
}
td {
	writing-mode: vertical-lr;
	text-orientation: upright;
}
<table style="width:100%">
  <tr>
    <th>Name</th>
    <th colspan="2">Telephone</th>
  </tr>
  <tr>
    <td>Bill Gates</td>
    <td>55577854</td>
    <td>55577855</td>
  </tr>
</table>

【讨论】:

  • 这应该如何帮助这里?它只是水平显示
  • @B001ᛦ 您使用哪种浏览器?因为它有效,所以出错的是单元格选择器 td 而不是 th .... 但 op 提供了一个带有 TD 的示例。
  • 我用Chrome 78.0.3904.108
  • 谢谢。宽度是错误的,但我可以破解它。我看错了地方,转换而不是垂直文本。
  • 其实sideways-lr就是我想要的。我从来没有弄清楚如何让它从上到下,但足够接近。
【解决方案2】:

如果您可以选择添加自定义 html,则可以使用换行符。

table{
  width: 100%;
}
<table>
<tr>
  <td>V<br>e<br>r<br>t<br>i<br>c<br>a<br>l</td>
  <td>H<br>e<br>a<br>d<br>i<br>n<br>g</td>
</tr>
</table>

否则,恐怕您会看到基于 JavaScript 的解决方案。像这样的:

window.addEventListener( 'load', () => {
  let verticals = document.querySelectorAll( 'td.vertical' );
  verticals.forEach( node => {
    node.innerHTML = node.innerText.replace( /./g, `$&<br>`);
   });
});
table{
  width: 100%;
}
<table>
<tr>
  <td class="vertical">Vertical</td>
  <td class="vertical">Heading</td>
</tr>
</table>

【讨论】:

  • 嗯,是的,这就是我所做的。但是看起来不是很好!不过谢谢你的建议。
【解决方案3】:

您可以使用CSS/text-orientation。但它不会改变td 的宽度,所以在你想要垂直文本的 td 内部使用了 div 的技巧。

下面是工作示例:

.vertical {
  writing-mode: vertical-lr;
  text-orientation: upright;
padding-left:15px;
}
<table>
  <tr>
    <th>Vertical</th>
    <th>Heading
    </th>
  </tr>
  <tr>
    <td>
      <div class="vertical">Vertical</div>
    </td>
    <td>
      <div class="vertical">Heading</div>
    </td>
  </tr>

  <tr>
    <td>
      <div class="vertical">Vertical</div>
    </td>
    <td>
      <div class="vertical">Heading</div>
    </td>
  </tr>
</table>

【讨论】:

  • 不错。请注意 Edge 浏览器的浏览器支持:caniuse.com/#search=text-orientation。也就是说,看起来他们将来会支持text-orientation ;)。
  • 您能否详细说明为什么writing modetext-orientation css-properties 在display: table-cell 的节点上不起作用?
  • 谢谢。 Div 似乎没有解决宽度问题,但我可以解决这个问题。我看错了地方,转换而不是垂直文本。
  • 其实sideways-lr就是我想要的。我从来没有弄清楚如何让它从上到下,但足够接近。
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
相关资源
最近更新 更多