Javascript web:如何放大网格项目并使项目集中在视口中
所以我有一个网格,我想放大一个网格项 我在用什么<代码>变换:缩放()以缩放网格容器,以及Javascript web:如何放大网格项目并使项目集中在视口中,javascript,css,zooming,Javascript,Css,Zooming,所以我有一个网格,我想放大一个网格项 我在用什么变换:缩放()以缩放网格容器,以及元素。滚动视图()以将网格项移动到视口的中心 问题是什么 css变换:scale()聚焦于元素的中心。 这将导致scale()产生的缩放效果导航到栅格的右侧,因为它是栅格容器的中心,我希望缩放栅格项目,使其仅聚焦于视口的中心。 我有一个网格,它有许多项,并且比视口大,因此当我执行scale()时,视口将移动到网格容器的中心,而不是缩放到当前视口中心 我目前的工作: 如何测试: 取消注释JS面板上的行44,该行被注释
元素。滚动视图()
以将网格项移动到视口的中心
问题是什么
css变换:scale()
聚焦于元素的中心。
这将导致scale()产生的缩放效果导航到栅格的右侧,因为它是栅格容器的中心,我希望缩放栅格项目,使其仅聚焦于视口的中心。
我有一个网格,它有许多项,并且比视口大,因此当我执行scale()
时,视口将移动到网格容器的中心,而不是缩放到当前视口中心
我目前的工作:
如何测试:
取消注释JS面板上的行44
,该行被注释掉,唯一发生的事情是导航到单击的项目,但没有放大,此行使用matrix()
将scale()
和translate()
应用在一起,但它将视口移动到错误的位置,我认为传递给翻译的值可能是错误的,但我已经尝试了几天,决定寻求帮助
只需在
上设置一个变换:比例(X)
。所选的项似乎可以实现以下功能:
。已选定{
转换:比例(1.7);
位置:相对位置;
z指数:1;
}
下面是我使用的简化Javascript:
bookclick上的函数(事件){
event.stopPropagation();
取消选择();
event.target.scrollIntoView({
行为:“平滑”,
块:“中心”,
内联:“中心”
});
$(event.target).addClass('selected');
}
函数取消选择(){
$('.books\uuu item')。removeClass('选定')
}
$('.books')。在('click','.books\u项目:未(.selected')上,在bookclick上);
$('.books')。打开('单击','.select',取消选择);
< >更新.< /P>计算元素相对于被缩放元素的整体尺寸的位置,并在要缩放的元素的中间设置元素的“<代码>转换原点< /代码>(使用<代码> %>代码>)。你还想翻译它,这样被放大的元素就会出现在屏幕的中央。你介意在我附加到问题的代码笔链接中试试吗?我不太明白你的意思mean@AndreiGheorghiu或者至少告诉我更多细节,getBoundingClientRect()是获取相对元素位置的工具?//您看过代码了吗?缩放整个库既令人困惑(UX方面),又很复杂(代码方面;因为您使用的是scrollIntoView()
,它是实验性的,似乎没有回调参数)。我添加了一个答案,可以简单地缩放所选项目。谢谢!我非常感谢您的帮助,但我真的很愿意在那里实现缩放效果,并将继续我的旅程,直到那里问题是transform
实际上不会更改DOM中的项。它只是在别处/以不同的方式呈现它。我相信sIV
会滚动到元素在DOM中的实际位置,而不是父元素上的scale()。但是,方法是将父对象的tranform origin
设置在滚动子对象的中心。应该使用,但我不确定它们在scrollIntoView()之前和之后返回什么。