2012-01-28 51 views
7

我需要改变图像的背景颜色。图像是一个带有白色背景的圆形图像,当您将鼠标悬停在圆形图像上时,需要将圆形图像的背景更改为蓝色。我只需要这个圈子就可以改变。如何改变图像的颜色上悬停

我的HTML代码

<div class="fb-icon"> 
<a href="http://www.facebook.com/mypage" target="_blank"> 
<img src="images/fb_normal.png" alt="Facebook"> 
</a> 
</div> 

在CSS中我写道:

.fb-icon:hover { 
    background: blue; 
} 

上面的代码给我蓝色而是绕了一圈图标的框架。我需要的是改变圆圈本身的背景。想象一下,当你将鼠标悬停到蓝色时,它就像一个白色的信号。

请我需要一个解决方案,如果它可以通过CSS或什么来完成。对不起,如果我让它太长。

问题:link

+0

是你的PNG图片白色圆圈背景透明?如果你可以发布一个链接让我们检查出来,这将是非常有用的,因为你的问题不是很清楚。 – Juank 2012-01-28 17:15:11

+0

你是说你想要*图片*改变,而不是背景颜色,更正? – 2012-01-28 17:17:19

+0

[我可以在没有第二张图片的情况下在悬停期间更改html图片的外观吗?](http://stackoverflow.com/questions/60290/can-i-change-the-appearance-of-an-html -image-hover-without-a-second-image)找不到更好的帖子,找到你想要的答案,但看到关于使用精灵的2个答案(不是公认的答案)。 – 2012-01-28 17:18:24

回答

8

理想情况下,你应该使用一个透明的PNG,在白色的圆圈和图像的背景透明。然后您可以将.fb-iconbackground-color设置为蓝色悬停。所以你的CSS将是:

fb-icon{ 
    background:none; 
} 

fb-icon:hover{ 
    background:#0000ff; 
} 

此外,如果你不想使用PNG的,你也可以使用精灵和改变的背景位置。精灵是一个大图像,包含一系列较小的图像,可通过更改背景位置将其用作背景图像。因此,对于例如,如果与白色背景原来的圆形图像100像素X 100像素,可以提高图像的高度,以100像素X 200像素,使上半部分是用白色背景的原始图像,而下半部分是蓝色背景的新图像。然后,设置设置你的CSS为:

fb-icon{ 
    background:url('path/to/image/image.png') no-repeat 0 0; 
} 

fb-icon:hover{ 
    background:url('path/to/image/image.png') no-repeat 0 -100px; 
} 
+0

非常感谢您帮助我使用您的想法,并使用以下代码 .fb-icon a { display:block; float:left; background:url('../ images/email。png')不重复滚动中心#679d40; margin:15px; width:62px; \t height:62px; border-radius:32px; \t text-indent:-99999px; } .fb-icon:悬停a { background:url('../ images/email.png')no-repeat scroll center center#000000; } – 2012-01-30 19:09:35

0

如果我理解正确,那么,如果你给你的图像透明背景会更容易,并设置背景容器的background-color属性,而无需使用过滤器等。

http://www.ajaxblender.com/howto-convert-image-to-grayscale-using-javascript.html

说明如何在IE中使用过滤器。也许如果你从中利用某些东西。虽然不是很兼容浏览器。另一种选择可能是有两个图像,并把它们作为背景图像(不是的img标签),换了一个又一个使用:hover伪选择。

+0

您可以在[link](http://tinypic.com/r/15yfaf7/5)中看到它的图像 – 2012-01-28 17:40:07

+0

[link](http://tinypic.com/view.php?pic=2u9h5jd&s=5)我只需要着色圆圈的fb图标,你能帮我一下吗? – 2012-01-29 05:15:44

0

好吧,试试这个:

与透明圈获取图像 - http://i39.tinypic.com/15s97vd.png 把该图像中的HTML元素,通过CSS改变元素的背景颜色。通过这种方式,您可以使用样式表中定义的颜色获得带有圆圈的徽标。

的HTML

<div class="badassColorChangingLogo"> 
    <img src="http://i39.tinypic.com/15s97vd.png" /> 
    Or download the image and change the path to the downloaded image in your machine 
</div> 

CSS的

div.badassColorChangingLogo{ 
    background-color:white; 
} 
div.badassColorChangingLogo:hover{ 
    background-color:blue; 
} 

请记住,在非阿尔法能浏览器,如IE6及IE7这不会工作。因为你可以使用js修复。谷歌ddbelated PNG修复,你可以得到脚本。

+0

我了解你尽力帮助我。所以我会尽我所能让你明白的帮助。对不起,我不清楚你的所有照片。请检查[链接](http://tinypic.com/view.php?pic=2u9h5jd&s=5)。现在我需要将鼠标悬停在fb圈上,并且应该是蓝色的。你的解决方案使它成为白色的正方形,所以盒子不会出现,当我徘徊时,我在FB周围有一个蓝色方块。所以我只需要这个圈子是蓝色的。 – 2012-01-28 19:07:54

1

这有点晚,但我碰到了这篇文章。

这不是完美的,但这是我做的。

HTML代码

<div class="showcase-menu-social"><img class="margin-left-20" src="images/graphics/facebook-50x50.png" alt="facebook-50x50" width="50" height="50" /><img class="margin-left-20" src="images/graphics/twitter-50x50.png" alt="twitter-50x50" width="50" height="50" /><img class="margin-left-20" src="images/graphics/youtube-50x50.png" alt="youtube-50x50" width="50" height="50" /></div> 

CSS代码

.showcase-menu { 
    margin-left:20px; 
    margin-right:20px; 
    padding: 0px 20px 0px 20px; 
    background-color: #C37500; 
    behavior: url(/css/border-radius.htc); 
    border-radius: 20px; 
    } 

.showcase-menu-social img:hover { 
    background-color: #C37500; 
    opacity:0.7 !important; 
    filter:alpha(opacity=70) !important; /* For IE8 and earlier */ 
    box-shadow: 0 0 0px #000000 !important; 
} 

现在我20像素的边界半径与图像边界半径完全匹配起来。正如你所看到的.showcase-menu与.showcase-menu-social具有相同的背景。这样做是为了让“不透明”生效,并且没有“正方形”背景或边框显示,因此图像稍微减少了悬停时的饱和度。

这是一个很好的效果,确实给观众的反馈,图像是焦点。我相当确定在黑暗的背景下,它会有更好的效果。

好的是,这是有效的HTML-CSS代码,并将进行验证。说实话,它应该对非图像元素和图像一样好。

享受!

+0

如果你有一个叫'margin-left-20'的类,你可能会说'style =“margin-left:20px;”' – 2013-10-10 12:15:53

0

使用background-color属性代替CSS中的背景属性。 所以,你的代码看起来就像这样:
.fb-icon:hover {
background: blue;
}

1

另一种解决办法是使用新的CSS掩模图像功能,这一切除了IE(仍在IE11不支持)的作品。与其他解决方案中的一些解决方案相比,这将更具多功能性和可维护性。你也可以更普遍地使用SVG。 例如

item { mask: url('/mask-image.png'); } 

这里有使用掩模图像的例子:

http://codepen.io/zerostyle/pen/tHimv 

的例子很多这里:

http://codepen.io/yoksel/full/fsdbu/