Вы можете создать эффект затухания для тела, как Google, с помощью следующего кода. Пожалуйста, примите во внимание, что эта функция будет аналогична Google. Вы можете применить эту технику к любому элементу с соответствующим обработчиком событий.
var fps = 24;
var mpf = 1000 / fps;
function fadeIn(ele, mils) {
// ele: id of document to change.
// mils: number of mils for the tansition.
var whole = 0;
var milsCount = 0;
var subRatio = 1 / (mils / mpf);
while (milsCount <= mils) {
setTimeout('setOpacity("' + ele + '", ' + whole + ')', milsCount);
whole += subRatio;
milsCount += mpf;
}
// removes the event handler.
document.getElementById(ele).onmouseover = "";
}
function setOpacity(ele, value) {
ele = document.getElementById(ele);
// Set both accepted values. They will ignore the one they do not need.
ele.style.opacity = value;
ele.style.filter = "alpha(opacity=" + (value * 100) + ")";
}
Вы захотите добавить обработчик событий в тело документа, как обычно. Обязательно измените функцию fadeIn для извлечения информации из target / srcElement, если вы решите использовать метод вложения, который не принимает аргументы. Или вы можете жестко закодировать нужные значения и объекты в функцию:
Встроенный:
<body id="theBody" onmouseover="fadeIn('theBody', 1500)">
Уровень DOM 0:
document.getElementByTagName("body")[0].onmouseover = function(){ code here };
document.getElementByTagName("body")[0].onmouseover = fadeIn;
Уровень DOM 2:
document.getElementByTagName("body")[0].addEventListener("mouseover", fadeIn);
document.getElementByTagName("body")[0].attachEvent('onclick', fadeIn);
Вы также захотите настроить правило css для элемента body, чтобы убедиться, что он не виден при загрузке страницы:
body {
opacity: 0;
filter:alpha(opacity=0);
}
Я проверил этот код на корректную работу в IE8, Chrome, Safari, FireFox и Opera. Удачи.