【发布时间】:2013-03-08 15:01:47
【问题描述】:
考虑以下尝试将段落旋转 90 度并将其定位,以使最初位于其左上角(因此在旋转后成为其右上角)的角最终位于右上角父块的一角。
HTML:
<!DOCTYPE html>
<html>
<body>
<div id="outer">
<p id="text">Foo bar</p>
</div>
</body>
</html>
CSS:
#outer {
border: solid 1px red;
width:600px;
height: 600px;
position: relative;
}
#text {
transform: rotate(90deg);
position: absolute;
top: 0;
right: 0;
}
在 OS X 10.6.8 上的 Firefox 19.0.2 中,它失败了。这似乎是因为,尽管给出了 CSS 属性的顺序,但在定位之后应用了转换。换句话说,浏览器:
- 放置
#text,使其右上角位于父块的右上角,但只有这样 - 旋转它,结果现在它的右上角不位于父块的右上角。
因此,transform-origin 属性在这里用处不大。例如,如果使用了transform-origin: top right;,那么#text 将需要向下移动它在旋转之前的宽度。
我的问题:有没有办法告诉浏览器在旋转之后应用 CSS 定位属性;如果没有,那么有没有办法将#text 向下移动(例如使用top:)它在旋转之前的宽度?
注意。理想情况下,该解决方案不应要求为 #text 设置固定的 width:,并且不得需要 JavaScript。
【问题讨论】:
-
您的意思是您希望您的文本对象在旋转后适合其包装的右上角,对吧?
-
@faridv,我想将
<p>元素顺时针旋转 90 度并将其定位,以便旋转前的左上角(因此成为其右上角旋转后) 最终与<p>元素的父块的右上角完全相同。 -
编写这两个属性的顺序无关紧要。定位总是在任何变换之前应用。
-
你提到了它失败的浏览器;你测试过哪些浏览器成功了?