JQuery FadeOut без отображения нет? - PullRequest
71 голосов
/ 28 декабря 2010

Есть ли альтернатива fadeOut (), которая не использует display: нет для стиля? Я бы хотел использовать скрытую видимость, чтобы избежать каких-либо сдвигов в макете страницы?

Ответы [ 6 ]

112 голосов
/ 28 декабря 2010

Вы можете использовать .animate() на opacity напрямую:

$(".selector").animate({ opacity: 0 })

Таким образом, элемент по-прежнему занимает пространство, как вы хотите, он просто имеет непрозрачность 0, поэтому он эффективно такой же, как и visibility: hidden, когда он заканчивается.

66 голосов
/ 29 декабря 2010

Да, есть альтернатива. Это называется .fadeTo(), где вы устанавливаете целевую непрозрачность, которая в вашем случае будет 0.

$('element').fadeTo( 1000, 0 ); // fade to "0" with a 1000ms duration

Это не изменит свойства display в конце.

2 голосов
/ 22 марта 2016

Если вы хотите fadeOut , затем измените содержимое, а затем fadeIn снова:

$("#layer").animate({opacity: 0}, 1000, 'linear', function(){

    //Do here any changes to the content (text, colors, etc.)
    $("#layer").css('background-color','red'); //For example

    $("#layer").animate({opacity: 1}); //FadeIn again

});
2 голосов
/ 13 июня 2014

Один из способов сделать это - захватить режим отображения, затем .fadeOut и, в конце концов, выполнить предпочитаемый метод скрытия и установить отображение обратно на прежнее значение:

var $element = $('#selector');

var display = $element.css('display');
$element.fadeOut(500, function() {
   $element.css('visibility', 'hidden'); 
   $element.css('display', display);
}
2 голосов
/ 28 декабря 2010

Пользовательская анимация является альтернативой http://api.jquery.com/animate/

.animate({opacity: 0.0}, 5000, 'linear', callback);
0 голосов
/ 11 февраля 2015

Обратите внимание, что

fadeTo(500, 0)   // fade out over half a second
fadeTo(0, 0)     // instantly hide

(как ни странно) несовместимо с

fadeIn()

(когда вы хотите показать его снова).Так что, если вы используете

fadeTo(500, 0)

, чтобы скрыть что-то без css display: none, тогда вы должны использовать

fadeTo(500, 1)

чтобы вернуть его обратно, иначе в css останется opacity: 0, и он останется невидимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...