MB: Meine Workarounds des Problems

Beitrag lesen

Was ich gemacht habe
Ich habe die "Delimiter"-Kommentare (hier %%) ausgeblendet, die den Kommentar umschließen. Mit Ausname der "Delimiter"-Kommentare…

  • …die nichts kommentieren (hier %%%%)
  • …wo der Anfangs-"Delimiter"-Kommentar nicht am Ende einer Zeile steht.

…die "Delimiter"-Kommentare, die die Ausnahme-Kriterien erfüllen, sind nicht ausgeblendet.

Ausschnitt:

<div class=“line“>
  qux
  <span class="comment comment-start">%%</span>
  <span class="comment">foo</span>
  <span class="comment comment-end">%%</span>
  bar
  <span class="comment comment-start">%%</span>
</div>
<div class="line">
  tok
  <span class="comment comment-end">%%</span>
</div>
.comment-start:has(
  + .comment:not( .comment-end ),
  .comment:not( * )
),
.comment-end:not(
  .comment-start + .comment-end
) {
  display: none
}
.comment:not(
  .comment-start,
  .comment-end
) {
  /* … */
}

Resultat:
quxbar

Welche Probleme auftraten
Ich schaffe es nicht mit meinem dürftigen CSS Wissen und meinen Recherchen, ein Inline Text Abschnitt horizontal einklappen zu können und nur über ein Event dieses Inline Textes wieder auszuklappen.

  • Mit display: none blende ich zwar das komplette Kommentar-Element aus, jedoch gibt es keine Möglichkeit, überhaupt per GUI mit diesem Element zu interagieren, weil es ja ausgeblendet ist.
  • Mit display: inline kriege ich die Größe des Kommentar-Elementes nicht modifiziert, obwohl dies mein Ziel ist.
  • Mit display: inline-block kann ich zwar die Größe des Kommentar-Elementes festlegen, jedoch passt das modifizierte Element nicht mehr in den Textfluss der anderen inline-Elemente, da es ja ein inline-block Element ist - so schätze ich Aufgrund meiner Versuche.

Mein Workaround der Probleme
Ich habe display: inline-block verwendet, um zumindest die Größe des Elementes im Textfluss zu ändern. Mit overflow: hidden, white-space: nowrap, width:0 und height:0 habe ich den Text ausgeblendet, der technisch gesehen innerhalb des Kommentar-Elementes liegt, aber visuell außerhalb des anzeigbaren Rahmens. (Schon mal gut).
Ich habe versucht mit &::before und content:"*" das Kommentar-Element so zu gestalten, dass nur das Sternchen (*) angezeigt wird.

Analyse des Workarounds
(Wie schon mit dem display: none Problem) Diese Konfiguration verhindert, das alle Child-Elemente des Kommentar-Elementes nicht angezeigt werden können, auch das ::before-Element.

Mein Workaround-Workaround der Probleme
…Darum habe ich mit width:0.5em und height:1em einen kleinen Ausschnitt des Elementes im Textfluss so gestaltet, dass wieder ein Stückchen Kommentar-Element angezeigt werden kann. So ist wieder ein CSS Event des Kommentar-Elementes möglich (z.B. :hover oder :active).

.comment:not(
  .comment-start,
  .comment-end
) {
  /* … */
}
  display:inline-block;
  position: relative;
  width: 0.5em;
  height:1em;
  overflow: hidden;
  white-space: nowrap;
  &:active {
    width: inherit !important;
    height:inherit !important;
    overflow: visible !important;
    white-space: normal !important;
  }
  &::before {
    display:inline-block;
    position: relative;
    content: "*";
  }
}

Analyse des Workaround-Workaround
Das ist meine laihenhafte und dürftige Lösung 😕.

Auf meine Lösung bezogene Frage
Ist dies die einzige Lösung meines Problems? Und wenn ja, wie bekomme ich dieses Inline-Block-Kommentar-Element so justiert und eingegliedert, dass es sich wieder wie ein Inline-Element verhält und die Dimensionen eines *-Zeichens annimmt.