如何使图像悬停在 css 中?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10202641/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to make image hover in css?
提问by greenthunder
I want to change the image from normal to brighter when it's on hover, My code:
我想在悬停时将图像从正常更改为更亮,我的代码:
<div class="nkhome">
<a href="Home.html"><img src="Images/btnhome.png" /></a>
</div>
.nkhome{
margin-left:260px;
top:170px;
position:absolute;
width:59px;
height:59px;
}
.nkhome a img:hover {
background:url(Images/btnhomeh.png);
position:absolute;
top:0px;
}
Why doesn't work the hover? When my mouse is on it, it shows the first image, not the hover image.
为什么悬停不起作用?当我的鼠标在它上面时,它显示第一张图像,而不是悬停图像。
回答by djlumley
You've got an a
tag containing an img
tag. That's your normal state.
You then add a background-image
as your hover state, and it's appearing in the background of your a
tag - behind the img
tag.
你有一个a
包含img
标签的标签。那是你的正常状态。然后添加 abackground-image
作为悬停状态,它出现在a
标签的背景中- 标签后面img
。
You should probably create a CSS sprite and use background positions, but this should get you started:
您可能应该创建一个 CSS 精灵并使用背景位置,但这应该会让您开始:
<div>
<a href="home.html"></a>
</div>
div a {
width: 59px;
height: 59px;
display: block;
background-image: url('images/btnhome.png');
}
div a:hover {
background-image: url('images/btnhomeh.png);
}
This A List Apart Article from 2004is still relevant, and will give you some background about sprites, and why it's a good idea to use them instead of two different images. It's a lot better written than anything I could explain to you.
这篇2004 年的 A List Apart 文章仍然具有相关性,它将为您提供一些关于精灵的背景知识,以及为什么使用它们而不是两个不同的图像是个好主意。写得比我能向你解释的任何东西都要好得多。
回答by John Green
You're setting the background of the image to another image. Which is fine, but the foreground (SRC attribute of the IMG) still overlays everything else.
您正在将图像的背景设置为另一个图像。这很好,但前景(IMG 的 SRC 属性)仍然覆盖其他一切。
.nkhome{
margin-left:260px;
top:170px;
position:absolute;
}
.nkhome a {
background:url(Images/btnhome.png);
display:block; /* Necessary, since A is not a block element */
width:59px;
height:59px;
}
.nkhome a:hover {
background:url(Images/btnhomeh.png);
}
<div class="nkhome">
<a href="Home.html"></a>
</div>
回答by scrypter
Simply this, no extra div or JavaScript needed, just pure CSS (jsfiddle demo):
很简单,不需要额外的 div 或 JavaScript,只需要纯 CSS(jsfiddle 演示):
HTML
HTML
<a href="javascript:alert('Hello!')" class="changesImgOnHover">
<img src="http://dummyimage.com/50x25/00f/ff0.png&text=Hello!" alt="Hello!">
</a>
CSS
CSS
.changesImgOnHover {
display: inline-block; /* or just block */
width: 50px;
background: url('http://dummyimage.com/50x25/0f0/f00.png&text=Hello!') no-repeat;
}
.changesImgOnHover:hover img {
visibility: hidden;
}
回答by Pal Singh
It will not work like this, put both images as background images:
它不会像这样工作,将两个图像都作为背景图像:
.bg-img {
background:url(images/yourImg.jpg) no-repeat 0 0;
}
.bg-img:hover {
background:url(images/yourImg-1.jpg) no-repeat 0 0;
}
回答by Rohit Azad
Hi you should give parent position relative and child absolute and give to height or width to absolute class as like this
嗨,你应该给父位置相对和子绝对位置,并像这样给绝对类的高度或宽度
Css
css
.nkhome{
margin-left:260px;
width:59px;
height:59px;
margin-top:170px;
position:relative;
z-index:0;
}
.nkhome a:hover img{
opacity:0.0;
}
.nkhome a:hover{
background:url('http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg');
width:100px;
height:100px;
position:absolute;
top:0;
z-index:1;
}
HTML
HTML
<div class="nkhome">
<a href="Home.html"><img src="http://dummyimage.com/100/000/fff.jpg" /></a>
</div>
?
Live demo http://jsfiddle.net/t5FEX/7/
现场演示http://jsfiddle.net/t5FEX/7/
or this
或这个
<div class="nkhome">
<a href="Home.html"><img src="http://dummyimage.com/100/000/fff.jpg" onmouseover="this.src='http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg'"
onmouseout="this.src='http://dummyimage.com/100/000/fff.jpg'"
/></a>
</div>?
Live demo http://jsfiddle.net/t5FEX/9/
回答by Ashish Kwatra
Exact solution to your problem
准确解决您的问题
You can change the image on hover by using content:url("YOUR-IMAGE-PATH");
您可以使用content:url("YOUR-IMAGE-PATH")更改悬停时的图像;
For image hover use below line in your css:
对于图像悬停,请在 css 中使用以下行:
img:hover
and to change the image on hover using the below config inside img:hover:
并使用 img:hover 中的以下配置更改悬停时的图像:
img:hover{
content:url("https://www.planwallpaper.com/static/images/9-credit-1.jpg");
}
回答by dzoni
Here are some easy to folow steps and a great on hover tutorial its the examples that you can "play" with and test live.
这里有一些易于遵循的步骤和一个很棒的悬停教程,它是您可以“玩”和实时测试的示例。
http://fivera.net/simple-cool-live-examples-image-hover-css-effect/
http://fivera.net/simple-cool-live-examples-image-hover-css-effect/
回答by Qunect.nl
Make on class with this. And make 2 different images with the self width and height. Works in ie9.
用这个上课。并用自己的宽度和高度制作2个不同的图像。在 ie9 中工作。
See this link.
请参阅此链接。
http://kyleschaeffer.com/development/pure-css-image-hover/
http://kyleschaeffer.com/development/pure-css-image-hover/
Also you can 2 differents images make and place in the self class name with in the hover the another images.
您也可以将 2 个不同的图像制作并放置在自类名称中,并在悬停中放置另一个图像。
See example.
参见示例。
.myButtonLink {
margin-top: -5px;
display: block;
width: 45px;
height: 39px;
background: url('images/home1.png') bottom;
text-indent: -99999px;
margin-left:-17px;
margin-right:-17px;
margin-bottom: -5px;
border-radius: 3px;
-webkit-border-radius: 3px;
}
.myButtonLink:hover {
margin-top: -5px;
display: block;
width: 45px;
height: 39px;
background: url('images/home2.png') bottom;
text-indent: -99999px;
margin-left:-17px;
margin-right:-17px;
margin-bottom: -20x;
border-radius: 3px;
-webkit-border-radius: 3px;
}