【发布时间】:2017-04-09 19:18:11
【问题描述】:
我有 position: absolute; 元素,我想在某些情况下进行过渡。但是,宽度和高度过渡的起点似乎取决于顶部/底部左/右值。
有什么方法可以更好地控制这个吗?
我特别希望从 div 的中心过渡。
是否有任何不依赖于转换顶部/底部左/右值的解决方案?
编辑:
我想保持宽度和高度的过渡。
感谢您的回答,但在这种情况下使用 变换比例不是解决方案。 Transform property 中的百分比是指元素边框的大小,而不是容器的大小。参见例如this JSFiddle,将鼠标悬停在两个元素上的最终结果有何不同。
div, span {
width:30%;
height:30%;
background:pink;
transition:all 1s ease;
position:absolute;
}
*:hover{
width:10%;
height:10%;
}
div{
top:10%;
left:10%;
}
span{
bottom:10%;
right:10%;
}
<div></div>
<span></span>
【问题讨论】:
-
你玩过
transition-origin的各种值吗?喜欢transition-origin: 50% 50%;? -
Just did。好像没什么效果。
-
我明白了。问题是您的元素仍然基于顶部/左侧位置放置,并且不受过渡的影响。唯一想到的就是调整
:hover的左/上属性,或者使用scale()。 -
transform: scale可以完成这项工作,您只需要正确使用它即可。您展示比例如何在元素上工作的小提琴,而不是它的容器,有一个很大的缺陷,使用宽度/高度调整大小的样本设置为 33%(从 30 到 10),因此比例应该匹配是 0.33,而不是 0.1 ...更新小提琴jsfiddle.net/6gyp3f7k/1
标签: html css css-transitions