【问题标题】:Containing element not expanding vertically when content has rotated text当内容旋转文本时,包含的元素不会垂直扩展
【发布时间】:2013-03-29 23:24:56
【问题描述】:

我有一个带有一些标签的表格,其中包含通过 CSS 旋转的文本。我遇到的问题是 th 没有随内容垂直扩展。这是我拥有的标记的基本示例:

HTML:

<table>
    <thead>
        <th>
            <div class="rotated-text">Some Text</div>
        </th>
        <th>
            <div class="rotated-text">Some More Text</div>
        </th>
        <th>
            <div class="rotated-text">Even More Text</div>
        </th>
    </thead>
</table>

CSS:

.rotated-text {
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
    -webkit-transform: rotate(-90deg); 
    -moz-transform: rotate(-90deg); 
}

示例:http://jsfiddle.net/UPFkX/1/

【问题讨论】:

  • 您还应该包括-o-transform: rotate(-90deg);
  • 是的,我知道。示例 CSS 只是为了提供我所面临问题的基本示例。

标签: html css


【解决方案1】:

包含的元素不能扩展,因为 css 转换(和 IE 过滤器)不会影响 box model

引用 Marco Miltenburg:

如果我没记错的话,元素是正常流程的一部分,或者是 像没有变形一样漂浮。一旦他们的位置已经 建立,然后执行转换或转换。这 转型或过渡不会对 文档流或任何浮动了。

您可以在 SO here 上找到他对类似问题的回答。

实际上,转换后的元素的width 属性现在实际上会改变它的可见“高度”,而height 属性将改变它的可见“宽度”。简而言之:

通过 css 转换,被转换的是外观,而不是元素本身或它对文档流的“影响”。

什么可能对你有帮助(视情况而定):

将每个转换后的元素的height 属性设置为width(以像素为单位)。这将按照您想要的方式影响它们的容器高度。

编辑:

正如 Juan Rangel 在他的回答中所说,您可以使用 javascript 来解决问题。我完全同意这一点——他对 jquery 所做的事情与我上面所说的一样。如果您无法判断转换后的元素有多高,那甚至可能是更好的解决方案,但请记住(少量)不允许您使用 javascript 的客户端。 无论如何,不​​幸的是,您将不得不妥协。

【讨论】:

  • 感谢您的解释!
【解决方案2】:

对您的代码进行一些修改。

删除div 并将class"rotated-text" 添加到您的th。 添加这个 javascript
$(".verticalTableHeader").each(function(){$(this).height($(this).width())})

确保您的页面调用 jQuery。

http://jsfiddle.net/UPFkX/3/

【讨论】:

  • 太棒了,它有效。但是,表格标题的宽度现在与内容的高度相同。我希望所有标题都显示为 28px 宽。
  • 你可以像th {padding: 5px;}这样为标题添加一些填充,这将使宽度为30px。现在,如果您像 padding: 1px 2px 3px 4px 这样添加填充,它现在从左侧开始并顺时针移动。
  • 我的意思是通过 css 变换旋转文本会使元素在视觉上旋转,但是它仍然占据相同的空间,就好像它没有被旋转一样。这会导致表格标题占用尽可能多的空间,就好像它们在视觉上没有旋转一样,它们都与文本的行高一样宽。这是一个示例来说明我的意思:jsfiddle.net/UPFkX/6
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2011-05-30
  • 2017-07-10
相关资源
最近更新 更多