Beiträge von Sempervivum

    "sondern es sollen unendlich viele Bilder hochgeladen werden können." Ich glaube, Du hast mich falsch verstanden: Ich meine keine Galerie, die man von Hand anlegt und wo man den HTML-Text für jedes Bild selber schreiben muss, sondern die Galerien, die ich angegeben habe, sind PHP-Skripte, die es ermöglichen, beliebig viele Bilder hochzuladen und die das HTML, CSS und ggf. Javascript für die Anzeige automatisch generieren. Coppermine und Tinywebgallery ermöglichen, Beschreibungen anzulegen, so wie Du es haben möchtest.

    Ein kleines Script kenne ich leider nicht, aber es gibt eine ganze Reihe von vorgefertigten Galeriescripts, wo sicher auch eines dabei ist, das Beschreibungen ermöglicht:
    Gallery wollte ich erst schreiben, aber ein Blick auf die Homepage zeigt, dass sie eingestellt wurde.
    Coppermine, 4images und TinyWebGallery fallen mir noch ein.
    Zitat von Coppermine: "caption, title, description and user defined fields for each picture (searchable);" - das müsste das sein, was Du dir vorstellst.

    Ach so, ich hatte dies übersehen:

    JavaScript
    window['func_mouseout'+i] = r_on_out(i);


    Was hier passiert, ist folgendes: Da der Funktionsname r_on_out von einem Klammernpaar gefolgt wird, wird nicht diese Funktion zugewiesen sondern r_on_out wird ausgeführt mit i als Parameter und der Rückgabewert wird zugewiesen. D. h. ganz etwas anderes als das, was Du möchtest.

    Dies ist ein häufiges Problem, wenn man Eventlistener in einer Schleife registriert und dabei den Schleifenindex verwendet. Was passiert, ist folgendes: Der Code in der anonymen Funktion wird ja nicht beim Registrieren ausgeführt, sondern erst, wenn das Ereignis, in diesem Fall das Mouseout, eintritt. Dann ist die Schleife längst durchgelaufen und der Index hat seinen Endwert von 13. Lösung ist folgende:

    JavaScript
    st_list[i].addEventListener('mouseout', function(idx) {return function() {r_on_out(idx)};}(i), false);


    In diesem Fall wird die äußere Funktion sofort aufgerufen, weil auf die Definition ein Klammernpaar folgt. Innerhalb der äußeren Funktion hat der Parameter idx den aktuellen Wert, der in der inneren Funktion verwendet wird. Die äußere Funktion gibt die innere als Returnwert zurück und die innere wird als Listener registriert.

    Gängige Ursache für solche Probleme: Groß- und Kleinschreibung. Wenn Du unter Windows arbeitest ist es egal, aber dein Webserver unterscheidet Groß- und Kleinschreibung: bild.jpg ist etwas anderes als Bild.jpg, oder bild.jpg vs. bild.JPG.

    Das liegt an diesen beiden CSS-Anweisungen, die auf beide Bilder wirken:

    CSS
    .td5 img {    height: 80px!important;}
    img {    height: auto;    max-width: 100%;    vertical-align: middle;}


    Das max-width bei dem zweiten, beides in style.css definiert. Hast Du Zugriff auf diese Datei? Ich würde empfehlen, beide Bilder gezielt anzusprechen und die Breite und die Höhe zu setzen:

    CSS
    .imgtip > img {    height: 80px!important;}
    .imgtip > span > img {    max-width: none;}

    Selbstverständlich ist das möglich: Gib der Tabelle, die abweichend formatiert werden soll, eine ID:

    HTML
    <table id="special">

    Darauf beziehst Du dich dann im CSS:

    CSS
    table#special {	border-collapse: separate;	border-spacing: 0.2em;	margin-left: 2em;	box-shadow: 0 0 0.1em #666;	position: relative;	z-index: 1;	cursor: context-menu;}table#special th,table#special td {	padding: 0.2em 0.5em;	border-radius: 0.1em;}table#special thead th {	background-image: linear-gradient(to top, red 10%, blue ); 	color: white; }

    usw.

    Du hast schon richtig erkannt: Wenn Du dein Ziel erreichen willst, musst Du konsequent mit Prozent- statt Pixel-Angaben arbeiten. Ich habe es mal so gemacht:

    Ist sicherlich eine interessante Aufgabe, so etwas nur mit CSS zu machen, aber ich finde, nicht alles, was machbar ist, ist auch sinnvoll. Vor allem die Änderungsfreundlichkeit beim Hinzufügen neuer Bilder lässt zu wünschen übrig, weil man alle Prozentangaben neu berechnen muss. Bei einem Slider mit Javascript ist es kein Problem, ihn so anzulegen, dass man nur die Bilder hinzu fügt und alles andere passt sich automatisch an.

    Versuche diese Javascript:

    Ich verstehe nicht ganz, was Du vor hast. OK, Du erzeugst eine Tabelle mit dem Ergebnis der Datenbankabfrage.
    "Beim Versuch diese in eine Liste zu packen scheiter ich allerdings."
    Was meinst Du da für eine Liste? Eine Liste i. S. von HTML (ul-li).
    Edit: Habe einen genaueren Blick auf deinen Code geworfen und gesehen, dass Du ja versuchst, eine ul-li-Liste anzulegen. Dabei sehe ich das Problem, dass Du - von dem Anlegen der Tabelle her - mit dem Cursor schon am Ende angelangt bist. Du musst zuvor der Cursor zum Anfang zurück spulen.
    Außerdem verstehe ich nicht, warum Du beides anlegen willst, eine Tabelle und eine Liste.