• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

[HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

Worrel

Spiele-Guru
Mitglied seit
22.03.2001
Beiträge
25.128
Reaktionspunkte
10.326
[HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

Gesehen hier:
http://muse.mu/ - rechte Spalte, dritter Block von oben.

Da wird von einem Bild in ein anderes übergeblendet - wie funktioniert das?


Ähnliche Frage:
http://www.newmodelarmy.org/

Das Band mit Bildern oben, wie wird das gescrolled?
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

ALso gibt natürlich immer mehrerer Möglichkeiten. Mit Flash oder Javascript. Mit Javascript kann ich dir in beiden Fällen weiterhelfen.

Moment ich kram mal eben etwas alten Code zusammen und dann poste ich den hier rein.
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

Also das erste (nicht mein eigenes Skript, aber ich weiß nicht mehr woher..irgendein altes Forum imo):

Hier machst du eine Javascriptdatei raus (als Beispiel mal crossfade.js):
var galleryId = 'gallery'; /* change this to the ID of the gallery list */
var gallery; /* this will be the object reference to the list later on */
var galleryImages; /* array that will hold all child elements of the list */
var currentImage; /* keeps track of which image should currently be showing */
var previousImage;
var preInitTimer;
preInit();

/* functions */

function preInit() {
/* an inspired kludge that - in most cases - manages to initially hide the image gallery list
before even onload is triggered (at which point it's normally too late, and the whole list already
appeared to the user before being remolded) */
if ((document.getElementById)&&(gallery=document.getElementById(galleryId))) {
gallery.style.visibility = "hidden";
if (typeof preInitTimer != 'undefined') clearTimeout(preInitTimer); /* thanks to Steve Clay http://mrclay.org/ for this small Opera fix */
} else {
preInitTimer = setTimeout("preInit()",2);
}
}

function fader(imageNumber,opacity) {
/* helper function to deal specifically with images and the cross-browser differences in opacity handling */
var obj=galleryImages[imageNumber];
if (obj.style) {
if (obj.style.MozOpacity!=null) {
/* Mozilla's pre-CSS3 proprietary rule */
obj.style.MozOpacity = (opacity/100) - .001;
} else if (obj.style.opacity!=null) {
/* CSS3 compatible */
obj.style.opacity = (opacity/100) - .001;
} else if (obj.style.filter!=null) {
/* IE's proprietary filter */
obj.style.filter = "alpha(opacity="+opacity+")";
}
}
}

function fadeInit() {
if (document.getElementById) {
preInit(); /* shouldn't be necessary, but IE can sometimes get ahead of itself and trigger fadeInit first */
galleryImages = new Array;
var node = gallery.firstChild;
/* instead of using childNodes (which also gets empty nodes and messes up the script later)
we do it the old-fashioned way and loop through the first child and its siblings */
while (node) {
if (node.nodeType==1) {
galleryImages.push(node);
}
node = node.nextSibling;
}
for(i=0;i<galleryImages.length;i++) {
/* loop through all these child nodes and set up their styles */
galleryImages.style.position='absolute';
galleryImages.style.top=0;
galleryImages.style.zIndex=0;
/* set their opacity to transparent */
fader(i,0);
}
/* make the list visible again */
gallery.style.visibility = 'visible';
/* initialise a few parameters to get the cycle going */
currentImage=0;
previousImage=galleryImages.length-1;
opacity=100;
fader(currentImage,100);
/* start the whole crossfade process after a second's pause */
window.setTimeout("crossfade(100)", 1000);
}
}

function crossfade(opacity) {
if (opacity < 100) {
/* current image not faded up fully yet...so increase its opacity */
fader(currentImage,opacity);
/* fader(previousImage,100-opacity); */
opacity += 10;
window.setTimeout("crossfade("+opacity+")", 30);
} else {
/* make the previous image - which is now covered by the current one fully - transparent */
fader(previousImage,0);
/* current image is now previous image, as we advance in the list of images */
previousImage=currentImage;
currentImage+=1;
if (currentImage>=galleryImages.length) {
/* start over from first image if we cycled through all images in the list */
currentImage=0;
}
/* make sure the current image is on top of the previous one */
galleryImages[previousImage].style.zIndex = 0;
galleryImages[currentImage].style.zIndex = 100;
/* and start the crossfade after a second's pause */
opacity=0;
window.setTimeout("crossfade("+opacity+")", 1000);
}

}

/* initialise fader by hiding image object first */
addEvent(window,'load',fadeInit)



/* 3rd party helper functions */

/* addEvent handler for IE and other browsers */
function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+, NS6 and Mozilla

{
if (elm.addEventListener){
elm.addEventListener(evType, fn, useCapture);
return true;
} else if (elm.attachEvent){
var r = elm.attachEvent("on"+evType, fn);
return r;
}
}

HIER FEHLT BTW EIN CODE-BLOCK-TAG (ODER?) der zerballert durch den Code das ganze POsting.

Naja:

In deiner HTLM-Datei (oder PHP) machst du dann FOlgendes:


<script type="text/javascript" src="crossfade.js"></script>
<style type="text/css"> body { padding: 25px; width: auto; height: auto;}#gallery { position: relative; width:500px; height:340px; margin:0; padding:0; }#gallery li { display: block; }</style> </head> <body> <ul id="gallery"> <li><img src="001.jpg" alt="" width="500" height="340" /></li> <li><img src="002.jpg" alt="" width="500" height="340" /></li> <li><img src="003.jpg" alt="" width="500" height="340" /></li></ul> </body> </html>

Man...ist fast unmöglich hier Code zu posten. :B

Dann schaltet er alle Dateien in der Liste der Reieh nach durch als "crossfade".
Die Methode ist aber schon sehr alt und ich weiß nicht, ob es mittlerweile bessere gibt. Das ist natürlich nur eine (simple) lösung dafür.

Das Andere kommt gleich.
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

So die scrollenden Bilder.
Das ist eine von mir modifizierte Version eines Skripts. Ich habe das mit einem Lightbox-Skript kombiniert, so dass man sogar ne schmucke Lightbx bekommt, wenn man eines der Fotos anklickt.
In Action kannst du das hier sehen: http://www.nageldesign-niederbayern.de/

Also:
Im Header bindest du das hier ein:
<script src="js/prototype.js" type="text/javascript"></script> <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script> <script src="js/lightbox.js" type="text/javascript"></script>

Die Skripte, auf die du da verweist, bekommst du überall im Netz. Schicke sie dir aber gerne auch zu. Nur das hier posten geht definitiv NICHT.^^
Die Skripte sind auch nur für die Lightbox.

Und an der Stelle, an der deine Laufleiste mit Bildern erscheinen soll, machst du foglendes Javascript rein (also mitten in eine Tabelle oder ein Div z.B.):

<script type="text/javascript">

var sliderwidth="760px"
var sliderheight="145px"
var slidespeed=1
slidebgcolor="#000000"

var leftrightslide=new Array()var finalslide=''leftrightslide[0]='<a href="images/pictures/001.jpg" rel="lightbox" title="Studioansicht 1"><img src="images/thumbnails/001.jpg" border=1></a>'leftrightslide[1]='<a href="images/pictures/002.jpg" rel="lightbox" title="Studioansicht 2"><img src="images/thumbnails/002.jpg" border=1></a>'leftrightslide[2]='<a href="images/pictures/003.jpg" rel="lightbox" title="Studioansicht 3"><img src="images/thumbnails/003.jpg" border=1></a>'
var imagegap=" "
var slideshowgap=5
var copyspeed=slidespeedleftrightslide='<nobr>'+leftrightslide.join(imagegap)+'</nobr>'var iedom=document.all||document.getElementByIdif (iedom)document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+leftrightslide+'</span>')var actualwidth=''var cross_slide, ns_slide
function fillup(){if (iedom){cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslideactualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidthcross_slide2.style.left=actualwidth+slideshowgap+"px"}else if (document.layers){ns_slide=document.ns_slidemenu.document.ns_slidemenu2ns_slide2=document.ns_slidemenu.document.ns_slidemenu3ns_slide.document.write(leftrightslide)ns_slide.document.close()actualwidth=ns_slide.document.widthns_slide2.left=actualwidth+slideshowgapns_slide2.document.write(leftrightslide)ns_slide2.document.close()}lefttime=setInterval("slideleft()",30)}window.onload=fillup
function slideleft(){if (iedom){if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px"elsecross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+slideshowgap+"px"
if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px"elsecross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+slideshowgap+"px"
}else if (document.layers){if (ns_slide.left>(actualwidth*(-1)+8))ns_slide.left-=copyspeedelsens_slide.left=ns_slide2.left+actualwidth+slideshowgap
if (ns_slide2.left>(actualwidth*(-1)+8))ns_slide2.left-=copyspeedelsens_slide2.left=ns_slide.left+actualwidth+slideshowgap}}

if (iedom||document.layers){with (document){document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')if (iedom){write('<div style="position:relative;width:'+sliderwidth+';height:'+sliderheight+';overflow:hidden">')write('<div style="position:absolute;width:'+sliderwidth+';height:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')write('<div id="test2" style="position:absolute;left:0px;top:0px"></div>')write('<div id="test3" style="position:absolute;left:-1000px;top:0px"></div>')write('</div></div>')}else if (document.layers){write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>')write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')write('</ilayer>')}document.write('</td></table>')}}</script>

Ist eigentlich selbsterklärend.
Hier machst du die Grundeinstellungen zur Slideshow.
Hier kommen die Bilder rein, die dann in der Lightbox gezeigt werden.
Hier kommen die Bilder rein, die in der Slideshow angezeigt werden (können auch die gleichen sein, wie in der Lightbox, nur muss eben der Pfad stimmen).
Hier kommt der Titel des jeweiligen Bilds rein. Der Tooltip.
Die Lücke zwischen den einzelnen Bildern.


Habe das jettz aber auch schon seit Ewigkeiten incht mehr angewendet, also es kann sein, dass ich jetzt was übersehen habe. Aber bei Fragen, einfach fragen.
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

TOLL!
Habe das alles extra schön farbig markiert und beschrieben und beim Absenden sind einfach alle Farben weg.
Was ein Mist. Hab hier bald keine Lust mehr zu posten. Reines Glücksspiel hier. :S

EDIT:
Ich mach mal nen ZIP mit den Beispieldateien und stelle die online. Dann kannst du dir in ca. 10 MInuten das zeug runterladen. Hier wird das ja nichts.^^
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

So hier ein Beispiel mit dem Crossfade:
http://rapidshare.com/files/307920627/crossfade.zip

Und Hier ein Beispiel mit der Laufleiste:
http://rapidshare.com/files/307920714/slidshow_lightbox.zip


Musst eigentlich nur noch etwas formatieren, die Bilder anpassen und eventuell 1-3 Werte anpassen.
Aber das Meiste davon brauchst du garnicht anschauen. Also z.B. in die JS-Dateien musst/solltest du nichts ändern, außer du weißt, was du tust.
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

Huch, ist das viel Text. ich hätte das irgendwie kürzer gedacht.

Danke auf jeden Fall für die Hilfe; ich probier das demnächst mal, ob das damit geht, was ich vohabe (bzw: plane erstmal, was ich denn genau damit vorhabe ;) )
 
AW: [HTML] Wechselnde Bilder mit Übergangseffekt - wie geht das?

Huch, ist das viel Text. ich hätte das irgendwie kürzer gedacht.
Ja, ist viel Text. Aber der kann dir ja egal sein. Musst du ja garnicht beachten. Das verwirrt ja nur.
Wichtig sind nur bestimmte Angaben und die Bilderpfade.
In den ZIP-Paketen liegt ja alles, was du brauchst, inkl.. leicht zu anpassbarem Beispiel. Du musst nicht jeder Zeile lesen und verstehen...macht doch keiner. =)
 
Zurück