Selektor für kleinen Pfeil in CSS-Code zum extra-config-menü.uc.js ab v139

  • Bei Hover wird zwar das Icon angezeigt, das Submenü öffnet sich, aber sofern mit der Maus das Popup berührt wird verschwindet es .

    Ich bin so schwach...;)

    Ein [open] könnte man noch irgendwo mit reinquetschen; aber weil ich nicht meine Nightly Testmaschine anwerfen möchte, hier nur grob geraten, weiss nicht ob das mit ::after klappt:

    CSS
    #ExtraConfigMenu-popup [id^="submenu-"]:hover::after,
    #ExtraConfigMenu-popup :is([id^="submenu-"][open])::after {	}

    Einmal editiert, zuletzt von Horstmann (3. Mai 2025 um 13:37)

  • Was mich interessieren würde, ob #ExtraConfigMenu-popup :is([id^="submenu-"]):hover::after { }
    oder #ExtraConfigMenu-popup [id^="submenu-"]:hover::after { } nicht funktioniert.

    :is ist eine Eigenschaft, oder?
    Und [id^="submenu-"] fasst doch nur (#submenu-ucjs,#submenu-css,#submenu-CSSShadow,#submenu-cssweb) zusammen.

    Mit <3lichem Gruß

    Mira

  • :is ist eine Eigenschaft, oder?

    :is() ist eine Pseudoklasse, zu erkennen am einfachten Doppelpunkt. Der einzige Sinn dieser Pseudoklasse ist es, komplexe Selektoren, bei denen sich ein Teil wiederholt, einfacher zu schreiben. Deswegen ergibt es auch keinen Sinn, :is() mit nur einem Selektor darin zu verwenden. Das wird dann im Gegenteil einfach nur zu einer längere Schreibweise und führt sich selbst damit ad absurdum.

  • Und [id^="submenu-"] fasst doch nur (#submenu-ucjs,#submenu-css,#submenu-CSSShadow,#submenu-cssweb) zusammen.

    Und das ziemlich elegant sogar. Man könnte auch noch kaskadiertes CSS nutzen.

    Einführung in den CSS-Cascade - CSS: Cascading Style Sheets | MDN
    Der Cascade ist ein Algorithmus, der definiert, wie Benutzeragenten Eigenschaftswerte aus verschiedenen Quellen kombinieren. Die Cascade legt fest, welche…
    developer.mozilla.org
    CSS
    #ExtraConfigMenu-popup {
      #submenu-ucjs,
      #submenu-css,
      #submenu-CSSShadow,
      #submenu-cssweb
      {}
    }

    Da ist jetzt noch nix mit hofer und after drin.

    Aber ich selbst würde :hover und ::after nicht zusammelegen wollen, weil mWn ::after nur für das :hover gilt, aber nicht ohne :hover. Also braucht es schon wieder zwei Definition.

    ::after
    :hover::after

    oder

    :hover {...::after} (kaskadiertes CSS)

    Andersrum dürfte nicht funktionieren, weil after den Content nach einem Element stellt, wobei das Element ge:hover:t wird und ::after zum Element gehört.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 95.

  • Da ist jetzt noch nix mit hofer und after drin.

    Aber ich selbst würde :hover und ::after nicht zusammelegen wollen, weil mWn ::after nur für das :hover gilt, aber nicht ohne :hover. Also braucht es schon wieder zwei Definition.

    ::after
    :hover::after

    Man braucht aber eh eine Definition für sowohl mit als auch ohne :hover, da sparst du nix. :/
    Den Code zu straffen, nesten und zu minimieren ist was anderes, aber die beiden Zustände musst du so oder so getrennt angeben.

    In diesem Fall macht mE der Attribut Selektor von Sören eine Menge Sinn, schlank und einfach.

  • Ein [open] könnte man noch irgendwo mit reinquetschen;

    Du quetscht nicht schlecht.:thumbup: Das ist es wohl gewesen, jetzt funktioniert es wie gewünscht, und zwar mit diesem String.

    #ExtraConfigMenu-popup :is([id^="submenu-"][open])::after {    

    Danke, hast du gut gemacht.

    Grüße vom FuchsFan

  • FuchsFan 3. Mai 2025 um 18:37

    Hat den Titel des Themas von „Selektor für kleinen Pfeil in CSSS-Code zum extra-config-menü.uc.js ab v139“ zu „Selektor für kleinen Pfeil in CSS-Code zum extra-config-menü.uc.js ab v139“ geändert.
  • Das hat immer noch das überflüssige :is() mit drin. Kürzer:

    CSS
    #ExtraConfigMenu-popup [id^="submenu-"][open]::after { }

    Ich glaube der Code ist so oder so etwas Murks, auch wenn er oberflächlich funktioniert.
    Wird [id^="submenu-"] überhaupt wahrgenommen in dem Zusammenhang, oder nur [open] (= Verkettung von Attributen, geht das überhaupt)?

  • Ersteres ist ein Selektor, dann folgt noch ein (Unter-)Selektor., usw. Das Element, was genau alle Selektoren erfüllt, wird angesprochen.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 95.

  • Ersteres ist ein Selektor, dann folgt noch ein (Unter-)Selektor., usw. Das Element, was genau alle Selektoren erfüllt, wird angesprochen.

    Denke du hast recht damit, mit den Attribut Selektoren tue ich ich mich manchmal schwer.
    Leider frisst Firefox :open anscheinend nicht als Pseudoklasse, dann wär's etwas einfacher.:/

  • IMO war das mal so. Aber seit einigen Versionen nicht mehr.
    [open="true"] ist nur noch [open]. Falls du das meintest.

    Die 115 ESR ist eh dabei aussen vor, weil schlichtweg zu alt - falls noch genutzt.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 95.

  • jetzt funktioniert es wie gewünscht, und zwar mit diesem String.

    #ExtraConfigMenu-popup :is([id^="submenu-"][open])::after {    

    Prima! :)

    Die hover Funktion hast du nur damit (und der Version von Sören) nicht mehr, aber das zeigt sich in diesem Fall/Script wohl nur durch eine kurze Verzögerung zwischen hover Status (keine Funktion) und dem Moment in dem ein Popup dann aufgeht (open Funktion).

  • Leider frisst Firefox :open anscheinend nicht als Pseudoklasse, dann wär's etwas einfacher.

    Weil es open als Pseudoklasse nun mal in CSS nicht gibt. Und wenn Mozilla sie erfände, müsste sie dann :-moz-open heißen, da sie dann proprietär wäre.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Die 115 ESR ist eh dabei aussen vor, weil schlichtweg zu alt - falls noch genutzt.

    Ist noch genutzt, zwangsweise, hab aber eine Testmaschine mit aktuellem Fx für komplexe Fälle.
    Mit der Code Lingo halte ich mich aber auf dem Laufenden, keine Sorge. ;)

    Was ich meinte war :open als Pseudoklasse wie :hover und :active, meiner Erinnerung nach hat das noch nie gegriffen, kann mich aber täuschen.


    Weil es open als Pseudoklasse nun mal in CSS nicht gibt. Und wenn Mozilla sie erfände, müsste sie dann :-moz-open heißen, da sie dann proprietär wäre.

    Hmm... ;)
    Ok, erst seit 136 in FX, also - jetzt!

    Einmal editiert, zuletzt von Horstmann (3. Mai 2025 um 21:46) aus folgendem Grund: Ein Beitrag von Horstmann mit diesem Beitrag zusammengefügt.

  • meiner Erinnerung nach hat das noch nie gegriffen, kann mich aber täuschen.

    Weil es :open noch nie gegeben hat und auch jetzt noch nicht gibt.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Und [open] ist ein Status, ein CSS-Selektor, den es nur bei Firefox gibt. Anderes Beispiel:
    #urlbar[breakout][breakout-extend][breakout-extend-animate]

    Das sind alles ="true" Eigenschaften, die Firefox-proprietär sind und mit CSS nicht viel zu tun haben, sondern so nutzbar sind.

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 95.

  • eine kurze Verzögerung zwischen hover Status (keine Funktion) und dem Moment in dem ein Popup dann aufgeht

    Ja, ist mir sofort aufgefallen, aber ist ja nur ein Päuschen.

    Wenn du Laune hast, probier mal das hier, würd mich interessieren ob's a) geht und b) die Pause entfernt:

    CSS
    #ExtraConfigMenu-popup [id^="submenu-"]:is(:hover,[open])::after { Code hier }

    Ansonsten sollten auch beide Funktionen klappen (keine Verzögerung) mit dem hier:

    CSS
    #ExtraConfigMenu-popup [id^="submenu-"]:hover::after,
    #ExtraConfigMenu-popup [id^="submenu-"][open]::after { Code hier }

    Bei dem Script ist es scheint's nicht nötig, aber vermutlich nur weil hier jedes [id^="submenu-"] Element versucht ein Submenu/Popup zu öffnen, auch wenn keines da ist.