也许这是一个简单的问题,但当鼠标悬停在图像上时(图像不是链接,只是图像),当您想要更改图像时,Rails的优良做法是什么?
答案 0 :(得分:2)
试试这个:
HTML:
<img id="demo_image" src="smiley.gif" alt="Smiley face" width="42" height="42" onmouseover="changeImage(this)" onmouseout="changeImage(this)" data-image2="http://mw2.google.com/mw-panoramio/photos/small/17287086.jpg">
JS:
function changeImage(img) {
img = $(img);
var in_url = img.attr('src'),
out_url = img.attr('data-image2');
img.attr('src', out_url).attr('data-image2', in_url);
}
答案 1 :(得分:2)
有两种方法可以做到这一点:
1)使用img标签,并使用javascript更改悬停时的img src属性
2)使用div(或其他非img元素),并通过在css中设置的background
属性显示图像。然后,您可以添加其他:hover
规则,以便在悬停时显示备用图片。
注1) - 你不能做一个使用css来改变img标签背景的“混合”方法,因为图像标签的背景是在图像后面,因此无法看到:你要改变图像背后的“层”
注2) - 如果您将js与img标记一起使用,请将备用图像路径放在data
属性中,例如"data-hover-src="/images/pic2.png"
。然后,您可以使用简单的标准javascript函数进行管理。
注3) - 如果图像src是数据库生成的(例如,它是用户上传的图像),你可以仍然通过css执行,但你需要通过放置将css转换为元素的style属性。
关于哪条路走下去的决定有点复杂,但可以归结为“如果图像是内容,例如用户已经上传,则使用img标签。如果图像是外观的一部分你的网站,使用CSS“。但是,您可以在任何一种情况下使用这两种方法进行一些工作。
另请参阅:When to use IMG vs. CSS background-image?和Div Background Image or Using IMG Tag
答案 2 :(得分:0)
我们假设这是您的a
代码,为其添加一个类和一个ID(如果需要)
<%= image_tag "xyz.jpg", class: "change-image" %>
现在在js文件中
$(".change-image").hover(function(){
$(this).attr("src") = // url of the new image
});
答案 3 :(得分:0)
让我们有一张图片
<%= image_tag "image.jpg", id: "img" %>
现在使用jQuery
$(function() {
$("#img")
.mouseover(function() {
var src = $(this).attr("src").replace("image.jpg", "over.jpg");
$(this).attr("src", src);
})
.mouseout(function() {
var src = $(this).attr("src").replace("over.jpg", "image.jpg");
$(this).attr("src", src);
});
});