- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张图片和 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:
诀窍是嵌套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 ,展示了一个稍微“草率”的解决方案:
执行此操作的方法是向 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/
我是一名优秀的程序员,十分优秀!