Problem mit dem Anordnen von Inhalten (float, display, clear)

Hallo,

das mit den Bildern in der Reihe soll noch geändert werden: und zwar sollen jene sich "bewegen" oder sich eben abwechseln. Mit php habe ich da schon eine Lösung, die eben bei jedem laden der Seite ein anderes Bild anzeigt. Dies müsste ich nur umändern, damit zB aus dem "Pool" der Bilder immer 3 oder so angezeigt werden.

Hatte da vor einiger Zeit auch mal ein Beispiel gesehen, bei dem auch Bilder in einer Reihe waren, rechts bzw. Links ein Pfeil mit dem man dann durch die Bilder "wandern" konnte und so eben auch die weiteren Bilder angezeigt wurden. Dies suche ich gerade wieder.

Das zweite ist aber auch noch, dass mir der Übergang zwischen den einzelnen Bildern nicht so wirklich gefällt. Schön wäre es, wenn jene z.B. keinen Platz neben einander hätten und dafür zum Beispiel an den Außenseiten (rechts und links) ein "Milchiges Bild" wäre. Etwas ähnliches ist in diesem Tutorial zu lesen und es scheint, dass diese Idee nicht so einfach umzusetzten ist.

Eigentlich wollte ich das Layout sogar so gestalten, dass ich dem body ein Hintergrundbild gebe und das zwischen dem Hintergrundbild und dem Text eben auch so ein "Milchiges" Bild ist, damit man den Text dann besser lesen kann. Doch diese Idee hatte ich für's erste erstmal verworfen.

Dem DIV in dem die vielen Bilder sind, habe ich overflow:hidden eingestellt. Somit sollte es laut dieser Erklärung egal sein, wenn zu viel "Inhalt" da ist. Denn in dem Beispiel der Erklärung (3. Beispiel) klappt es ja auch.

Aber nun muss ich erstmal zur Physiotherapie und werde erst heute Mittag weiter machen können.
Danke Dir!

Liebe Grüße
Muckel
 
(...)
Vielleicht reden wir ja hier sogar von demselben Script-Konzept? ;)
(...)

Ja, das tun wir - genau sowas habe ich gesucht. Karussell...manchmal sollte man viel Bodenständiger denken :)

Denke das es dieses Beispiel am ehesten trifft. Muss dann "nur" noch schauen, wie man das mit den Übergängen löst. Eine Liste wäre natürlich denkbar, wie ich sie ja schon bei/für das Menü nutze, doch ob sich das mit dem Ajax Script vereinen lässt mal schauen... Aber kommt Zeit kommt Rat.

LG
Muckel
 
Was meinst du wohl, was hier in deinem genannten Beispiel folgt?
http://sorgalla.com/projects/jcarousel/examples/dynamic_ajax.html hat gesagt.:
Code:
<div id="mycarousel" class="jcarousel-skin-ie7">
    <ul>
      <!-- The content will be dynamically loaded in here -->
    </ul>
  </div>

Gilt auch für die übrigen Beispiel-Variationen.

mfg Maik
 
Guten Abend zusammen,

habe mir nun das Beispiel angeschaut und es funktioniert soweit auch. Im head musste dazu folgendes eingefügt werden:
Code:
	<!-- jQuery library -->
    <script type="text/javascript" src="lib/jquery-1.2.3.pack.js"></script>
    <!-- jCarousel library -->
    <script type="text/javascript" src="lib/jquery.jcarousel.pack.js"></script>
	<!-- jCarousel Austausch im Content -->
	<script type="text/javascript">
    
    function mycarousel_itemLoadCallback(carousel, state)
    {
        // Since we get all URLs in one file, we simply add all items
        // at once and set the size accordingly.
        if (state != 'init')
            return;
    
        jQuery.get('dynamic_ajax.txt', function(data) {
            mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, data);
        });
    };
    
    function mycarousel_itemAddCallback(carousel, first, last, data)
    {
        // Simply add all items at once and set the size accordingly.
        var items = data.split('|');
    
        for (i = 0; i < items.length; i++) {
            carousel.add(i+1, mycarousel_getItemHTML(items[i]));
        }
    
        carousel.size(items.length);
    };
    
    /**
     * Item html creation helper.
     */
    function mycarousel_getItemHTML(url)
    {
        return '<img src="' + url + '" width="75" height="90%" alt="" />';
    };
    
    jQuery(document).ready(function() {
        jQuery('#mycarousel').jcarousel({
            itemLoadCallback: mycarousel_itemLoadCallback
        });
    });
    
    </script>
Und dort wo die Bilder eingefügt werden sollen, habe ich eben die Liste eingefügt:
Code:
<ul id="mycarousel" class="jcarousel-skin-ie7">
			<!-- The content will be dynamically loaded in here -->
	</ul>

Lieder bekomme ich am Anfang aber folgende Fehlermeldung:
jCarousel: Not width/height set for items. This will cause an infinite loop. Aborting...
Und weiß leider nicht, worauf sich das bezieht. Denn für die Bild(er) sind ja die Werte angegeben, wie man oben sehen kann.

Um die Liste der Bilder auszugeben bezieht sich das Script ja auf eine Textdatei. Ich würde aber gerne ein Verzeichnis dafür angeben, so dass sich dann alle Bilder aus diesem Verzeichnis geladen werden. In meinem Fall wäre das folgendes Verzeichnis:
Code:
/Bilder/logo/Farbe
denn so müsste man das Script nicht mehr ändern, egal ob Bilder hinzu kommen oder weg fallen.

Ein zweites Problem habe ich mit den "Pfeilen" zum blättern. Jene werden wohl über css eingefügt, denn in der Beispiel *.htm Datei waren sie nicht eingebunden. Habe dazu dieses beides in der skin.css gefunden:
Code:
.jcarousel-skin-ie7 .jcarousel-next-horizontal {
    position: absolute;
    top: 43px;
    right: 5px;
    width: 32px;
    height: 32px;
    cursor: pointer;
    background: transparent url(next-horizontal.gif) no-repeat 0 0;
}

.jcarousel-skin-ie7 .jcarousel-prev-horizontal {
    position: absolute;
    top: 43px;
    left: 5px;
    width: 32px;
    height: 32px;
    cursor: pointer;
    background: transparent url(prev-horizontal.gif) no-repeat 0 0;
Jeweil ergänzt mit einer anderen "Image Position", damit man den Pfeil wohl in der anderen "farbe" sieht. Doch damit habe ich noch so meine Probleme.

Denn in meinem Layout ist es so, dass ich eben das div BilderReihe habe. In jenem sollen die Bilder erscheinen (was soweit auch klappt). Das erste und letzte Bild soll wiederum die Grafik zum blättern sein. Am Anfang hatte ich jene "von Hand" eingefügt:
HTML:
<a href="#"><img src="Bilder/buttons/pfeile/blaettern/zurueck.gif" alt="zurueck" name="zurueck" /></a>
    <a href="#"><img src="Bilder/buttons/pfeile/blaettern/vor.gif" alt="vorwaerts" name="vorwaerts" /></a>
Gibt man den Links noch eine class mit alignleft bzw. alignright, dann floaten sie in die entsprechende Richtung. Danach hatte ich dann die Bilder ebenfalls von Hand eingefügt.

Die Bilder habe ich nun durch das DIV mit der ul Liste aus dem Beispiel ausgetauscht.Es werden dann zwar auch die Bilder aus dem JavaScript eingefügt, aber das Blätter funktioniert nicht. Jenes klappt erst, wenn ich auch das *.css dazu nehme, welches bei dem Beispiel auch dabei war. Doch jenes setzt die Pfeile leider nach ganz außen und belässt sie nicht in dem DIV BilderReihe, wo sie eigentlich mit hingehören.

Zu sehen ist das Problem auch auf der Testseite. Nun habe ich der *.txt Datei erstmal die 16 Bilder von Hand hinzugefügt, um das Karusell zu testen und musste dabei feststellen, dass leider auch das Blättern nicht funktioniert und leider nicht alle Bilder angeziegt werden. Leider ist das ganze mal wieder auf englisch, was nicht gerade meine stärke ist :(

Hoffe daher, dass ihr mir weiter helfen könnt. Ziel ist also, dass die Bilder aus einem Verzeichnis in dem vorhandenen DIV ausgegeben werden. (Das klappt ja soweit auch, zumindest für die ersten sechs Bilder.) Dann hätte ich gerne innerhalb von meinem DIV. Die Bilder sollten dann automatisch wandern, auch wenn man andere Links der Seiten anklickt.

Doch schon das blättern des Beispiels klappt zurzeit leider nicht. Wenn ich aus dem beigefügten Skin die Breitenangaben auskommentiere, dann werden zumindest die anderen Bilder angeziegt. Doch dann sind leider die "Schaltflächen" nicht mehr aktiv...

Habt ihr eine Idee für diese Schwierigkeiten oder kennt ihr ein Tutorial / Beispiel welches besser passt oder einen guten Suchbegriff?

Vielen Dank
Muckel

Habe noch vergessen: mein Aufbau von Hand schaut so aus:
HTML:
<div id="BilderReihe">
    <a class="alignleft" href="#"><img src="Bilder/buttons/pfeile/blaettern/zurueck.gif" alt="zurueck" name="zurueck" /></a>
    <a class="alignright" href="#"><img src="Bilder/buttons/pfeile/blaettern/vor.gif" alt="vorwaerts" name="vorwaerts" /></a>
    	<a title="Startseite" href="#oben"><img src="Bilder/logo/farbe/Logos-01.png" alt="Logo" name="logo" /></a>
    	<img src="Bilder/logo/farbe/Logos-02.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-03.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-04.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-05.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-06.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-07.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-08.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-09.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-10.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-11.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-12.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-13.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-14.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-15.png" alt="Logo" name="logo" />
    	<img src="Bilder/logo/farbe/Logos-16.png" alt="Logo" name="logo" />
    	<img src="Bilder/wappen/Lilie2.png" alt="Lilie" name="Lilie" />
</div>

Die Bilder werden nebeneinander angezeigt. Die "Schaltflächen" zum evtl. blättern sind rechts und links davon. Das Ergebnis ist auf dem Bild im Anhang zu sehen. Um den "Zwischenraum" zu entfernen, habe ich versucht, die Bilder in eine Liste zu packen, was leider schief ging, da die Bilder dann zu groß sind. Dabei habe ich versucht diese Liste zu beeinflussen:
Code:
#BilderReihe ul {
	display:block;
	margin:0em;
	padding:0em;
	border:none;
}

#BilderReihe li {
	float:left;
	list-style:none;
}

#BilderReihe img {
	height:100%;
	margin:0em;
	padding:0em;
	border:none;}

Bei einem height:100%; für die Bilder, sind sie viel zu groß. Doch auch 50% verändern daran nichts. Gebe ich dort aber 6em an, welches auch die Höhe des umgebenen DIVs ist, dann passt es. Woran liegt es, dass sich die Prozentangaben nicht/anders auswirken? Gebe ich aber allen drei "Objekten" (ul, li und img) ein height:100%, dann wird zwar die Größe richtig, aber ich sehe dann nur noch zwei Bilder. Auf dem zweiten Bild ist das Ergebnis zu sehen, wenn ich eben die Höhe von 6em (=Höhe wie bei dem umgebenen div) angebe.

Würde dieses Problem auch gerne verstehen und hoffe, dass ihr mir weiterhelfen könnt.

Liebe Grüße und vielen Dank
Muckel
 

Anhänge

  • bilder-reihe.png
    bilder-reihe.png
    214,2 KB · Aufrufe: 56
  • bilder-reihe-hand.png
    bilder-reihe-hand.png
    195,6 KB · Aufrufe: 52
Wofür wird denn überhaupt die height:100%-Deklaration benötigt?

Somit werden halt die Steuerungspfeile der Höhe des umschliessenden Elements angepasst.

Kommen wir dann mal zu deiner fehlerhaften Implementierung des jCarousel-Scripts.

In deinem gestern genannten jCarousel-Beispiel sind im HTML-Code überhaupt keine <img>-Elemente notiert, sondern lediglich die Bildpfade in der Textdatei "dynamic_ajax.txt" aufgelistet:
Code:
http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg|
http://static.flickr.com/75/199481072_b4a0d09597_s.jpg|
http://static.flickr.com/57/199481087_33ae73a8de_s.jpg|
http://static.flickr.com/77/199481108_4359e6b971_s.jpg|
http://static.flickr.com/58/199481143_3c148d9dd3_s.jpg|
http://static.flickr.com/72/199481203_ad4cdcf109_s.jpg|
http://static.flickr.com/58/199481218_264ce20da0_s.jpg|
http://static.flickr.com/69/199481255_fdfe885f87_s.jpg|
http://static.flickr.com/60/199480111_87d4cb3e38_s.jpg|
http://static.flickr.com/70/229228324_08223b70fa_s.jpg


Den Rest übernimmt dann diese Zeile des Scripts:
Javascript:
jQuery.get('dynamic_ajax.txt', function(data) {
        mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, data);
    });

um sie auszulesen und mit den nachfolgenden Script-Zeilen hier reinzuladen:
HTML:
<div id="mycarousel" class="jcarousel-skin-ie7">
    <ul>
      <!-- The content will be dynamically loaded in here -->
    </ul>
  </div>
Nur diesen <div id="mycarousel" class="jcarousel-skin-ie7">-Block mit dem <ul>-Element hast du in deinem HTML-Code auskommentiert, was dem nicht-vorhanden gleichkommt.

Ebenso hast du völlig vergessen, dieses dazugehörige Stylesheet in deiner Seite einzubinden:
HTML:
<!--
  jCarousel core stylesheet
-->
<link rel="stylesheet" type="text/css" href="../lib/jquery.jcarousel.css" />


Desweiteren hast du im Stylesheet "skin.css" CSS-Regeln auskommentiert, die ihre Daseinsberechtigung für die störungsfreie Funktionalität und korrekte Darstellung der jCarousel-Box besitzen.

Alles in allem kein Wunder, dass jCarousel bei dir überhaupt nicht funktioniert, wenn du den Code nur bruchstückhaft übernimmst. Und das, obwohl du im Besitz einer funktionstüchtigen Vorlage bist.

mfg Maik
 
Guten Morgen,

am Anfang hatte ich das Script ja 1zu1 übernommen und habe es danach versucht anzupassen und genau dieses hat nicht geklappt. Wenn ich alles 1zu1 über nehme, dann funktioniert es auch - nur dann ist eben der Bereich in dem das jCarousel funktioniert nicht ansatzweise so, wie ich es brauche.

Aus diesem Grund habe ich zB die Breitenangaben auskommentiert um zu schauen, was geschieht, wenn sich der Bereich eben auf "mein DIV" ausweitet. Um noch mal neu beginnen zu können, habe ich eben alles noch mal auf "anfang" gestellt. Ausgangssituation ist eben, dass ich das Div BilderReihe habe. In dem habe ich nun die Bilder, die wiederum in einer Liste ausgegeben werden. Das height:100% hatte ich genommen, als ich die Bilder noch ohne die Liste eingebunden hatte, damit die Bilder dann der Höhe des DIVs entsprechen. Wenn ich die Höhenangabe nun entferne (seit dem ich sie als Liste nutze), dann sind die Bilder in Originalgröße dargestellt und damit viel zu groß. Die 100%-Angabe hat leider eine komplett andere auswirkung, mit der Angabe als 6em passt es, wobei 6em = der Höhe des DIVs sind.

Bei einer alten "Problemstellung" wollte ich ein Hintergrundbild haben, welches einfach wechselt, wenn die Seite neu geladen wird. Das habe ich damals mit php gelöst:
PHP:
<?php 
    $bgs=array( 
        '01.jpg', 
        '02.jpg', 
        '03.jpg',
    ); 
    shuffle($bgs); 
?> 

<?php echo $bgs[0];?>
Doch das bringt mich aktuell leider nicht weiter. Und das jCarousel ist leider sehr mächtig und da alles nur auf englisch ist, für mich leider nicht so einfach zu hand haben. Gut, das mag für viele eine "faule Ausrede" sein, doch mein Problem ist, dass ich wegen einer Autoimmunerkrankung leider sehr starke Medikamente nehmen muss (Opioide gegen die Schmerzen, starke entzündungshemmer usw.) und dadurch leider die Konzentration usw. leidet. Will damit nicht jammern oder ähnliches (dafür gibt es mein Blog), es ist nur der Grund, weshalb für mich manches leider nicht auf anhieb klar und deutlich ist.

Was ich eben zurzeit umsetzten möchte ist, dass die Bilder die in meinem DIV (BilderReihe) sind, sich dadurch bewegen / fahren, also zum Beispiel von rechts nach links. Eine Schaltfläche zum blättern sollte nur recht klein in den Ecken sein, da sie eigentlich ja nicht gebraucht werden, wenn die Bilder automatisch durchlaufen. Dies sollte auch weiter gehen, wenn der Besucher einen Link benutzt oder ähnliches. (Falls dies nicht geht, dann bräuchte man eben die "Pfeile" zum blättern.)

Wenn dies umgesetzt ist, dann bleibt noch ein Problem über. Denn der Übergang von einem zum anderen Bild ist recht hart. Daher wäre es schön, wenn man auf die "Grenze" der Bilder ein überlagertes Bild legen könnte, welches wie "Milchglas" ausschaut, also eine gewisse transparenz hat, damit so die Übergänge weicher werden. Ein ähnliches vorhaben wurde in diesem Tutorial beschrieben. Mit den Pseudoelementen :before bzw. :after könnte man evtl. dieses "Transparente Bild" anordnen.

Etwas hinter dem Listenpunkt ausgeben hat soweit auch funktioniert:
Code:
#BilderReihe li:after { content:"#"; color:#999; font-style:italic; font-weight:bold; }
Doch wenn ich anstelle der Raute ein Bild nehme, wird das zwar angezeigt, aber leider nicht die eigentlichen Bilder:
Code:
#BilderReihe li:after { content:url(Bilder/allgemeines/hinter.png); }
Aber der "weichere Übergang" ist erstmal nicht ganz so wichtig.

Gut wäre eben eine einfache, schlanke Lösung, die die Bilder aus einem Verzeichnis auswählt und jene dann eben durch das DIV "wandern" lässt. Aber ich werde nun erstmal zur CeBIT gehen und heute Abend vlt. weiter machen.

Liebe Grüße und vielen Dank
Muckel
 
Wie sich die jCarousel-Box ohne (absolute) Breitenangabe verhält, hast du ja gestern Abend / Nacht gesehen: es werden alle Bilder gezeigt, anstelle der drei (wie im Original), und kann sie daher auch nicht über die Steuerungsfunktion der Reihe nach betrachten.

Desweiteren wird das jCarousel-Script bei dir solange nicht funktionieren, wie das DIV nicht den ID-Bezeichner #mycarousel besitzt, sondern du dies mit #BilderReihe versuchst.

All diese "Bausteine", die du hier nicht berücksichtigst, sondern einfach aus dem Original-Code herausnimmst und unter den Tisch kehrst, sind numal für die strörungsfreie Funktionalität von entscheidender Bedeutung.

Wenn du diese Fehler nicht korrigierst, wird sich da auch nichts d'ran ändern, und wir (bzw. ich) können dir dann auch nicht weiterhelfen.

Mein Tipp: Bau jCarousel zunächst mal 1:1 in deiner Seite an, und pass in "dynamic_ajax.txt" die Bildpfade an, damit du im Besitz der lauffähigen Version bist, und ein Erfolgserlebnis verbuchen kannst. Anschließend kannst du dich der CSS-Formatierung widmen, um z.B. die Größe der Box anzupassen.

mfg Maik
 
Moin zusammen,

die entsprechende ID und class aus der Vorlage hatte ich natürlich mit reingenommen, da ich das Beispiel 1zu1 in mein DIV kopiert hatte. Ich hatte dort dann folgendes stehen:
HTML:
<div id="BilderReihe">
    <div id="mycarousel" class="jcarousel-skin-ie7">
        <ul>
			The content will be dynamically loaded in here 
        </ul>
    </div>
</div>
und die Textdatei habe ich auch erweitert, um so mehr Bilder und u.a. auch meine zu erhalten. Damit ich es wie im Beispiel testen konnte, hatte ich die URL angegeben. Habe also folgende Textdatei gehabt: Bezogen habe ich mich auf diese Variante: "Carousel with dynamic content loading via Ajax" doch dieses Beispiel müsste dann noch mit "Carousel with autoscrolling" ergänzt werden, damit die Bilder auch automatisch wandern.

Das normale 1zu1 einbinden klappt, wie man dem Bild im Anhang entnehmen kann (mein FTP spinnt gerade). Nur mit der Anpassung hapert es leider. Aber mal schauen, was mir nun dazu noch einfällt.

Liebe Grüße
Muckel
 

Anhänge

  • ergebnis.png
    ergebnis.png
    36,9 KB · Aufrufe: 21
die entsprechende ID und class aus der Vorlage hatte ich natürlich mit reingenommen, da ich das Beispiel 1zu1 in mein DIV kopiert hatte. Ich hatte dort dann folgendes stehen:
HTML:
<div id="BilderReihe">
    <div id="mycarousel" class="jcarousel-skin-ie7">
        <ul>
			The content will be dynamically loaded in here 
        </ul>
    </div>
</div>
"hatte" hast du schön und trefflich umschrieben, denn als ich in mehreren zeitlichen Intervallen (spät abends / morgens) einen Blick in deinen Seitenquelltext geworfen habe, existierte obiger HTML-Code überhaupt nicht.

mfg Maik
 
Zurück