Переход страницы с предварительным загрузчиком

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

Я искал повсюду и, похоже, не могу найти хорошее руководство о том, как переходить страницы при нажатии на ссылку на моем сайте. Я хотел бы, чтобы при нажатии на ссылку страница исчезала и отображалась предварительно загруженная. Как только предварительная загрузка будет завершена, новая страница исчезнет. Вот пример того, о чем я говорю http://www.admirhadzic.com

Любая помощь была бы отличной.

Предварительный загрузчик

  <div id="preloader">
     <div id="status">amp;nbsp;</div>
 </div>
  

Скрипт

     $(window).load(function() { // makes sure the whole site is loaded
        $("#status").fadeOut(); // will first fade out the loading animation
        $("#preloader").delay(350).fadeOut("slow"); // will fade out the white DIV that covers the website.
    })
  

css

  #preloader {
        position:absolute;
        top:0;
        left:0;
        right:0;
        bottom:0;
        background-color:#fff; /* change if the mask should have another color then white */
        z-index:99; /* makes sure it stays on top */
 }

 #status {
        width:200px;
        height:200px;
        position:absolute;
        left:50%; /* centers the loading animation horizontally one the screen */
         top:50%; /* centers the loading animation vertically one the screen */
         background-image:url(../img/status.gif); /* path to your loading animation */
         background-repeat:no-repeat;
         background-position:center;
         margin:-100px 0 0 -100px; /* is width and height divided by two */
 }
  

Комментарии:

1. Вы пробовали использовать предварительный загрузчик раньше?

2. Да, я уже пробовал один раньше @AdrianEnriquez, я могу заставить его работать должным образом, но я не знаю, как переходить со страницы на страницу без отображения белой вспышки

3. что вы уже сделали?

4. Я только что добавил то, что у меня есть на данный момент, к своему вопросу выше @AdrianEnriquez

Ответ №1:

Сайт, упомянутый в вашем примере, http://www.admirhadzic.com /, похоже, использует AngularJS или аналогичный фреймворк. А именно, сайт содержится на одной странице, поэтому вы никогда не получите «белую вспышку» (упомянутую в комментариях) при переходе на другую страницу.

Без изменения структуры вашего приложения вы можете использовать ajax-запрос для асинхронного захвата нового содержимого страницы. В случае успеха метод ajax может заменить содержимое вашей страницы и выполнять именно то, что вы сейчас делаете в своей $(window).onload() функции.

Например:

 function LinkClick(){

  // load the waiting image and back-drop
  $("#preloader").fadeIn();
  $("#status").fadeIn();

  // kick off the ajax request for the new content
  $("#div-to-be-replaced").load("ajax/page-you-want-to-show.html", function(){
    $("#status").fadeOut();
    $("#preloader").fadeOut;
  });
}
  

Вы могли бы сделать то же самое с помощью jQuery.ajax () и, вероятно, ряда других функций. Смотрите http://api.jquery.com/load / и http://api.jquery.com/jquery.ajax /.

Комментарии:

1. как бы я это сделал с кодом, который у меня уже есть? @Kjata30

2. Сложно уточнить, фактически не видя ваш код, но пример, который я опубликовал, должен помочь вам двигаться в правильном направлении.

3. Извините, у меня не так много, чтобы показать вам. Я искал решение для того, что я ищу. Я посмотрю на ваш код. Спасибо @Kjata30

4. что бы вы порекомендовали для загрузки всех страниц, а не только одной HTML-страницы @Kjata30

5. Я не уверен, что вы подразумеваете под «загрузить все страницы». Весь смысл использования или разработки фреймворка, подобного Angular, заключается в загрузке всего необходимого вам контента на одной странице. Вы можете использовать это для загрузки нескольких «страниц» без отправки дополнительного http-запроса с помощью jQuery. загрузка или какой-либо другой асинхронный метод JavaScript.