Можно ли сделать то же самое (эффект наведения) без Javascript (только CSS)? - PullRequest
4 голосов
/ 04 сентября 2010

Я пытаюсь создать кнопку со значком , например, :

HTML:

<div id='button'>
    <div class='icon'></div>
    <span>Send Email</span>
</div>

CSS:

#button {
    width: 270px;
    height: 50px;
    font-size: 1.4em;
    color: #333;
    background-color: #555;
    position: relative;
}
#button > .icon {
    width: 61px;
    height: 39px;
    background-image: url('http://i55.tinypic.com/2agsutj.png');
    background-repeat: no-repeat;
    background-position: 0px 0px;
    position: absolute;
    left: 40px;
    top: 5px;
}
#button > span {
    position: absolute;
    left: 130px;
    top: 10px;
}
#button:hover {
    color: #fff;
    cursor: pointer;
}

JS:

$(function() {
    $('#button').hover(function() {
        $('#button > .icon').css('background-position', '0px -39px');
    }, function() {
        $('#button > .icon').css('background-position', '0px 0px');
    });
});

Мой вопрос: действительно ли необходим Javascript для такой простой функциональности или это можно сделать только с помощью CSS?

Ответы [ 3 ]

7 голосов
/ 04 сентября 2010

Для этого есть :hover псевдокласс.

#button:hover > .icon {
    background-position: 0px -39px;
}

http://www.w3.org/TR/CSS2/selector.html#dynamic-pseudo-classes
http://www.w3schools.com/css/pr_pseudo_hover.asp

1 голос
/ 04 сентября 2010

Я сделал jsfiddle с тегом "a", поэтому hover работает и в IE.

<div id="button">
<a href="#text" name="text">Send Email</a>
</div>

CSS

#button {
    width: 270px;
    height: 45px;
    font-size: 1.4em;
    background-color: #555;
    position: relative;

    padding-left: 45px;
    padding-top: 15px;    
}

#button a {
    text-decoration:none;
    color:#333;
    padding:5px;
    padding-left: 65px;
    background-image: url('http://i55.tinypic.com/2agsutj.png');
    background-repeat: no-repeat;
    background-position: 0px 0px;    
}

#button a:hover {
   background-position:0px -39px;
   color: #fff;
}
1 голос
/ 04 сентября 2010

Я 100%

Рабочая демонстрационная ссылка

в приведенном выше примере вам нужно использовать hover и shift

фоновая позиция

uisng css. Вы можете сделать это без JavaScript, конечно.

здесь рабочее решение не требует JavaScript

HTML

<div id='button'>
    <span class='icon'>Send Email</span>
</div>

CSS

​#button span{
    display:block;
    padding-left:80px;
    font-size: 1.4em;
    color: #333;
    background-color: #555;
    line-height:1.4em;
}
#button span.icon{
    background-image: url('http://i55.tinypic.com/2agsutj.png');
    background-repeat: no-repeat;
    background-position: 0px 0px;
    width:120px;
    height:39px;
}
#button:hover span{
color:#fff;
}n
#button:hover span.icon{
    background-image: url('http://i55.tinypic.com/2agsutj.png');
    background-repeat: no-repeat;
    background-position: 0px -39px;

}

1035 *

...