Как анимировать "visibility: hidden"?
вот моя проблема... Вы можете мне помочь?
$(".button").hover(function(){
$('.class').css({opacity: 1.0, visibility: "hidden"}).animate({opacity: 0}, 1200);
},function(){
$('.class').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1}, 1200);
});
он оживляет только тогда, когда появляется. :-(
6 ответов
попробуйте так:
$(".button").hover(function(){
$('.class').css("opacity", "1.0").animate({opacity: 0}, 1200, function(){
$('.class').css("visibility", "hidden");
});
},function(){
$('.class').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1}, 1200);
});
однако это не лучший вариант для fadeIn
и fadeOut
. Вместо этого вы можете использовать методы с теми именами, которые предоставляет jQuery, или лучше использовать CSS-переходы, если сможете.
$(".button").hover(function(){
$('.class').css({opacity: 1.0, visibility: "visible"}).animate( //start off from opacity 1 and visibile
{opacity: 0}, //then animate opacity to 0
1200,
function(){ //this will be run after the animation is completed
$(this).css({
visiblity:"hidden" //so it will be hidden only after the animation has completed
});
}
);
},function(){
$('.class').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1}, 1200);
});
свойство visibility в CSS является логическим, включено или выключено.
чтобы любая анимация работала, будь то с ключевыми кадрами, переходами или jquery, начальная и конечная точки набора значений свойств должны разбиваться на набор шагов, с большим количеством шагов, приводящих к более плавной анимации.
для такого простого эффекта, как этот, a переход лучше пожалуйста, см. скрипку здесь. Используйте javascript только для добавление / удаление классов, запускающих переход
.hidden {
opacity: 0;
transition: opacity 0.5s ease-in;
}
.show-me {
opacity: 1;
}
вы устанавливаете свойство transition, определяющее свойство transition, затем длину, функцию ease для использования (которая описывает изменения скорости, с которой анимация имеет эффект). Вам также нужно определить начальную и конечную точки для вашего анимированного свойства, как вы можете видеть с двумя значениями непрозрачности.
для записи-ключевой кадр подходит, если ваш эффект был более сложным, например, желая его свойство полностью анимировать на полпути, а затем анимировать обратно, в то время как другой занимает все время или для колебаний; и jQuery animate предоставляет простой способ действовать на заключение анимации, которая также иногда необходима.
$(".button").hover(function(){
$('.class').fadeOut(1200);
},function(){
$('.class').fadeIn(1200);
});
Вы можете пройти в duration
, который должен достичь ваших целей
зачем использовать jQuery для этого? Гораздо эффективнее использовать CSS, например:
.fade {
width:100px;
height:100px;
background-color:darkgray;
opacity: 1;
transition: opacity .25s ease-in-out;
-moz-transition: opacity .25s ease-in-out;
-webkit-transition: opacity .25s ease-in-out;
}
.fade:hover {
opacity: 0;
}
<div class="fade"></div>
это потому, что он удаляется до того, как он оживит кулачок. Сначала вам нужно будет анимировать fade out, а затем применить visibility: hidden
после завершения анимации.
есть несколько способов сделать это: браузер вызывает событие animationend
(это prexied для различных браузеров-см. здесь для получения дополнительной информации), или вы можете использовать анимации лучше библиотека, чем в jQuery анимировать (как зеленый носок TweenLite -- http://greensock.com/tweenlite), чтобы справиться с анимации, которая делает тривиальным выполнение кода в конце анимации.