【发布时间】:2017-11-26 07:51:40
【问题描述】:
简而言之:单击图像会通过 CSS 过渡来移动它。我希望图像从鼠标下方移开时的悬停效果消失。
我有一张没有边框的图片。当您单击它时,页面会使用 zoomooz 放大。当您将鼠标悬停在图像上时,边框会显示并在页面放大时停留在那里。 如果您单击任何地方,您就会缩小。但是,如果您单击图像以缩小并且不移动鼠标,则图像将保持悬停状态,因此即使鼠标当前不在图像上方,图像也会保留边框。
我知道这是合乎逻辑的,因为没有触发更改的事件,但是有什么方法可以解决这个问题?我尝试仅在 click 事件中添加样式更改,但没有动画,因为它不是 css 中的过渡 ($("img").css("border-color","rgba(0,0,0,0)");))
这是我的 HTML:
<body>
<img src="https://i.imgur.com/e1TsDx0.png" id="abc"/>
</body>
CSS
img {
width: 100px;
border: 1px solid black;
border-color: rgba(0, 0, 0, 0);
margin-left: 10px;
transition: border-color 600ms;
}
img:hover {
border: 1px solid black;
transition:border-color 0s;
}
.zoomedimg {
border-color: rgba(0, 0, 0, 1);
}
Javascript:
$(document).ready(function() {
$("img").click(function(evt) {
event.stopPropagation()
if ($("img").hasClass('zoomedimg')) {
$("img").removeClass('zoomedimg');
$("body").zoomTo();
} else {
$("img").addClass('zoomedimg');
$("img").zoomTo();
}
});
$(window).click(function(evt) {
$("body").zoomTo({});
$("img").removeClass('zoomedimg');
});
});
与这些问题密切相关:
How to remove hover state when the element moves这个很清醒 答案,在那个例子中我无法开始工作。当我单击该解决方案中的图像时,我确实尝试设置边框颜色。但是变化的边框不算作过渡,所以它不会动画。
Hover state is maintained during a transition even if the element has gone 这有一个非常广泛的答案,但我并不真正了解如何将其应用于我的情况。
编辑: Junaid Ahmed 提供了一种使用 jQuery 和类进行悬停转换的解决方案。当您单击缩小时,您删除了“悬停”类,因此也删除了边框。这带来了一个新问题:
如果您在单击时将鼠标悬停在图像上,并且一直悬停直到缩小结束,则边框会消失并且不会返回,直到您再次将鼠标悬停和鼠标悬停。
我将如何解决这个问题?
【问题讨论】:
标签: javascript jquery css