CSS转换/旋转动态宽度文本与上面的行

时间:2016-02-23 21:12:40

标签: html css css3 css-transforms

我正在努力实现一些简单但有些复杂的CSS,我想旋转一些标签,这些标签需要与顶部边框顶部对齐,宽度相等,沿着以下几行:

rotated text

有一些问题会导致相互冲突的问题(修复一个会打破另一个问题):

  1. 文字将具有不同的/动态宽度
  2. 标签需要保持相等的宽度 - 32px(不宽)
  3. 他们需要沿着“顶部”对齐,沿着其他元素浮动
  4. 请参阅jsbin

    HTML:

    <div class="label">
      <span class="label-text">Hello</span>
    </div>
    

    的CSS:

    .label {
      border-top: 10px solid black;
      width: 120px;
      float: left;
      margin-right: 12px;
    }
    
    .label-text {
      display: block;
      transform: rotate(-90deg);
      text-align: right;
      margin-top: 64px;
    }
    

    结果是:

    jsbin screenshot

    哪个很接近,但我无法在不影响其中的文字的情况下缩小条形。一旦我开始玩宽度,旋转似乎会引起各种各样的问题。

1 个答案:

答案 0 :(得分:1)

这是可能的,但它涉及定位和了解某些高度。

* {
  box-sizing: border-box;
}
body {
  text-align: center;
}
.label {
  width: 32px;
  margin: 1em;
  height: 150px;
  /* you need to know the max height  or you get overflow */
  background: rgba(255, 0, 0, .5);
  white-space: nowrap;
  display: inline-block;
  position: relative;
}
.label-text {
  border: 1px solid green;
  border-right: 10px solid black;
  position: absolute;
  top: 0;
  left: 0;
  height: 32px;
  line-height: 32px;
  padding: 0 1em;
  transform-origin: top left;
  transform: rotate(-90deg) translateX(-100%);
}
<div class="label">
  <span class="label-text">I'm short and OK</span>
</div>
<div class="label">
  <span class="label-text">I'm waaay too long to be contained in this area.</span>
</div>