CSS样式:悬停时如何更改图像?

Posted

技术标签:

【中文标题】CSS样式:悬停时如何更改图像?【英文标题】:CSS Styling: How to change the image when it is hovered over? 【发布时间】:2015-04-24 09:50:05 【问题描述】:

我正在尝试对图像进行悬停效果,当它悬停在图像上时,它将变为另一张图片。当我不使用锚标签时,我似乎无法让它工作。我的目标是当我将鼠标悬停在按钮上时改变图片,我相信这需要一些 jQuery 魔法。这是我的代码,用于在悬停时尝试更改图像但不知何故不起作用。我错过了什么吗?

html
<div>
<img src="images/newpic.png" class="img-circle homeimage" /> 
</div>

CSS
.homeimage 
    height:200px;
    width: auto;
    background-image: url('../images/newpic.png');


.homeimage:hover 
    background-image: url('../images/funnypic.png');

【问题讨论】:

不用jquery也可以实现 您要更改悬停背景图片或html中的图片? 为什么要把图片放在 html 和 css 中作为背景。 Changing image on hover with css/html的可能重复 【参考方案1】:

这行不通,因为您将类放在图像标签上尝试将 img 放入 div 并给它一个高度和宽度,看看这个 js fiddle

.container
    width 100%;
    height: 500px;


.picture 
    height:500px;
    width: 500px;
    background-image: url('http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2014/4/11/1397210130748/Spring-Lamb.-Image-shot-2-011.jpg');
    background-repeat:no-repeat;


.picture:hover 
    background-image: url('http://www.online-image-editor.com//styles/2014/images/example_image.png');
<div class="container">
    <div class="picture">
        
    </div>
    
</div>

http://jsfiddle.net/kriscoulson/a0dodtjn/1/

【讨论】:

【参考方案2】:

只有CSS才能解决。

HTML

<img class="img-circle homeimage" /> 

CSS

.homeimage 
    height:200px;
    width: auto;
    background: url('https://www.google.co.kr/images/hpp/lightbulb-icon-39x39.png') no-repeat;


.homeimage:hover 
    background: url('http://www.google.com/images/logos/url_shortener_logo.gif') no-repeat;

演示:http://jsfiddle.net/ymyL949n/

【讨论】:

【参考方案3】:

如果您想更改从 html 调用的 img,您可以在没有 jquery 和 javascript 的情况下尝试此解决方案。 http://jsbin.com/sujigakeru/8/edit

HTML

 <div class="container">

    <div class="content">
      <img src="http://www.makemenoise.com/wp-content/uploads/2012/08/wordpress-logo-200x200.png" /> 
    </div>

    <div class="hover">
      <img src="http://townandcountryremovals.com/wp-content/uploads/2013/10/firefox-logo-200x200.png" >
    </div>

  </div>

CSS

.container
  width:200px;
  height:200px;
  position:relative;


.hover
  display:none;
  position:absolute;
  top:0;
  left:0;
  z-index:1;

.container:hover .hover
  display:block;

【讨论】:

【参考方案4】:

这是一个使用 Jquery 的示例:这允许您使用带有 image 标记的 hover,无论容器是什么:

jQuery

$(document).ready(function () 
    $('.imgh')
        .mouseover(function () 
        $(this).attr("src", "http://taditdash.files.wordpress.com/2014/01/tadit-dash.jpg");
    )
        .mouseout(function () 
        $(this).attr("src", "http://s.codeproject.com/App_Themes/CodeProject/Img/logo250x135.gif");
    );
);

HMTL

<img src="http://s.codeproject.com/App_Themes/CodeProject/Img/logo250x135.gif"  class="imgh"></img>

Live Demo

【讨论】:

非常感谢!出于某种原因,所有 css 选项都不起作用,但 jQuery 就像一个魅力。 jQuery 魔法太强了。【参考方案5】:

您也可以使用 css 来实现这一点。您需要在按钮悬停时更改背景图片:

CSS:

img 
    display:block;
    width:400px;
    height:300px;
    background-image:url("http://lorempixel.com/600/200/sports/1/")

.css:hover ~ img 
    background-image:url("http://lorempixel.com/600/200/sports/2/")


<button class="css">CSS</button>
<img src="/image.png" />

确保元素顺序保持不变。按钮应该在图片之前。

演示:http://jsfiddle.net/lotusgodkk/GCu2D/573/

【讨论】:

以上是关于CSS样式:悬停时如何更改图像?的主要内容,如果未能解决你的问题,请参考以下文章

带有 CSS 的样式禁用按钮

使用 CSS 更改兄弟悬停时的元素样式

将父元素悬停到子标签元素后如何更改相同的css样式?

如何在悬停内容之前更改样式组件[emotion.js,样式组件]

SVG CSS 悬停样式

如何使用 CSS 在悬停时设置特定元素的样式?