Javascript 使用CSS3基于鼠标位置平移图像方向

Javascript 使用CSS3基于鼠标位置平移图像方向,javascript,html,css,Javascript,Html,Css,好的,所以可以用CSS3将图像平移到左侧或右侧等。例如: HTML 这就是它的工作原理 但是我希望能够让图像沿着鼠标在图像上移动的方向平移。这在CSS中可能吗?不,您需要JavaScript。CSS无法判断鼠标移动的方向,只有当鼠标位于元素上方时才可以。不,您需要JavaScript。CSS不能告诉鼠标移动的方向,只有当它在一个元素上时。你让我想在CSS中尝试这个,实际上你可以做一些技巧,以某种方式让它工作,但是在js中,你可以检测到你的鼠标移动,这肯定更好 不管怎样,我就是这样做的,两边都是平

好的,所以可以用CSS3将图像平移到左侧或右侧等。例如:

HTML

这就是它的工作原理


但是我希望能够让图像沿着鼠标在图像上移动的方向平移。这在CSS中可能吗?

不,您需要JavaScript。CSS无法判断鼠标移动的方向,只有当鼠标位于元素上方时才可以。

不,您需要JavaScript。CSS不能告诉鼠标移动的方向,只有当它在一个元素上时。

你让我想在CSS中尝试这个,实际上你可以做一些技巧,以某种方式让它工作,但是在js中,你可以检测到你的鼠标移动,这肯定更好

不管怎样,我就是这样做的,两边都是平底锅

创建一个容器,将所有div放在其中,然后给它两倍于图像的宽度。假设你的图像是300像素宽300像素高

HTML:

在这个容器中,放置你的图像,在它前面和后面各放一个div

<div class="container">
    <div class="left"></div>
    <img src="yourimage.png" alt="">
    <div class="right"></div>
</div>
现在我们想把这两个div放在图像的顶部,以触发悬停

.left {
    left: 150px;
}

.right {
    right: 150px;
}
现在,由于它们位于图像的顶部,我们只需在悬停上添加一个填充(从右到右,从左到左)即可移动图像

.right:hover {
    padding-right: 50px;
}

.left:hover {
    padding-left: 50px;
}
由于容器将所有div居中,因此如果一个div有一个填充,则它会将所有其他div移向该方向


请参阅fiddle:

您让我想在CSS中尝试这一点,实际上您可以通过一些技巧使其在某种程度上发挥作用,但在js中,您可以检测到鼠标移动,这肯定会更好

不管怎样,我就是这样做的,两边都是平底锅

创建一个容器,将所有div放在其中,然后给它两倍于图像的宽度。假设你的图像是300像素宽300像素高

HTML:

在这个容器中,放置你的图像,在它前面和后面各放一个div

<div class="container">
    <div class="left"></div>
    <img src="yourimage.png" alt="">
    <div class="right"></div>
</div>
现在我们想把这两个div放在图像的顶部,以触发悬停

.left {
    left: 150px;
}

.right {
    right: 150px;
}
现在,由于它们位于图像的顶部,我们只需在悬停上添加一个填充(从右到右,从左到左)即可移动图像

.right:hover {
    padding-right: 50px;
}

.left:hover {
    padding-left: 50px;
}
由于容器将所有div居中,因此如果一个div有一个填充,则它会将所有其他div移向该方向


请参阅fiddle:

和一些额外的标记,这可以通过以下方式完成:

html,
身体{
身高:100%;
}
.盒子{
位置:相对位置;
高度:100vh;
溢出:隐藏;
}
.box img{
最大宽度:100%;
过渡:全部5秒;
}
.左{
位置:绝对位置;
z指数:1;
左:0;
排名:0;
右:50%;
底部:0;
背景:粉红色;
不透明度:.3;
}
.左:悬停~img{
转化:translateX(-50%);
}
.对{
位置:绝对位置;
z指数:1;
左:50%;
排名:0;
右:0;
底部:0;
背景:浅绿色;
不透明度:.3;
}
.右:悬停~img{
转化:translateX(50%);
}

通过一些额外的标记,可以做到:

html,
身体{
身高:100%;
}
.盒子{
位置:相对位置;
高度:100vh;
溢出:隐藏;
}
.box img{
最大宽度:100%;
过渡:全部5秒;
}
.左{
位置:绝对位置;
z指数:1;
左:0;
排名:0;
右:50%;
底部:0;
背景:粉红色;
不透明度:.3;
}
.左:悬停~img{
转化:translateX(-50%);
}
.对{
位置:绝对位置;
z指数:1;
左:50%;
排名:0;
右:0;
底部:0;
背景:浅绿色;
不透明度:.3;
}
.右:悬停~img{
转化:translateX(50%);
}



不,您需要JavaScript。CSS无法判断鼠标移动的方向,只有当鼠标位于元素上方时才可以。糖块。。。那时,我们已经进入了javascript的世界。谢谢,如果你想提供一个答案,你需要使用Javascript,这个回答的问题可能会帮助你不,你需要Javascript。CSS无法判断鼠标移动的方向,只有当鼠标位于元素上方时才可以。糖块。。。那时,我们已经进入了javascript的世界。谢谢,如果你想提供一个答案,你需要使用Javascript,这个回答的问题可能会帮助你把这个改成答案,它确实是一个小提琴,但它可以工作。它的工作方式很粗糙,而且在某种程度上感觉不顺滑,如果你有时间,用js来做,会更好。把这个改成了答案,这确实是一把小提琴,但它工作。它工作,但在一个黑客的方式,它在某种程度上感觉不平稳,如果你有时间,使它在js,它会更好。这是美丽的,不知道关于兄弟选择器,谢谢,肯定是一个比我的答案更好的解决方案我看到我们有相同的一般想法。我没有注意到你的帖子。第三次很幸运,我想呵呵,但肯定好得多,有没有办法让它运行得更平稳,或者是推动它?它对我来说运行得很平稳。这将取决于硬件。这很漂亮,我不知道兄弟选择器,谢谢,肯定是一个比我的回答更好的解决方案。我看到我们有相同的总体想法。我没有注意到你的帖子。第三次很幸运,我想呵呵,但肯定好得多,有没有办法让它运行得更平稳,或者是推动它?它对我来说运行得很平稳。这将取决于硬件。
.left {
    left: 150px;
}

.right {
    right: 150px;
}
.right:hover {
    padding-right: 50px;
}

.left:hover {
    padding-left: 50px;
}