考虑以下旋转段落并将其定位以使最初的左上角成为其顶部右上角(因此在旋转后成为其顶部右侧角)并位于父块的顶部右侧角的尝试:
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:
),使其下降与它旋转前的宽度相同?
NB. 理想情况下,解决方案不应要求为#text
设置固定的width:
属性,并且不能使用JavaScript。
<p>
元素顺时针旋转90度,并将其定位,使得在旋转之前它的左上角所在的位置(因此在旋转之后成为它的右上角)正好与<p>
元素的父块的右上角位置相同。 - user82216