gpt4 book ai didi

css - 如何通过将鼠标悬停在 css3 中的不同 div 上来旋转图像?

转载 作者:行者123 更新时间:2023-11-28 12:21:55 25 4
gpt4 key购买 nike

我有一张图片和 4 个不同的 div。我试图根据悬停在上面的 div 以不同的 Angular 旋转该图片。到目前为止,我只能通过将鼠标悬停在自身上来旋转图像。没有亲子关系。我想做的事情可以实现吗?

HTML

<div id="line">
<img src="images/Line2.png" id="liner" alt="settings" />
</div>
<div id="d1">
</div>
<div id="2">
</div>

CSS

#d1:hover + #liner {
-webkit-transition-duration: 0.8s;
-moz-transition-duration: 0.8s;
-o-transition-duration: 0.8s;
transition-duration: 0.8s;
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
-o-transition-property: -o-transform;
transition-property: transform;
overflow:hidden;
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg) ;
-o-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);

最佳答案

最明智的解决方案是使用 javascript 执行此操作。但是如果你想纯粹在 CSS3 中做到这一点,这是可能的。查看我为您整理的这个 JSFiddle:

http://jsfiddle.net/4NQfj/

诀窍是嵌套div,最后在最深层次嵌套图片。例如:

<div id="d1">
<div id="d2">
<div id="d3">
<img id="couldBeAnImage" src="...">
</div>
</div>
</div>

然后您可以通过在每个 div 的 :hover 上限定图像的范围来简单地调整图像的转换属性。所以为了缩短 fiddle 中的代码,我基本上是这样做的:

#d1:hover #couldBeAnImage { transform: rotate(15deg); }
#d2:hover #couldBeAnImage { transform: rotate(30deg); }
#d3:hover #couldBeAnImage { transform: rotate(45deg); }

您想要使用 javascript 的原因是因为每个 div 都需要调整大小和定位才能使这个技巧起作用。这不是问题,除了假设您可以:a.) 在给定布局的情况下执行此操作以及.. b.) 处理每个 div 和后续图像的位置都是相对于每个祖先的事实分区

所以这有点棘手,但这是针对您所描述问题的 100% CSS 解决方案。如果我自己不这么说的话,解决起来很有趣 :)

编辑:

当然,您也可以使用 javascript 来做到这一点。这是一个 fiddle ,展示了一个稍微“草率”的解决方案:

http://jsfiddle.net/k3t2U/1/

执行此操作的方法是向 div 添加鼠标悬停和鼠标移出事件。在这种情况下,div 可以完全相互独立:

<div id="d1"></div>
<div id="d2"></div>
<div id="d3"></div>
<div id="couldBeAnImage"></div>

在我的示例中,我使用了 jQuery 的 .hover() 方法来添加事件处理程序。悬停基本上让你这样做:.hover(functionToCallOnMouseOver(), functionToCallOnMouseOut())

所以我仍在处理 CSS 中的旋转。我有三个类代表不同级别的轮换。然后在我的 mouseOver 和 mouseOut 事件处理程序中,我添加或删除指定各种旋转量的类。

$("#d1").hover(function(){
$("#couldBeAnImage").addClass("rotate");
},function(){
$("#couldBeAnImage").removeClass("rotate");
});

在 javascript 中,您可以通过多种方式真正做到这一点。所以这只是一个例子。从某种意义上说,它更强大,您可以更自由地控制实际元素。 CSS 方法基本上是一个“技巧”,您在指定标记和样式方面的方式极为有限。一般来说,我建议使用 javascript 解决这个问题。

关于css - 如何通过将鼠标悬停在 css3 中的不同 div 上来旋转图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com