Способ исчезнуть в фоновом режиме при загрузке?

Я работаю над дизайном веб-сайта, и мне нужен способ затухать в фоновом изображении тега тела, когда он полностью загружен (возможно, тогда пауза в 500 мс).

Если вы видите August дизайн веб-сайта, вы увидите, что фон затухает; однако это делается с использованием флэш-фона. Есть ли способ сделать это с помощью jQuery или JavaScript?


Обновление 9/19/2010:

Итак, для тех, кто поступает из Google (в настоящее время это результат номер один для "затухания в фоновом режиме при загрузке", я просто подумал, что я сделаю более ясный пример реализации для всех.

Добавьте <div id="backgroundfade"></div> в свой код где-нибудь в нижнем колонтитуле (вы также можете добавить это через JavaScript, если вы не хотите, чтобы ваш DOM был загроможден.

Стиль как таковой -

#backgroundfade {
  position: fixed;
  background: #FFF /* whatever color your background is */
  width: 100%;
  height: 100%;
  z-index: -2;
}

Затем добавьте это в свой скриптовый файл JavaScript (требуется jQuery):

$(document).ready(function() {
    $('#backgroundfade').fadeOut(1000);
});

Это приводит к исчезновению элемента #backgroundfade (поле "покрытие" вашего фактического фона) через 1 секунду после завершения DOM.

Ответ 1

Я не сделал этого сам, но он может работать.

Возможно, вы можете настроить фоновое изображение, а затем замаскировать его большим старым div с черным фоном. Затем играйте с непрозрачностью этого div, чтобы создать эффект затухания. Этот черный div должен был покрыть все тело.

Ответ 2

Да:

Не придайте телу фоновое изображение. Затем подготовьте анимированный GIF с эффектом затухания. В Javascript:

document.onload = function () {
  window.setTimeout (function () {
    document.getElementsByTagName ("body")[0].style.backgroundImage = "url(/path/to/image.gif)";
  }, 500);
};

В jQuery это будет

$(function () {
  $('body').css ('backgroundImage', 'url(/path/...)');
});

Если вы не хотите делать анимированный трюк GIF, но нуждаетесь в поддержке JPEG или PNG, он становится неприятным. Вам нужно будет создать заполнитель <div/>, поместить его в нужное место и сыграть с непрозрачностью. Вы также должны обнаружить, когда загружено фоновое изображение, чтобы вы не получали глупых прыжков на медленных соединениях. Нерабочий пример:

var x = new Image();
x.onload = function () {
  /*
    create div here and set it background image to
    the same value as 'src' in the next line.
    Then, set div.style.opacity = 0; (best, when the
    div is created) and let it fade in (with jQuery
    or window.setInterval).
  */ };
x.src = "/path/to/img.jpg";

Приветствия,

Ответ 3

Я не уверен, есть ли способ затухать фоновое изображение, но один из способов сделать это - использовать абсолютно позиционированное изображение с отрицательным z-индексом. Затем вы можете использовать jquery для затухания изображения. Этот подход может оказаться более сложным, если вам понадобится фоновое изображение для фрагментации или повторения.

HTML:

<body style="z-index: -2">
<img src="backgroundImage.jpg" id="backgroundImage" style="position: absolute; top: 0px; left: 0px; z-index: -1; display: none;">
<!-- The rest of your HTML here -->
</body>

jQuery:

$(window).load(function() {

    $("#backgroundImage").fadeIn("slow");
});

Ответ 4

Я вижу эту ссылку,

http://fragged.org/dev/changing-and-fading-body-background-image.php

Идея такова:

примените свой фон к div, которому присвоен низкий индекс z, абсолютное позиционирование и фон (подумайте об этом как обратном/обратном модальном). затем создайте свой контент на другой слой поверх него с прозрачным фоном....

теперь вы можете ссылаться на нижний уровень по id и изменять непрозрачность.

все, что ему нужно, это стек/массив фоновых магов для применения в качестве свойства слоя...

Ответ 5

Почему бы не использовать готовый script: этот делает фоновое изображение затухающим при загрузке страницы.

Он также подходит для изображения к размерам окна, но это может быть отключено, если не нужно.

Ответ 6

Мое решение:

HTML:

<img id='myImg' />

CSS

#myImg{
    opacity: 0;              
    -moz-opacity: 0;         
    -khtml-opacity: 0;       
    filter: alpha(opacity=0); 
}

JS:

var img = document.getElementById('myImg'),
    steps = 30,
    appearTime = 1000;

img.src = "/path/to/img.gif";

img.onload = function(){
    for(i=0; i<=1; i+=(1/steps)){
        setTimeout((function(x){
            return function(){
                img.style.opacity = x;
                img.style.MozOpacity = x;
                img.style.KhtmlOpacity = x;
                img.style.filter = "alpha(opacity=" + (x*100) + ")";                    
            };
        })(i), i*appearTime);

    };
};