Informiere dich über jQuery-load, damit geht das:
Beiträge von Sempervivum
-
-
Besser Code in Textform mit Codetags posten als Bilder: Das </> in der Werkzeugleiste oben.
ZitatDies wird -wie erwartet- für alle Überschriften übernommen. Jedoch wollte ich jeweils eine Ausnahme hinzufügen, wo das vorgegebene nicht übernommen wird.
Einfach der betr. Überschrift eine Klasse geben, z. B. "ausnahme" und für diese die abweichenden Regeln definieren:
Code<h2>Die allgemeine Überschrift</h2> <h2>Noch eine allgemeine</h2> <h2 class="ausnahme">Dies ist die Ausnahme</h2>Und das CSS:
-
Ich sehe gerade, dass Du auch nach einer Lösung mit CSS gefragt hast. Ist auch kein Problem, aber dann wird es unübersichtlicher und weniger änderungsfreundlich:
HTML
Alles anzeigen<!doctype html> <html> <head> <title>Test</title> <style> input { display: none; } section.container { display: none; } input#all:checked~section { display: block; } input#hund:checked~section.hund { display: block; } input#katze:checked~section.katze { display: block; } input#maus:checked~section.maus { display: block; } </style> </head> <body> <h1>Filter:</h1> <div class="buttons"> <label for="all">Alle</label> <label for="hund">Hund</label> <label for="katze">Katze</label> <label for="maus">Maus</label> </div> <input type="radio" name="rdgroup" id="all" checked> <input type="radio" name="rdgroup" id="hund"> <input type="radio" name="rdgroup" id="katze"> <input type="radio" name="rdgroup" id="maus"> <section class="container hund"> <h2>Hunde</h2> <h3>Hund 1</h3> <h3>Hund 2</h3> </section> <section class="container katze"> <h2>Katzen</h2> <h3>Katze 1</h3> <h3>Katze 2</h3> </section> <section class="container maus"> <h2>Mäuse</h2> <h3>Maus 1</h3> <h3>Maus 2</h3> </section> </body> </html> -
BTW: Möglicher Weise lässt sich das Ganze noch vereinfachen und übersichtlicher machen, wenn Du das HTML etwas anders arrangierst und jeweils eine Tiergruppe in einen übergeordneten Container legst:
HTML
Alles anzeigen<!doctype html> <html> <head> <title>Test</title> <script src="http://www.muench-herdecke.de/js/jquery-1.11.0.min.js"></script> <script> $(document).ready(function () { $('.buttons a').click(function () { $('.container').hide(); var sAttr = $(this).attr("data-filter"); if (sAttr == 'all') $('.container').show(); else $('.' + sAttr).show(); return false; }); }); </script> </head> <body> <h1>Filter:</h1> <div class="buttons"> <a data-filter="all">alle Tiere</a> I <a data-filter="hund">Hund</a> I <a data-filter="katze">Katze</a> I <a data-filter="maus">Maus</a> </div> <section class="container hund"> <h2>Hunde</h2> <h3>Hund 1</h3> <h3>Hund 2</h3> </section> <section class="container katze"> <h2>Katzen</h2> <h3>Katze 1</h3> <h3>Katze 2</h3> </section> <section class="container maus"> <h2>Mäuse</h2> <h3>Maus 1</h3> <h3>Maus 2</h3> </section> </body> </html> -
Das lässt sich leicht machen: Gib den Überschriften ebenfalls die geeigneten Klassen und beziehe dies beim Ausblenden ein:
HTML
Alles anzeigen<!doctype html> <html> <head> <title>Test</title> <script src="http://www.muench-herdecke.de/js/jquery-1.11.0.min.js"></script> <script> $(document).ready(function () { $('.buttons a').click(function () { $('.container, .headline').hide(); var sAttr = $(this).attr("data-filter"); if (sAttr == 'all') $('.container').show(); else $('.' + sAttr).show(); return false; }); }); </script> </head> <body> <h1>Filter:</h1> <div class="buttons"> <a data-filter="all">alle Tiere</a> I <a data-filter="hund">Hund</a> I <a data-filter="katze">Katze</a> I <a data-filter="maus">Maus</a> </div> <h2 class="headline hund">Hunde</h2> <div class="container hund"> <h3>Hund 1</h3> </div> <div class="container hund"> <h3>Hund 2</h3> </div> <h2 class="headline katze">Katze</h2> <div class="container katze"> <h3>Katze 1</h3> </div> <div class="container katze"> <h3>Katze 2</h3> </div> <h2 class="headline maus">Maus</h2> <div class="container maus"> <h3>Maus 1</h3> </div> <div class="container maus"> <h3>Maus 2</h3> </div> </body> </html> -
Zitat
Ich habe irgendwo gelesen, dass es Viewport auch in CSS gibt und dass man da die Seite im querformat anderst anzeigen kann, wie im hochkanntformat.
Dann bin ich mir ziemlich sicher, dass das, was Du gelesen hast, "orientation" war und dann trifft darauf die Einschränkung zu, dass es nicht von allen Browsern unterstützt wird. Wenn Du sicher gehen willst, dass es in allen Browsern funktioniert, dann ermittle die Orientierung mit Javascript und weise den betr. Elementen eine geeignete Klasse zu. Damit kannst Du sie dann mit CSS gestalten.
-
Glückwunsch, dass Du die Lösung gefunden hast. Freut mich zu lesen.
-
Ja, das Schlüsselwort lautet "orientation". Offenbar leider nicht von Safari und Android-Browser unterstützt:
-
Zur Sicherheit habe ich mal gegoogelt: jQuery-document-ready feuert nicht, wenn Inhalte durch Ajax nachgeladen werden:
https://stackoverflow.com/questions/2024…-document-ready
Dies führt zu einem Problem mit dem Javascript, das mitgeladen wird, wo die Eventlistener für Mouseup registriert werden. Offenbar findet das gar nicht statt. Du kannst es überprüfen, indem du in diesem Codeabschnitte ein console.log einfügst.
Lösung, indem Du die Eventlistener ebenfalls im complete-Callback registrierst:
Code
Alles anzeigenfunction smartRefresh() { if (typeof (activeBlock) != "undefined") { url = "./lib/parade_blockrefresh.php?blockID=" + activeBlock; } else { url = contentPath + "?" + 1 * new Date() } $("#refresh.active").load(url, function () { if (typeof (left) != "undefined") { $('.block-row-left').scrollLeft(left); } if (typeof (middle) != "undefined") { $('.block-row-midddle').scrollLeft(middle); } if (typeof (right) != "undefined") { $('.block-row-right').scrollLeft(right); } $('.carousel-item.active .block-row-left').mouseup(function () { left = $(this).scrollLeft(); }); $('.carousel-item.active .block-row-middle').mouseup(function () { middle = $(this).scrollLeft(); }); $('.carousel-item.active .block-row-right').mouseup(function () { right = $(this).scrollLeft(); }); }); $(".popover").popover('hide'); } -
... oder etwas kürzer ohne doppelten Code:
Code
Alles anzeigenfunction smartRefresh() { if (typeof (activeBlock) != "undefined") { url = "./lib/parade_blockrefresh.php?blockID=" + activeBlock; } else { url = contentPath + "?" + 1 * new Date() } $("#refresh.active").load(url, function () { if (typeof (left) != "undefined") { $('.block-row-left').scrollLeft(left); } if (typeof (middle) != "undefined") { $('.block-row-midddle').scrollLeft(middle); } if (typeof (right) != "undefined") { $('.block-row-right').scrollLeft(right); } } ); $(".popover").popover('hide'); } -
Mir scheint, da sind die Klammern nicht richtig gesetzt und den Callback brauchst Du in beiden Zweigen des if:
Code
Alles anzeigenfunction smartRefresh() { if (typeof (activeBlock) != "undefined") { $("#refresh.active").load("./lib/parade_blockrefresh.php?blockID=" + activeBlock), // hier Klammer nicht schliessen function () { if (typeof (left) != "undefined") { $('.block-row-left').scrollLeft(left); } if (typeof (middle) != "undefined") { $('.block-row-midddle').scrollLeft(middle); } if (typeof (right) != "undefined") { $('.block-row-right').scrollLeft(right); } } // sondern hier $(".popover").popover('hide'); } else { $("#refresh.active").load(contentPath + "?" + 1 * new Date()); // auch hier den Callback $(".popover").popover('hide'); } }So sollte es richtig sein:
Code
Alles anzeigenfunction smartRefresh() { if (typeof (activeBlock) != "undefined") { $("#refresh.active").load("./lib/parade_blockrefresh.php?blockID=" + activeBlock, function () { if (typeof (left) != "undefined") { $('.block-row-left').scrollLeft(left); } if (typeof (middle) != "undefined") { $('.block-row-midddle').scrollLeft(middle); } if (typeof (right) != "undefined") { $('.block-row-right').scrollLeft(right); } } ); $(".popover").popover('hide'); } else { $("#refresh.active").load(contentPath + "?" + 1 * new Date(), function () { if (typeof (left) != "undefined") { $('.block-row-left').scrollLeft(left); } if (typeof (middle) != "undefined") { $('.block-row-midddle').scrollLeft(middle); } if (typeof (right) != "undefined") { $('.block-row-right').scrollLeft(right); } } ); $(".popover").popover('hide'); } }Die URL und die anonyme Funktion sind beide Parameter von load(():
-
Zitat
runterladen und selbst hosten
Da habe ich Bedenken, ich sage nur "Urheberrecht" und "AGBs von Youtube".
-
Habe ich gefunden.
Wahrscheinlich feuert das document-ready nur, wenn die ganze Seite fertig ist und nicht, wenn Du einen Teilbereich mit jQuery-load nachlädst. Versuche, das Setzen der Scrollposition in den Callback für das load zu verschieben:
Code
Alles anzeigenfunction smartRefresh() { $("#refresh.active").load( contentPath + "?" + 1*new Date(), function() { if (typeof(left) != "undefined") {$('.block-row-left').scrollLeft(left);} if (typeof(middle) != "undefined") {$('.block-row-midddle').scrollLeft(middle); alert(middle);} if (typeof(right) != "undefined") {$('.block-row-right').scrollLeft(right);} } ); $(".popover").popover('hide'); }(ungetest, ich hoffe, ich habe mich bei den Klammern nicht verlaufen).
-
Wenn ich mir das ganze life auf deiner Seite ansehe, verstehe ich es nicht: Die Seite ist responsiv und ich bekomme keinen horizontalen Scrollbalken zu Gesicht?
-
Bei Flex ist der Zeilenumbruch standardmäßig ausgeschaltet. Du kannst ihn mit flex-wrap: wrap; einschalten.
-
Verstehe, ein ähnliches Problem hat man, wenn man wieder zur Startseite will.
Das kannst Du beheben, indem Du mit absoluten Pfadangaben relativ zum Basis-URI referenzierst, wie es bei SelfHtml genannt wird:
https://wiki.selfhtml.org/wiki/HTML/Tuto…I_referenzieren
Also dem Link ein / voranstellen:
<a href="/index.php">Startseite</a>
-
Zitat
Allerdings geht das ganze nicht mehr zurück wenn ich im Reiter „aktuelle Würfe“ bin.
Wie meinst Du das?
-
Zitat aus der Fehlermeldung auf https://www.puschelreich.de/puschels/kitten/index.php:
Zitathttp:// wrapper is disabled in the server configuration by allow_url_include=0
...
failed to open stream: no suitable wrapper could be foundUnd im Manual von include steht:
ZitatWenn "include-URL-Wrapper" aktiviert sind (was sie in der Standard-Konfiguration sind), kann die einzubindende Datei mit einem URL (über HTTP oder ein anderes unterstütztes Protokoll - siehe Unterstützte Protokolle und Wrapper für eine Liste unterstützter Protokolle) anstall eines lokalen Pfades eingebunden werden.
Offenbar ist das auf deinem Server nicht der Fall. Verwende statt dessen relative Adressierung, d. h.
../../steuerungoben.php
-
Auch kein Problem, wenn Du durch eine geeignete Adressierung die Pfeilstruktur auf die erste Stufe beschränktst:
Code
Alles anzeigen#my-breadcrumbs>ul>li>a:after { content: ""; border-top: 40px solid transparent; border-bottom: 40px solid transparent; border-left: 40px solid #4060A5; position: absolute; right: -40px; top: 0; } #my-breadcrumbs>ul>li>a:before { content: ""; position: absolute; margin-top: -30px; border-width: 40px 0 40px 40px; border-style: solid; border-color: #4060A5 #4060A5 #4060A5 transparent; left: -40px; } -
Zitat
Jetzt wäre es halt noch toll, wenn das Submenu untereinander angezeigt wird und überlappt und nicht alles verschiebt.
Das kannst Du erreichen, wenn Du das Submenu absolut positionierst. I. allg. etwas wovon man abrät, aber in diesem Fall und allgemein bei Aufklappmenüs ein gängiges und bewährtes Verfahren:
CSS
Alles anzeigenli { position: relative; display: inline-block; } ul.submenu { position: absolute; z-index: 999; left: 0; top: 100%; display: flex; flex-direction: column; } li:hover ul.submenu li { margin-top: 0 !important; } li:hover ul.submenu { margin-top: 0 !important; }Ich habe es nicht bis ins Detail ausgearbeitet. Z. B. bei der Überdeckung heben sich die Menüpunkte wegen der einheitlichen Farbe nicht ab, da ist noch Feinarbeit gefragt.