Lies auch mein Posting #4, davor, und setze es um.
Beiträge von Sempervivum
-
-
PS: Bei dem zweiten Beispiel scheint mir das a-Tag nicht geschlossen zu sein:
Code
Alles anzeigen<div class="gallery-photo wnd-orientation-portrait"> <a class="litebox" data-litebox-group="gallery" data-litebox-text="" href="bilder/tr-berge/2-traunstein.jpg" width="1200" height="900"> <div class="gallery-image cf"><img src="bilder/tr-berge/2-traunstein-s.jpg" alt="Traunstein Berg am Traunsee, Wächter des Salzkammergutes"></div> <div class="gallery-title"><span></span></div> <p><a href="https://de.wikipedia.org/wiki/Traunstein_(Berg)">Traunstein</a></p> <!-- hier erwarte ich das schliessende </a> --> <!-- BEISPIEL ENDE --> </div> -
Versuche, das HTML so zu ändern:
Code<div class="gallery-photo wnd-orientation-portrait"> <a class="litebox" data-litebox-group="gallery" data-litebox-text="" href="bilder/tr-berge/1-gruenberg.jpg" width="1200" height="900"> <div class="gallery-image cf"><img src="bilder/tr-berge/1-gruenberg-s.jpg" alt="Grünberg in Gmunden im Salzkammergut mit Seilbahn"></div> <div class="gallery-title"><span></span></div> </a> <p><a href="https://gruenberg.info/de/">Grünberg</a></p> </div>d. h. den Link aus dem a-Tag für die Litebox heraus nehmen. (ungetestet, nur ein Versuch).
-
Dass die Schrift im Absatz fett ist, liegt wahrscheinlich daran, dass anderswo für das p-Element die Fett-Formatierung eingestellt ist. Am besten postest Du mal einen Link zu der Seite, dann kann man es mit dem HTML-Inspektor leicht heraus finden.
Davon abgesehen ist dein Code leicht veraltet. Informiere dich am besten über CSS:
https://wiki.selfhtml.org/wiki/CSS/Tutor…heets_einbinden
Und für ein Bild mit einer Beschriftung gibt es heute das figure-Tag:
https://wiki.selfhtml.org/wiki/HTML/Text…urierung/figure
Zentrierung und andere Gestaltung lassen sich am besten und einfachsten mit Flex machen:
https://wiki.selfhtml.org/wiki/CSS/Eigenschaften/Flexbox
Damit könnte dein Bild mit der Beschriftung dann so aussehen:
Code
Alles anzeigen<figure> <img src="images/dia1.jpg" height="42" width="42"> <figcaption> Products are tested and approved by Susan </figcaption> </figure> <style> figure { display: flex; justify-content: flex-start; align-items: center; } figure>img { width: 42px; height: 42px; } figure>figcaption { margin-left: 47px; /* hier kannst Du dann auch die Schrift gestalten */ } </style> -
Jetzt verstehe ich nicht genau, was Du haben willst: Nur ein Thumbnail und wenn man drauf klickt, sollen alle sichtbar werden? Und wenn man dann auf eines klickt, soll sich die Lightbox öffnen? Oder so wie in deinem ersten Post: Unten im Lightbox-Fenster eine Reihe von Thumbnails, die man mit Pfeiltasten durchblättern kann und wenn man eines klickt, wird es in dem Fenster darüber groß angezeigt?
-
Wie sehen denn diese Variablen im Text aus? Üblich ist, sie in einfache oder doppelte geschweifte Klammern einzuschließen. Informiere dich über die Javascript-Funktion replace, damit kannst Du die Namen dann ersetzen.
Und um die Namen auf der Seite eingeben zu können, benötigst Du Eingabefeldern.
Selfhtml ist i. allg. eine gute Quelle:
https://wiki.selfhtml.org/wiki/JavaScrip…/String/replace
https://wiki.selfhtml.org/wiki/HTML/Form…_.3D_.22text.22
Versuch mal, wie weit Du mit den Erläuterungen und den Beispielen kommst und wenn es hakt, melde dich wieder.
-
Das habe ich schon vermutet. Was Du suchst, nennt sich "Lightbox". Davon gibt es viele und IMO die beste ist die aktuelle Version von Fancybox:
-
Selfhtml ist immer eine gute Quelle:
https://wiki.selfhtml.org/wiki/CSS
Was dein Beispiel mit den Radiobuttons betrifft, so empfiehlt es sich, das Label-Tag zu verwenden.
-
Der Grund, warum das nicht funktioniert ist folgender: Die Funktion addEventListener tut das, was der Name wortwörtlich sagt: Sie fügt den Listener hinzu und ersetzt ihn nicht etwa. Daher wird bei dir mit jedem Klick ein weiterer Listener registriert und die anderen bleiben erhalten. Wenn das, was Du vor hast, funktionieren will, musst Du jedes Mal den alten Listener entfernen, bevor Du den neuen hinzu fügst:
https://wiki.selfhtml.org/wiki/JavaScrip…veEventListener
Ich stimme aber Basti zu: Ich sehe keinen Vorteil bei diesem Verfahren, wird nur unnötig kompliziert.
-
Mit CSS-Animation kann man auch Hintergrundbilder wechseln und sogar schön überblenden:
https://wiki.selfhtml.org/wiki/CSS/Eigenschaften/Animation
Ich hatte da vor ein paar Tagen für eine andere Frage ein Demo gemacht:
Code
Alles anzeigen#bgchanger { height: 200px; width: 300px; background-size: cover; background-position: center; animation: ani 3s linear infinite; } @keyframes ani { 0% { background-image: url(images/dia0.jpg); } 15% { background-image: url(images/dia0.jpg); } 33.5% { background-image: url(images/dia1.jpg); } 66.5% { background-image: url(images/dia1.jpg); } 67% { background-image: url(images/dia2.jpg); } 100% { background-image: url(images/dia2.jpg); } } -
Welche Informationen ist unter dem Link beschrieben. Ich gebe zu, dass die Infos dort ein wenig verwirrend sind, weil es so viel ist. Ein wichtiges ist target, das gibt das Element an, das das Event auslöst, in deinem Fall den Button auf den geklickt wurde. Lass dir das Event mal mit console.log ausgeben und sieh dir an, was drin steht:
-
Das toggle ist schon richtig und zwar dort, wo Du den Text immer abwechselnd auf- und zumachen willst. Aber bei "Alle ausblenden" willst Du ja, dass sie unabhängig vom aktuellen Zustand unsichtbar werden, daher ist dort das add angebracht.
Der Parameter e in deiner anonymen Funktion steht für event , das ist grob gesagt ein Objekt, das Informationen über das auslösende Ereignis enthält, in deinem Fall den Klick auf den Button. Ist hier im einzelnen beschrieben:
https://wiki.selfhtml.org/wiki/JavaScript/DOM/Event
Weglassen kannst Du es immer dann, wenn Du keine der Informationen darin benötigst.
-
Alle die Variablen, die Du eingangs mit getElementById ermittelst, ändern sich im weiteren Verlauf nicht mehr und sollten als const definiert werden.
Das Verfahren mit classList.toggle ist schon Mal gut.
Besser nicht für jeden Unterpunkt eine eigene ID und Funktion definieren, sondern allen die selbe Klasse zuweisen, eine Nodelist mit querySelectorAll ermitteln, diese in einer Schleife abarbeiten und jeweils den Eventhandler zuweisen. Dazu musst Du im DOM navigieren und brauchst Nachbarselektoren:
https://wiki.selfhtml.org/wiki/CSS/Selektoren/Kombinator
Auf die Weise brauchst Du nur noch das HTML zu ändern, wenn eine weitere Frage hinzu kommt.
Zitatwie fixe ich es wenn ich einzelne Elemente ausblende, dann aber auf den button alle ausblenden gehe dann blendet er nur die aus die eingeblendet sind
Das kommt durch das classList.toggle zu Stande, verwende statt dessen classList.add.
Zitatkann mir jemand noch erklären wie ich den Button von ausblenden zu einblenden ändern kann dieser sich aber wieder ändert wenn wieder drauf geklickt wird
Lösung a): Im HTML zwei Buttons anlegen und den, der gerade nicht sichtbar ist, mit display:none; unsichtbar machen. Auch dazu kannst Du die Klasse "d-none" verwenden.
Lösung b): Die Buttons nicht im HTML anlegen, sondern in einem Pseudoelement ::after. Auch das hat den Vorteil, dass Du nicht jedes Mal den Button berücksichtigen musst, wenn Du einen neue Frage hinzu fügst.
-
So ist der Titel zwar aussagekräftig aber er trifft nicht wirklich das Problem des TO: Er hat ein Video mit zwei Tonspuren und will diese umschalten.
-
Das wird hier diskutiert und auf video.js verwiesen:
-
Danke für das Sorbet! Ich lasse es Mal laufen, während ich dies schreibe.
So wie auf dem Screenshot ist es richtig. Mehr zum Einbinden von JS und CSS kannst Du hier nachlesen:
https://wiki.selfhtml.org/wiki/JavaScrip…bindung_in_HTML
https://wiki.selfhtml.org/wiki/CSS/Tutor…heets_einbinden
ZitatHeißt das ich muss mich für eine der vielen Lightboxen entscheiden und diese dann in meinem javascript (js) Ordner einbinden, durch den eingesetzten <script> Code wird das vom Browser dann erkannt und es kann losgehen mit der Diashow?
Ja.
-
Zitat
Diesen Quellcode
Code
- <script src="ihr-js-verzeichnis/lightbox.js"></script>
habe ich in der letzten Zeile bevor der </body> tag schließt eingefügt. Wahrscheinlich falsch, siehe hier:
Offenbar hast Du das von hier:
https://wiki.selfhtml.org/wiki/HTML/Tuto…htbox_einbinden
I. allg. ist Selfhtml eine gute Quelle, aber in diesem Fall wird das Einbinden des js-Files nicht gut beschrieben. Du musst, genau wie beim CSS-File, die Datei lightbox.js in dein Verzeichnis für Javacripts kopieren, gängiger Name "js", und dann den Verzeichnisnamen im Skript-Tag angeben:
<script src="js/lightbox.js"></script>
<a href="images/bild-1.jpg" data-lightbox="bild-1" data-title="Bildunterschrift"> <img src="images/bild-1-vorschau.jpg" alt="alternative Erklärung"> </a>
ZitatNur wo soll ich den Quellcode einfügen?
Dieser Code zeigt das Vorschaubild an und enthält den Link auf das große Bild, das in der Lightbox angezeigt werden soll. Die Position ist beliebig, platziere diesen Code dort, wo das Vorschaubild angezeigt werden soll.
Lightboxes gibt es diverse, die Beschreibung bei Selfhtml bezieht sich auf die lhokeshdakar-Version. Ich empfehle statt dessen Fancybox 3, weil sie voll responsiv und Touch-geeignet ist. Wenn Du sie aus dem CDN lädst, wie im Quickstart angegeben, ist es ganz einfach.
-
Zitat
Sollte nicht der <head> tag seperat an erster Stelle stehen und und wenn der </head> tag geschlossen ist, danach erst der <body> tag anfangen??
Das trifft zu. Aber <head> nicht mit <header> verwechseln, beides sind verschiedene Dinge.
Zitatdie Website wird allerdings richtig angezigt..
Das ist so, die Browser versuchen, auch aus fehlerhaftem Code eine vernünftige Anzeige zu machen.
-
Zitat
Ja, die Antwort ist immer die selbe aber dadurch nicht weniger richtig: Informiere dich über Flexlayout und die Eigenschaft align-items, damit kannst Du solch eine Andordnung leicht erzeugen.
-
Zitat
Wie kann ich alle Photos in der Bildergalerie so anordnen das jedes das gleiche Seitenverhältnis hat bzw in einen quadratischen Rahmen packen?
Wenn Du die Bilder in einen quadratischen Rahmen packen willst, musst Du akzeptieren, dass
- entweder seitlich oder oben und unten ein Leerraum entsteht
- oder seitlich oder oben und unten etwas abgeschnitten wird.
Realisieren kannst Du beides entweder mit Hintergrundbildern und der CSS-Eigenschaft background-size oder mit img-Tags und der CSS-Eigenschaft object-fit.
https://wiki.selfhtml.org/wiki/CSS/Eigen…background-size
https://wiki.selfhtml.org/wiki/CSS/Eigen…-fit#object-fit
Zitateinfache Galerie mit vier quadratischen Formaten auf jeder Zeile
Ich empfehle, dich nicht auf eine feste Anzahl pro Zeile festzulegen, sondern diese variabel zu halten, denn es gibt vom Smartphone bis zum Desktop-PC sehr viele verschiedene Bildschirmabmessungen.
ZitatSollte ich die Bilder für die Vorschau in der Bildergalerie (...) mit Thumbnails bestücken das die ladezeit kürzer wird und erst die originalgröße der Photos beim klick auf das Vorschaubild in einer neuen Seite laden oder ist das egal?
Egal ist es nicht, denn die Ladezeit ist ein wichtiger Faktor für deine Besucher. Sind es relativ viele Bilder, ist auf jeden Fall zu empfehlen, Thumbnails zu verwenden.
ZitatIst es überhaupt die richtige Herangehensweise die Photos über CSS Code in ein Raster zu packen und dann in einer neuen Seite zu verlinken in der das Photo dann mit der Originalgröße angezeigt wird?
Ein Raster schon, aber auf eine neue Seite verlinken weniger, weil es für den Besucher umständlich ist, von der neuen Seite immer wieder zurück in die Übersicht zu müssen. Ein gängiges Verfahren für eine Bildergalerie ist, eine Lightbox zu verwenden, ich empfehle Fancybox 3:
https://www.fancyapps.com/fancybox/3/
Probiere es aus und mach dir ein Bild.