【发布时间】:2011-07-02 00:33:03
【问题描述】:
我使用 jQuery .position() 方法获得绝对定位的旋转元素位置,然后使用 jQuery .css(pos) 设置与位置相关的属性(顶部、左侧),其中 pos 是 .position() 返回的数据。我认为它会将元素留在原处,但元素的位置正在改变。
如何使用设置旋转元素位置,以便按预期放置?也许有一个取决于改变位置的角度的系数?
我正在 Google Chrome v.9、Windows XP 中进行测试。
HTML
<div id="container">
<div id="element">
<img src="http://t0.gstatic.com/images?q=tbn:ANd9GcS0Fawya9MVMez80ZusMVtk_4-ScKCIy6J_fg84oZ37GzKaJXU74Ma0vENc"/>
</div>
</div>
CSS
#container {
position: relative;
border: 1px solid #999;
padding: 5px;
height: 300px;
width:300px;
}
#element {
position: absolute;
top:50px;
left: 60px;
width: auto;
border: 1px solid #999;
padding: 5px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
}
JS
$(document).ready(function(){
var $el = $('#element'),
// getting position
pos = $el.position();
alert(pos.left + '/' + pos.top);
// alerts 37/11
// setting css position attributes equal to pos
$el.css(pos);
// re-getting position
pos = $el.position();
alert(pos.left + '/' + pos.top);
// alerts 14/-28
});
【问题讨论】:
-
一个明显的解决方案是在您读/写其位置属性时临时拉直图像...
-
感谢@Šime 的回答,我也想过,但是会对整个应用的生产力产生很大的影响,而且用户会在视觉上感受到,所以我正在寻找更智能的方法来解决它。
-
它可以在 Opera 和 Firefox 中使用,同时提醒
50/60。 -
@Poetro 它可以在 Opera 中使用,因为图像在该浏览器中没有旋转。将
-o-transform: rotate(45deg);添加到#element CSS 规则中,它在Opera 中也不起作用。 -
对不起,我忘了说我是关于谷歌浏览器的。
标签: javascript jquery css css-position