如何在伪元素中旋转文本?

时间:2013-08-15 04:06:55

标签: html css cross-browser

我正在尝试使用css :aftertransform将双角括号设置为rotate(90deg)伪元素中的内容旋转到屏幕顶部的标签。这是相关的代码:

.header {
  -moz-transition: top .5s ease;
  -webkit-transition: top .5s ease;
  -o-transition: top .5s ease;
  transition: top .5s ease;
  position: absolute;
  left: 0;
  right: 0;
  top: -60px;
  height: 80px;
  background-color: #2d2;
}

.header.in-top {
  top: 0;
}

.header-tab {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 20px;
  text-align: center;
  color: #000;
  -moz-transition: color .5s ease;
  -webkit-transition: color .5s ease;
  -o-transition: color .5s ease;
  transition: color .5s ease;
}

.header-tab:hover {
  color: #e22;
}

.header-arrow:after {
  font-size: 20px;
  line-height: 1;
  -moz-transform: rotate(90deg);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  -o-transform: rotate(90deg);
  transform: rotate(90deg);
}

.header .header-arrow:after {
  content: "\00bb";
}

.header.in-top .header-arrow:after {
  content: "\00ab";
}
<div class="header">
  <div class="header-tab" data-toggle="in-top">
    <span class="header-arrow"></span>
  </div>
</div>

JavaScript中使用data-toggle属性来切换in-top类,以便切换双尖括号的方向,以及通过将其降低来显示标题的内容。我指定的transform属性似乎没有做任何事情。任何解决方案?

3 个答案:

答案 0 :(得分:6)

在伪元素上使用display: inline-block。或者,inline-tableblock也应该有效。

请参阅jsFiddle

默认情况下,您的伪元素显示为inline,这使其成为不可转换的元素。来自CSS Transforms Working Draft specification

  

可转换元素

     

可转换元素是以下类别之一的元素:   一个元素,其布局由CSS框模型控制,该模型是块级或原子内联级元素,或者其“display”属性计算为“table-row”,“table-row-group”,“table- header-group','table-footer-group','table-cell'或'table-caption'

答案 1 :(得分:1)

您需要将伪元素设置为块或内联块元素:

.header-arrow:after {
  display: block;
}

specification说旋转应该适用于内联元素,但在基于WebKit的浏览器中,它不起作用:https://www.webkit.org/blog/130/css-transforms/

答案 2 :(得分:0)

仅当您在类或选择器中使用global::Xamarin.Forms.Forms.Init(this, bundle) in android Renderer ?display:inline-block;属性时,旋转属性才适用于伪元素(之前/之后)。

display:inline-block;