【发布时间】:2017-08-31 14:33:56
【问题描述】:
我正在尝试在 javascript transform-origin 属性中计算绝对定位的元素,以便它们在悬停时填充整个视口。
我尝试通过将 x 除以窗口宽度和 y 除以窗口高度来计算此属性,其中 x 是从左视口边缘到元素中心的距离,y 是视口顶部和元素中心之间的距离。不幸的是,元素并没有以这种方式完美居中,并且没有像我想要的那样填满整个屏幕,尽管它有合适的大小来填满屏幕:/
如何正确计算transform-origin 的枢轴位置以实现我想要的?
这里有一个演示:
let blocks = document.querySelectorAll("a.block");
console.log(blocks);
Array.prototype.slice.call(blocks).forEach((block) => {
console.log(block);
let blockRect = block.getBoundingClientRect();
let originX = (blockRect.left + blockRect.width /2) / window.innerWidth * 100,
originY = (blockRect.top + blockRect.height /2) / window.innerHeight * 100;
block.style.transformOrigin = `${originX}% ${originY}%`;
});
.block{
position: absolute;
left: 5%;
top: 10%;
width: 10%;
height: 10%;
background: red;
-webkit-transition: transform 1s;
transition: transform 1s;
}
.block.second{
left: 87%;
top: 26%;
}
.block:hover{
-webkit-transform: scale3d(10,10,1);
transform: scale3d(10,10,1);
}
<a href="#" class="block"></a>
<a href="#" class="block second"></a>
【问题讨论】:
标签: javascript html css transform