Как сделать наведение изображений в css?

Я хочу изменить изображение от нормального до более яркого, когда оно наводится, 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;
}

Почему не работает зависание? Когда моя мышь находится на нем, она показывает первое изображение, а не изображение наведения.

Ответ 1

У вас есть тег a, содержащий тег img. Это ваше нормальное состояние. Затем вы добавляете background-image в качестве состояния зависания, и оно появляется на фоне тэга a - за тегом img.

Вероятно, вы должны создать 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);
}

Этот A List Apart Article с 2004 г. по-прежнему имеет значение и даст вам некоторое представление о спрайтах и ​​почему это хорошая идея использовать вместо двух разных изображений. Это намного лучше написано, чем все, что я мог вам объяснить.

Ответ 2

Вы устанавливаете фон изображения на другое изображение. Что хорошо, но передний план (атрибут SRC для IMG) все еще накладывает все остальное.

.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>

Ответ 3

Просто это лишний div или JavaScript, просто чистый CSS (jsfiddle demo):

HTML

<a href="javascript:alert('Hello!')" class="changesImgOnHover">
    <img src="http://dummyimage.com/50x25/00f/ff0.png&text=Hello!" alt="Hello!">
</a>

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;
}

Ответ 4

Это не сработает, поместите оба изображения в качестве фоновых изображений:

.bg-img {
    background:url(images/yourImg.jpg) no-repeat 0 0;
}

.bg-img:hover {
    background:url(images/yourImg-1.jpg) no-repeat 0 0;
}

Ответ 5

Привет, вы должны указывать относительное положение родителя и абсолютное значение child и присваивать высоту или ширину абсолютному классу, как это показано

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

 <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/


или

<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/

Ответ 7

Точное решение вашей проблемы

Вы можете изменить изображение при наведении с помощью content: url ( "YOUR-IMAGE-PATH" );

Для наведения изображения используйте строку ниже в вашем css:

img:hover

и изменить изображение при наведении с помощью следующей конфигурации внутри img: hover:

img:hover{
content:url("https://www.planwallpaper.com/static/images/9-credit-1.jpg");
}

Ответ 8

Сделайте класс с этим. И сделайте 2 разных изображения с собственной шириной и высотой. Работает в ie9.

См. эту ссылку.

http://kyleschaeffer.com/development/pure-css-image-hover/

Также вы можете сделать 2 разных изображения и поместить их в имя класса self с помощью наведения на другие изображения.

См. пример.

 .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;
}