KOMPOOS.NL
image effect - javascript
sitemap
voorbeeld image (special) effect
uitleg image effect
Zowel de html-regel als het javascript moeten in de body-sectie van de pagina geplaats worden. Het javascript zo laag als mogelijk op de pagina. In het script kan je de variabelen naar eigen inzicht wijzigen. Experimenteer met de variabelen: de_snelheid en scale. Ook de timers kan je in het script aanpassen.
html regel voor het special effect
<a href="/javascripts/image-effects/image-effect.html"><address></address></a>
javascript voor het image effect
<script>
var effect_plaatje_is = "http://static.dns5.nl/special-effect.png";
var config;
var de_snelheid = 50;
var img,
special_effect,
een_image_effect,
special_effect;
function position() {
for (var i = 0, length = arguments.length; i < length;++i) {
arguments[i].top = arguments[i].left = "0px";
arguments[i].position = "absolute";
}
}
function effect_lader(config) {
var div = config.target.getElementsByTagName("div"),
een_image_effect = div[0],
img = config.document.createElement("img"),
$image__effect = een_image_effect.style,
$div = div.style,
special_effect = img.style,
width = parseInt($image__effect.width, 10),
height = parseInt($image__effect.height, 10),
scale = 2000,
left,
top,
$;
div = div[1];
position(special_effect);
special_effect.zIndex = 2;
$div.backgroundPosition = config.direction || "left";
scale /= 100;
img.onload = function() {
img.setAttribute("width", width);
img.setAttribute("height", width = round(scale * height));
special_effect.top = (top = -width + height) + "px";
left = 0;
scale = de_snelheid / scale;
config.interval = setTimeout(config.roephem = function() {
if (top + left < height) {
top += de_snelheid;
special_effect.top = round(top + left) + "px";
if ( - height < ($ = round(left -= scale))) {
$div.height = (height + $) + "px";
}
config.interval = setTimeout(config.roephem, 15);
} else {
onload();
}
}, 15);
};
een_image_effect.insertBefore(img, div);
img.src = config.src;
}
(function(round, window) {
function onload(config) { (function onload() {
een_image_effect.removeChild(img);
img = special_effect = null;
config.interval = 0;
config.roephem = config.pause = config.play = null;
if (config.callback) {
config.callback(config);
}
})
var een_image_effect = config.target.appendChild(config.document.createElement("div")),
div = een_image_effect.cloneNode(true),
width = this.width,
height = this.height,
img = this,
$image__effect = een_image_effect.style,
$div = div.style,
special_effect = img.style,
scale = 2000,
left,
top,
$;
position($div, special_effect);
$image__effect.position = "relative";
$image__effect.width = width + "px";
$image__effect.height = height + "px";
$image__effect.overflow = "hidden";
special_effect.zIndex = 2;
$div.zIndex = 3;
scale /= 100;
$div.height = 0 + "px";
$div.width = width + "px";
special_effect.top = (top = height) + "px";
img.setAttribute("width", width);
img.setAttribute("height", round(scale * height));
left = 0;
scale = de_snelheid / scale;
config.interval = setTimeout(config.roephem = function() {
if (left < height) {
top -= de_snelheid;
special_effect.top = round(top + left) + "px";
if (top < 0) {
$div.height = round(left += scale) + "px";
}
config.interval = setTimeout(config.roephem, 1);
} else {
onload();
}
}, 15);
$div.background = (config.background || "transparent") + " url(" + config.src + ") no-repeat " + (config.direction || "left");
een_image_effect.appendChild(img);
een_image_effect.appendChild(div);
}
function special_effect(config) {
if (config.achterstevoren) {
effect_lader(config);
} else {
var img = (config.document || (config.document = document)).createElement("img");
img.onload = function() {
img.removeAttribute("onload");
if (config.onload) {
config.onload(img);
}
onload.call(img, config);
};
img.src = config.src;
config.pause = function() {
clearTimeout(config.interval);
};
config.play = function() {
config.interval = setTimeout(config.roephem, 15);
};
}
return config;
}
window.special_effect = special_effect;
})(Math.round, window);
start_image_effect = function() {
var hetadres = document.getElementsByTagName("address"),
bottom = hetadres[0];
special_effect({
src: effect_plaatje_is,
target: bottom,
direction: "bottom",
callback: function(config) {}
});
};
window.onload = start_image_effect;
</script>
Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.