我需要更改<img>
上的hover
来源网址。
我试过这个但不行:
HTML
<img id="my-img" src="http://dummyimage.com/100x100/000/fff"/>
CSS
#my-img:hover {
content: url('http://dummyimage.com/100x100/eb00eb/fff');
}
任何帮助都将不胜感激。
更新
这仅适用于Webkit / Google Chrome。
答案 0 :(得分:130)
只有html和css,它不能改变图像的src。如果你用div标签替换img标签,那么你可以改变设置为背景的图像,如
div {
background: url('http://dummyimage.com/100x100/000/fff');
}
div:hover {
background: url('http://dummyimage.com/100x100/eb00eb/fff');
}
如果你认为你可以使用一些javascript代码,那么你应该能够改变img标签的src,如下所示
function hover(element) {
element.setAttribute('src', 'http://dummyimage.com/100x100/eb00eb/fff');
}
function unhover(element) {
element.setAttribute('src', 'http://dummyimage.com/100x100/000/fff');
}
<img id="my-img" src="http://dummyimage.com/100x100/000/fff" onmouseover="hover(this);" onmouseout="unhover(this);" />
答案 1 :(得分:94)
我修改了与Patrick Kostjens相关的一些变化。
<a href="#">
<img src="http://icons.iconarchive.com/icons/fasticon/angry-birds/128/yellow-bird-icon.png"
onmouseover="this.src='http://icons.iconarchive.com/icons/fasticon/angry-birds/128/red-bird-icon.png'"
onmouseout="this.src='http://icons.iconarchive.com/icons/fasticon/angry-birds/128/yellow-bird-icon.png'"
border="0" alt=""/></a>
样本
答案 2 :(得分:16)
通过将width
和height
设置为0来隐藏实际图像并应用一些CSS来执行您想要的操作,您可以做的就是作弊:
#aks {
width:0px;
height:0px;
background:url('http://dummyimage.com/100x100/000/fff');
padding:50px;
}
#aks:hover {
background: url('http://dummyimage.com/100x100/eb00eb/fff');
}
并且填充使img
标记符合您希望的大小(实际图像大小的一半)。
答案 3 :(得分:15)
我有类似的问题,但我的解决方案是有两个图像,一个隐藏(显示:无)和一个可见。在悬停在周围跨度上时,原始图像将更改为display:none,另一个图像将显示为:block。 (可能会根据您的情况使用&#39;内联&#39;
此示例使用两个span标签而不是图像,因此您可以在此处运行时查看结果。不幸的是,我没有任何在线图片资源可供使用。
#onhover {
display: none;
}
#surround:hover span[id="initial"] {
display: none;
}
#surround:hover span[id="onhover"] {
display: block;
}
&#13;
<span id="surround">
<span id="initial">original</span>
<span id="onhover">replacement</span>
</span>
&#13;
答案 4 :(得分:10)
这是使用纯CSS的替代方法。我们的想法是在HTML标记中包含这两个图像,并相应地显示或隐藏这些图像:hover
<强> HTML 强>
<a>
<img src="https://cdn4.iconfinder.com/data/icons/imoticons/105/imoticon_15-128.png" />
<img src="https://cdn4.iconfinder.com/data/icons/imoticons/105/imoticon_12-128.png" />
</a>
<强> CSS 强>
a img:last-child {
display: none;
}
a:hover img:last-child {
display: block;
}
a:hover img:first-child {
display: none;
}
jsfiddle:https://jsfiddle.net/m4v1onyL/
请注意,所使用的图像尺寸相同,无法正确显示。此外,这些图像文件大小非常小,因此在这种情况下加载多个不是问题,但如果您要切换大尺寸图像的显示,则可能是这样。
答案 5 :(得分:4)
我还有一个解决方案。如果有人使用AngularJs: http://jsfiddle.net/ec9gn/30/
<div ng-controller='ctrl'>
<img ng-mouseover="img='eb00eb'" ng-mouseleave="img='000'"
ng-src='http://dummyimage.com/100x100/{{img}}/fff' />
</div>
Javascript:
function ctrl($scope){
$scope.img= '000';
}
没有CSS ^^。
答案 6 :(得分:3)
由于您无法使用CSS更改src
:如果jQuery是您的选项,请查看此小提琴。
$('#aks').hover(
function(){
$(this).attr('src','http://dummyimage.com/100x100/eb00eb/fff')
},
function(){
$(this).attr('src','http://dummyimage.com/100x100/000/fff')
}
)
它基本上使用.hover()
方法......它需要两个函数才能使它工作。当您进入悬停并退出时。
我们使用.attr
(属性的缩写)来更改src
属性。
值得注意的是,你需要像小提琴中所包含的jQuery库来完成这项工作。
答案 7 :(得分:3)
同意AshisKumar的回答,有一种方法可以通过使用jQuery功能在鼠标悬停时更改图像网址:
$(function() {
$("img")
.mouseover(function() {
var src = $(this).attr("src").match(/[^\.]+/) + "over.gif";
$(this).attr("src", url1); //URL @the time of mouse over on image
})
.mouseout(function() {
var src = $(this).attr("src").replace("over", "");
$(this).attr("src", url2); //default URL
});
});
答案 8 :(得分:2)
就个人而言,我会选择其中一个JavaScript / jQuery解决方案。这不仅保留了您的HTML语义(即,图像显示为img元素,其中通常在标记中定义了src图像),但是如果您使用JS / jQuery解决方案,那么您也将能够使用JS / jQuery 预加载你的悬停图片。
预加载悬停图片意味着当用户将鼠标悬停在原始图片上时,可能没有下载延迟,从而导致您的网站表现得更专业。
这确实意味着你依赖于JS,但是没有启用JS的极少数人可能不会太过激动 - 其他人都会获得更好的体验......而且你的代码会很好也是!
答案 9 :(得分:2)
我有类似的问题 - 我想替换图片:悬停但由于缺乏Bootstrap的自适应设计而无法使用BACKGRUND-IMAGE。
如果你喜欢我只想改变图片:悬停(但不坚持改变特定图像标签的SRC)你可以做这样的事情 - 这是纯粹的CSS解决方案。
HTML:
<li>
<img src="/picts/doctors/SmallGray/Zharkova_smallgrey.jpg">
<img class="hoverPhoto" src="/picts/doctors/Small/Zharkova_small.jpg">
</li>
CSS:
li { position: relative; overflow: hidden; }
li img.hoverPhoto {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
opacity: 0;
}
li.hover img { /* it's optional - for nicer transition effect */
opacity: 0;
-web-kit-transition: opacity 1s ease;
-moz-transition: opacity 1s ease;li
-o-transition: opacity 1s ease;
transition: opacity 1s ease;
}
li.hover img.hoverPhoto { opacity: 1; }
如果您想要与IE7兼容的代码,您可以通过不透明度定位来隐藏/显示HOVER图像。
答案 10 :(得分:1)
在旧版浏览器中,:hover
仅适用于<a>
元素。所以你必须做一些事情like this才能让它发挥作用。
<style>
a#aks
{
width:100px;
height:100px;
display:block;
}
a#aks:link
{
background-image: url('http://dummyimage.com/100x100/000/fff');
}
a#aks:hover
{
background-image: url('http://dummyimage.com/100x100/eb00eb/fff');
}
</style>
<a href="#" id="aks"></a>
答案 11 :(得分:1)
为此,您可以使用以下代码
1)html
<div id = "aks">
</div>
2)css
#aks
{
width:100px;
height:100px;
background-image:url('http://dummyimage.com/100x100/000/fff');}
#aks:hover {
background-image:url('http://dummyimage.com/100x100/eb00eb/fff');
}
答案 12 :(得分:1)
您无法使用css更改img src。您可以使用以下纯css解决方案。 HTML:
<div id="asks"></div>
CSS:
#asks {
width: 100px;
height: 100px;
background-image: url('http://dummyimage.com/100x100/0000/fff');
}
#asks:hover {
background-image: url('http://dummyimage.com/100x100/eb00eb/fff');
}
或者,如果您不想将div与背景图像一起使用,则可以使用javascript / jQuery解决方案。 HTML:
<img id="asks" src="http://dummyimage.com/100x100/000/fff" />
jQuery的:
$('#asks')
.mouseenter(function(){$('#asks').attr('src', 'http://dummyimage.com/100x100/eb00eb/fff');})
.mouseleave(function(){$('#asks').attr('src', 'http://dummyimage.com/100x100/000/fff');});
答案 13 :(得分:1)
以下代码适用于Chrome和Firefox
<a href="#"><img src="me-more-smile.jpg" onmouseover="this.src='me-thinking-about-a-date.jpg'" onmouseout="this.src='me-more-smile.jpg'" border="0" alt=""/></a>
答案 14 :(得分:1)
您无法使用img
更改src
代码CSS
属性。可以使用 Javascript onmouseover()
事件处理程序。
<强> HTML:强>
<img id="my-img" src="http://dummyimage.com/100x100/000/fff" onmouseover='hover()'/>
<强>使用Javascript:强>
function hover() {
document.getElementById("my-img").src = "http://dummyimage.com/100x100/eb00eb/fff";
}
答案 15 :(得分:0)
这是一个纯粹的CSS解决方案。将可见图像放在img标记中,将第二个图像作为背景放在css中,然后在悬停时隐藏图像。
.buttons{
width:90%;
margin-left:5%;
margin-right:5%;
margin-top:2%;
}
.buttons ul{}
.buttons ul li{
display:inline-block;
width:22%;
margin:1%;
position:relative;
}
.buttons ul li a p{
position:absolute;
top:40%;
text-align:center;
}
.but1{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but1 a:hover img{
visibility:hidden;
}
.but2{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but2 a:hover img{
visibility:hidden;
}
.but3{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but3 a:hover img{
visibility:hidden;
}
.but4{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but4 a:hover img{
visibility:hidden;
}
<div class='buttons'>
<ul>
<li class='but1'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /><p>Blog</p></a></li>
<li class='but2'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /> <p>Herrero</p></a></li>
<li class='but3'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /><p>Loftin</p></a></li>
<li class='but4'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /><p>Contact</p></a></li>
</ul>
</div>
答案 16 :(得分:0)
更改src
图片的最佳方式是:
<img src='willbehidden.png' style="width:0px; height:0px; padding: 8px; background: url(newimage.png);">
查看现场演示:http://www.audenaerde.org/csstricks.html#imagereplacecss
享受!
答案 17 :(得分:0)
试用此代码。
.card {
width: 200px;
height: 195px;
position: relative;
display: inline-block;
}
.card .img-top {
display: none;
position: absolute;
top: 0;
left: 0;
z-index: 99;
width:200px;
}
.card:hover .img-top {
display: inline;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Image Change on Hover with CSS</title>
</head>
<body>
<div class="card">
<img src="http://www.dhresource.com/200x200s/f2-albu-g5-M00-EC-97-rBVaJFkAobCAHD9XAADvz9DDocA266.jpg/diy-wall-stickers-home-decor-nature-colorful.jpg" alt="Card Back" style="width:200px">
<img src="https://s-media-cache-ak0.pinimg.com/236x/31/17/98/3117987a0be0a7d8976869aabf54d2d7.jpg" class="img-top" alt="Card Front">
</div>
</body>
</html>
答案 18 :(得分:0)
关于语义,到目前为止,我不喜欢任何解决方案。因此,我个人使用以下解决方案:
.img-wrapper {
display: inline-block;
background-image: url(https://www.w3schools.com/w3images/fjords.jpg);
}
.img-wrapper > img {
vertical-align: top;
}
.img-wrapper > img:hover {
opacity: 0;
}
<div class="img-wrapper">
<img src="https://www.w3schools.com/w3css/img_lights.jpg" alt="image" />
</div>
这是具有良好浏览器兼容性的纯CSS解决方案。它利用图像包装器,该包装器的背景最初被图像本身隐藏。悬停时,图像通过不透明度隐藏,因此背景图像变得可见。这样,在标记代码中就不会有一个空的包装,而是一个真实的图像。
答案 19 :(得分:0)
还有另一种仅使用HTML和CSS的简单方法!
只需用div包裹<img>
标签,就像这样:
<div class="image-wrapper">
<img src="http://dummyimage.com/100x100/000/fff">
</div>
然后,在CSS文件中隐藏img并设置环绕div元素的背景图片:
.image-wrapper:hover {
background-image: url(http://dummyimage.com/100x100/eb00eb/fff);
background-size: contain;
background-repeat: no-repeat;
}
.image-wrapper:hover img {
display: none;
}
等等!