Подтвердить что ты не робот

Вызов css3 перехода из jquery

Переходы CSS3 великолепны! До сих пор я запускаю их с помощью: hover или: активных объявлений в таблице стилей. Я хочу посмотреть, есть ли способ запустить их из jquery.

Например:

#MyDiv{
border:1px solid red;
background:blue;
transition: all 0.3s linear;
}

MyDiv:hover{
border:1px solid black;
background:yellow;
}

Переход на hover будет срабатывать, когда мышь перемещается над MyDiv, но то, что я хочу сделать, это что-то вроде:

$('#MyDiv').transition(hover); //that would be ideal

Другими словами, я хотел бы запустить анимацию css, чтобы, если я наведю курсор на другой div, анимация #MyDiv будет запускаться с $('#SomeOtherDiv').mouseenter(function () { $('#MyDiv').transition(hover); });

Функция анимации jquery не поддерживает цветовые переходы, и, хотя я знаю, что вы можете добавлять плагины jqueryUI, чтобы заставить ее работать, мне было интересно, есть ли способ заставить ее работать без нее, используя jquery для вызова перехода css.

4b9b3361

Ответ 1

#MyDiv {
    border:1px solid red;
    background:blue;
    transition: all 2.0s linear;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
}

.hover{
    border:1px solid black;
    background:yellow;
    transition: all 2.0s linear;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
}

$("#MyOtherDiv")
.mouseenter(function(){
    $("#MyDiv").addClass("hover");
})
.mouseleave(function(){
    $("#MyDiv").removeClass("hover");
});

Ответ 2

Для повышения производительности мобильных устройств я бы использовал webkit-transform, а не webkit-переход, так как вы собираетесь получать преимущества аппаратного ускорения с мобильного устройства, что приводит к более плавному, при выполнении этих переходов с использованием CSS3.

На самом деле, я бы пошел и получил плагин jQuery Transit, что упрощает использование jQuery для вызова данного перехода. Он в основном заботится о переходах CSS3 для вас и обеспечивает совместимость между браузерами.

JS Fiddle Demo

JavaScript:

$("#startTransition").on("click", function()
{
    $("#MyDiv").transition({ background: 'yellow', color: 'black'});
});

Ответ 3

Для этой цели вам не нужен jQuery. http://jsfiddle.net/v7AA7/ - пример

#MyDiv{
    border:1px solid red;
    background:blue;
    transition: all 0.3s linear;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
}

#MyDiv:hover{
    border:1px solid black;
    background:yellow;
    transition: all 0.3s linear;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
}

Ответ 4

#MyDiv {
    border:1px solid red;
    background:blue;
    transition: all 2.0s linear;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
}

#MyDiv.hover{
    border:1px solid black;
    background:yellow;
    transition: all 2.0s linear;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
}

$("#MyOtherDiv")
.mouseenter(function(){
    $("#MyDiv").addClass("hover");
})
.mouseleave(function(){
    $("#MyDiv").removeClass("hover");
});

Исправлен ответ Скотта. Он не работал, потому что стили #MyDiv переопределяли стили .hover, потому что они более специфичны. Я изменил стиль .hover, чтобы включить id, который затем позволяет переопределить стиль #MyDiv.