Beiträge von Sempervivum

    Du erzeugst die Elemente erst im onload-Event. Füge ich dort eine Ausgabe ein, funktioniert es:

    Ich vermute, Du hast versucht, außerhalb dieser Funktion zuzugreifen, als das Element noch nicht definiert war.

    Bei mir funktioniert display: inline-block; schon, in dieser Demo nimmt der Container nur den Platz entspr. dem Inhalt ein und ist zentriert ausgerichtet:

    Bei dem Fiddle muss ich doch vorsichtig Bedenken anmelden:

    1. ul als direktes Kind von ul ist nicht valide

    Zitat

    Error: Element ul not allowed as child of element ul in this context.

    2. Die Beschreibung gehört zu dem Bild und sollte daher sowohl aus semantischen als auch funktionalen Gründen in dem li mit dem Bild liegen.

    3. Fraglich, ob eine Liste für die Beschreibung in diesem Fall semantisch sinnvoll ist. Wahrscheinlich liegt der TO mit Überschrift und Absätzen schon richtig.

    4. Löst nicht das Problem des TO, denn die Beschreibung nimmt nach wie vor nach rechts die gesamte Fensterbreite in.

    html-seminar.de/woltlab/attachment/2215/

    basti1012 So ist es natürlich eine Kleinigkeit, wenn alle Zellen die selbe Breite haben. Der Knackpunkt hier ist jedoch, dass sich die Zellen variabel an den Inhalt anpassen sollen. Der TO schreibt ja:

    Zitat

    wie ich die Breite der einzelnen divs definiere. Denn diese ergibt sich ja erst aus dem Platz der einzlenen divs welche die Daten brauchen.

    Außerdem ist das wesentliche bei Flex, dass sich die Container an den Inhalte anpassen. Der Tabellenkopf hat bei dir jedoch eine feste Höhe.

    In einem anderen Thread hast Du ja schon den Hinweis bekommen, dass ein HTML-Dokument in PHP mit DOMDocument geparsed werden kann. Möglicher Weise ist dies subjektiv, weil ich mit Javascript und CSS besser vertraut bin, aber ich fand es immer eine Qual, das Ergebnis auszuwerten, mit xpath oder so geht das, aber die Syntax ist sehr kryptisch.

    Ich weiß auch gar nicht, ob dort externes CSS berücksichtigt wird, müsstest Du mal recherchieren.

    Unabhängig ob PHP oder JS:

    Bei Auswerten oder Parsen von Strings, wie Du es in dem Code oben für die Maßeinheit der Schriftgröße machst, geht alles viel einfacher, wenn Du RegEx verwendest. In deiner Funktion isBlank() tust Du das ja schon.

    Ich fürchte, direkt in der HTML-Datei wirst Du nicht an den Text der CSS-Datei heran kommen, sondern Du müsstest sie erst mit Ajax holen, oder gleich auf dem Server auswerten und parsen.

    Es gibt jedoch eine andere Möglichkeit: Du kannst mit Javascript und der Funktion getComputedStyle die Schriftgröße aller Elemente auslesen und prüfen.

    Vorteil: Es ist egal, ob sie inline, eingebettet im HTML, oder in einer externen Datei definiert ist.

    Nachteil: Wird mit Klassen im Selektor gearbeitet, würdest Du die selbe Regel mehrfach prüfen.

    Da gibt es mehrere Lösungsmöglichkeiten:

    Zunächst mal kann man einen Eventlistener auch wieder entfernen, siehe hier:

    https://wiki.selfhtml.org/wiki/JavaScrip…veEventListener

    Das setzt allerdings voraus, dass es sich nicht um eine anonyme Funktion handelt, was aber kein Problem sein dürfte.

    In jQuery ist das etwas einfacher durch die Aufrufe von on() und off().

    Alternativ kannst Du den Startzeitpunkt außerhalb definieren und den Listener ebenfalls außerhalb registrieren, aber den Wert für den Startzeitpunkt erst innerhalb der Funktion zuweisen. Solange Du letzteres nicht getan hast, hat die Variable den Wert null und Du kannst sie später auch wieder auf diesen Wert zurück setzen, so dass Du eine Info hast, ob der Startzeitpunkt gesetzt ist.

    Persönlich würde ich das zweite Verfahren vorziehen.

    Ich nehme an, der fragliche Listener ist der auf gamesSection in playGame. Warum kannst Du den denn nicht außerhalb der Funktion registrieren? Dieses gameSection scheint doch vollkommen statisch zu sein, weil die Variable ganz am Anfang außerhalb von allen Funktionen definiert wird.

    Das mehrfache Registrieren könnte man durch eine Statuskennung unterbinden, aber ich würde zunächst eine andere Lösung suchen.

    Edit: Vermutung: Die Variable start ist das Problem, weil sie lokal in playGame definiert ist und nicht verfügbar, wenn der Listener außerhalb definiert wird.

    BTW: Wenn ich das richtig überblicke, kannst Du die meisten deiner let durch const ersetzen.

    Auch ohne jQuery kein Problem, wenn man von dem Schnipsel in Posting #3 ausgeht:

    Ich habe eine Weile gerätselt, aber ich denke, ich habe jetzt den Grund gefunden, warum der z-index von dem Photoswipe nicht wirkt: Der Photoswipe-Container ist ein Kindelement vom main und ein Kindelement kann keinen anderen z-index haben als das Eltern-Element, siehe hier:

    https://stackoverflow.com/questions/1605…dex-than-parent

    Der z-index von main ist 90 und muss auch kleiner sein als der der Nav, damit diese immer sichtbar ist, wenn das Photoswipe aus ist.

    Versuche, den Container des Photoswipe außerhalb von main zu legen, so dass er ein direktes Kindelement von body ist.

    Zitat

    wie ich dieser id die position des bild verschieben kann

    Meinst Du damit, das Hintergrundbild verschieben um das richtige Teilbild sichtbar zu machen? Dann brauchst Du IMO nicht die ID und musst es auch nicht für jedes Bild von Hand machen, sondern Du kannst es mit der Anweisung machen, die Du schon in deinem Code hast:

    Code
                image.style.backgroundPosition = '"' + x + '%' + y + '%' + '"';

    Jetzt verstehe ich. Erst Mal die ID: Einen Index hast Du ja schon. Dann kannst Du einfach die ID aus dem Array auslesen und dem Element zuweisen:

    image.id = knights[i];

    Mit der Anzeige der Sprites bist Du anscheinend schon auf dem richtigen Wege. Man kann es nur schlecht beurteilen, wenn man nicht weiß, wie das Bild aussieht.