Beiträge von Sempervivum

    Da gibt es verschiedene Möglichkeiten:

    1. Wenn das HTML und die Bilder, etc., nicht allzu umfangreich sind, kannst Du die Druckversion in der selben Datei unterbringen und die Sichtbarkeit für den Druck mit einer Mediaquery umschalten:

    https://wiki.selfhtml.org/wiki/CSS/Media_Queries#Medientypen

    2. Wenn Du gern eine getrennte Datei haben willst oder wenn diese wegen des Umfangs, siehe oben, angeraten ist, kannst Du die Druckversion mit Ajax, z. B. von einem Druck-Button gesteuert, mit Ajax einlesen.

    Das liegt daran, dass Du dem div.logo ein padding zugewiesen hast und gleichzeitig eine Breite von 100%. Diese 100% gelten dann für die Breite ohne Padding, d. h. mit Padding ergibt sich eine Breite von mehr als 100%.

    Lösung, indem Du width: 100%; für div.logo löschst und body display: flex; und flex-direction: column; zuweist.

    Edit: Wie ich sehe, braucht es gar kein display: flex; für body, denn div ist ja ein Blockelement und füllt von allein die verfügbare Breite aus.

    Etwas unkonventionell, das Ganze aber hat was :)

    Zitat

    Ja ich weiß, Tabellen sollten am Besten komplett vermieden werden, aber manchmal geht dies leider nicht.

    Das ist ein Missverständnis, das man häufig antrifft. Es trifft zu, dass man vermeiden sollte, Tabellen für Layoutzwecke zu missbrauchen. Handelt es sich dagegen um die Darstellung von Daten, die von ihrer Struktur her tabellarisch sind, ist nichts dagegen einzuwenden.

    Man sollte jedoch etwas anderes vermeiden: Float, sofern es nicht tatsächlich um das Umfließen eines Elementes geht. Dafür, die Anordnung von Elementen zu steuern, sind Flex- und Gridlayout entwickelt worden. Ich habe das CSS in deiner Mediaquery mal auf Flex umgestellt und siehe da, es wird so dargestellt, wie gewünscht.

    Zitat

    allerdings würde ich den Zeitstempel, bis wann der Timer laufen soll ... darin speichern.

    Genau das tut das vorhandene Skript, siehe ab Zeile 33 in Posting #6:

    Code
                    var target_date = Date.now() + time_limit; // set the countdown date
                    // Endezeit in den Localstorage eintragen
                    localStorage.setItem('target_date', target_date);

    bzw. ab Zeile 85 in der optimierten Version in Posting #23.

    Zitat

    Aber ich bin gern für vorschläge offen ^^ Man kann ja nur dazu lernen :)

    Wenn das so ist: Ich habe das Ganze etwas überarbeitet, so dass man eine Funktion für beliebig viele Timer verwenden kann. Die Statusvariablen onload und isChecked wegrationalisiert. Ich finde es so wesentlich übersichtlicher.

    Zitat

    Irgendwie widersteht es mir schon Degin und Script zu vermengen. Insbesondere, da CSS ja eigentlich unter anderem daraus entstanden ist, um Inhalt und Design-Angaben zu trennen.

    Das hat natürlich immer noch seine Berechtigung. Man müsste aber auch die Begründung dieser Forderung berücksichtigen: Wenn ich es richtig verstehe, soll dadurch lesbarer, übersichtlicher und leicht zu ändernder Code entstehen.

    Wenn auf der anderen Seite aber eine Situation entsteht:

    Zitat

    Und irgendwie habe ich es auch bisher immer mit irgendwelchen Tricks geschafft, zumindest das Layout ohne JS aufzubauen und auch - zumindest im Frontend - weitestgehend auf JS zu verzichten...

    kann durch Trickserei dieses Ziel in das Gegenteil verkehrt werden und ich würde eine Lösung bevorzugen, mit einem Skript eine geradlinige Berechnung durchzuführen.

    Bestes Beispiel sind Slideshows rein mit CSS: Machbar und eine interessante Herausforderung, aber eine Qual, wenn es um die Erweiterung geht.

    Oder man denke an die Aufgabe, eine Reihe von Containern unabhängig vom Inhalt auf gleiche Höhe einzustellen. Bevor es Flexlayout gab, nur mit Javascript zu lösen (oder gab es doch irgend welche Tricks mit CSS?).

    Zitat

    Ja ich habe das ganze jetzt 5x hintereinander :D

    Ich nehme an, das bedeutet, dass Du auch die Funktion TimerUnter 5x hast und jedes Mal timerspezifisch angepasst hast? Wenn Du es so hast und keine Erweiterungen zu erwarten sind, ist es ja gut, aber es wäre kein Problem gewesen, diese Funktion so ändern, dass eine einzige beliebig viele Timer verwalten kann.

    Zitat

    var timer in die funktion mit rein weil ich das ganze 5 mal habe, also 5 Timer

    Eigentlich wäre das die beste Methode, man hat dann nur das Problem, dass sie bei einem erneuten Aufruf nicht mehr greifbar ist. Man müsste das Ganze dann objektorientiert anlegen, d. h. diese Variable im Objekt definieren, das nur einmal erzeugt wird. Und dann die Funktionen darin, die nötig sind.

    Zitat

    werde jetzt einfach 5 timer Variablen machen und die einfach oben deklarieren

    Das ist sicher möglich, aber wahrscheinlich wirst Du dann auch Teile des Javascript vervielfachen müssen. IMO nicht so günstig und ich würde den objektorientierten Ansatz vorziehen.

    Ich habe mit deinem Code eine Testdatei gemacht und denke, ich verstehe, was dein Ziel ist: Du möchtest die Divs von der Breite her so einrichten, dass keines abgeschnitten ist, auch wenn wegen des Scrollings rechts ein Teilbereich unsichtbar ist.

    Wenn es meine Aufgabe wäre, hätte ich nicht solche Berührungsängste, Parameter mit Javascript zu berechnen. CSS ist nun mal nicht dafür gedacht, zu rechnen, wenn man mal von solch einfachen Dingen wie calc absieht, sondern sieht bestimmte Verfahren bzw. Layoutmuster vor, die mit Flex- oder Gridlayout definiert werden und wo der Browser dann die passenden Abmessungen berechnet.

    Einfach die passende Breite der Divs ausrechnen und setzen.

    Zitat

    Damit löscht er zwar beim slide auf OFF den Timer aber nur für 1 Sekunde, dann ist er wieder da

    Das lässt vermuten, dass der Timer nicht wirklich angehalten wird. Du schreibst da von einem "slide" - ich habe in meiner Testdatei ja einen Checkbutton verwendet. Möglicher Weise hast Du da etwas nicht angepasst?

    Wie vorhin, war nicht getestet. Ich habe noch einige Anweisungen hinzu gefügt und hoffe, dass es jetzt unter allen Bedingungen läuft:

    Um den Timer mit clearInterval() wieder löschen zu können, muss man ihn in einer Variablen speichern:

    Ja, das war ja nicht getestet und es waren noch Fehler drin, vor allem, dass die Funktion TimerUnter() beim Laden der Seite gar nicht aufgerufen wurde.

    Dies ist jetzt getestet und funktioniert soweit, dass der Timer-Wert gespeichert und beim Neuladen wieder eingelesen wird:

    Ich habe es mal grob ergaenzt, aber ohne es zu testen: