Плавные переходы jquery

0

У меня есть этот javascript, который привносит новый контент и заменяет старый, но переход, в котором он делает это, уродлив, он чувствует себя как обычная ссылка.

$(document).ready(function() {
// initial
$('#content').load('content/index.html');

// handle menu clicks
$('div#nav ul li a').click(function() {
var page = $(this).attr('href');
$('#content').load('content/' + page + '.html');

return false;
});
});

Как добавить переход, чтобы сделать мой сайт более жидким?

Я пробовал.fadeIn, но это, похоже, не работает

  • 1
    Вы смотрели на CSS переходы? w3schools.com/css/css3_transitions.asp
  • 0
    проверьте документацию для jQuery's fadeOut. Вы можете потушить #content и затем загрузить в него что-нибудь, как только fadeOut будет сделан внутри функции обратного вызова
Показать ещё 2 комментария
Теги:

2 ответа

2

попробуй это

$('#content').fadeOut('fast',function(){
        var $this = $(this);
        $this.load('content/' + page + '.html',function(){
             $this.fadeIn('fast');
        });
});
  • 1
    Так как я думаю, что .load выполняется асинхронно, вы можете поместить fadeIn в функцию обратного вызова для .load, чтобы она возвращалась только после завершения загрузки контента.
  • 0
    следует использовать обратный вызов для загрузки как .fadeIn после загрузки не гарантирует, что вызов ajax завершен
Показать ещё 2 комментария
1

Для этого я использовал бы все обратные вызовы методов.fadeOut() и .load().

Примечание. Использование полной функции на.fadeOut() не требуется, но это гарантирует, что вы не начнете загружать контент, пока элемент не будет полностью удален с сайта. Это будет продолжаться от странного мерцания, когда вызов AJAX вернется очень быстро

var $content; 
$(document).ready(function() {
  $content = $('#content');
  // initial
  $content.fadeOut("slow", function() {
    $content.load('content/index.html', function() {
      $content.fadeIn("slow");
    });
  })


  // handle menu clicks
  $('div#nav ul li a').click(function() {
    var page = $(this).attr('href');
    $content.fadeOut("slow", function() {
      $content.load('content/' + page + '.html', function() {
        $content.fadeIn("slow");
      });
    })

    return false;
  });
});

Теперь немного больше, чтобы упростить работу с вашим кодом.

var changeContent = function(page) {
  var $content = $(content);
  $content.fadeOut("slow", function() {
    $content.load('content/' + page + '.html', function() {
      $content.fadeIn("slow");
    });
};

$(document).ready(function() {
  changeContent("index");

  // handle menu clicks
  $('div#nav ul li a').click(function() {
    changeContent($(this).attr('href'));        
    return false;
  });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню