Ist es möglich bei <details> & <summary> den Marker (zum Beispl. mit einem SVG) zu ändern?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Bei summary-Elementen handelt es sich (in der Darstellungsform) um Listitems. Daher kannst du ihren Marker entweder über das list-style-type-Property oder über das ::marker-Pseudeoelement (::-webkit-details-marker als Fallback für Safari) definieren.

Beispiel:

summary {
  list-style-type: none;
}

summary::marker,
summary::-webkit-details-marker {
  content: "+";
}

Die Marker agieren allerdings wie Inline-Elemente (deswegen wird so etwas wie ein Hintergrundbild nicht unterstützt) . Dieses Verhalten kann auch nicht geändert werden. Daher wäre es in deinem Fall besser, mit den Pseudoelementen ::after und ::before zu arbeiten.

Beispiel:

summary {
  list-style-type: none;
}

summary::before {
  background: red;
  content: "";
  display: inline-block;
  height: 12px;
  margin-right: 5px;
  width: 12px;
}
Zusätzlich zu diesem Sandwich-Button würde ich in kleiner Schrift unter dem Botton dann noch Menü stehen haben.

Vermutlich ist es hierfür am besten, den Text via ::after-Element zu setzen. Das Pseudoelement selbst kannst du absolut positionieren.

summary {
  position: relative;
}

summary::before {
  /* ... */
}

summary::after {
  content: "Menü";
  font-size: 8px;
  left: 0; /* still needs to be adjusted */
  position: absolute;
  top: 0; /* still needs to be adjusted */
}

Moni98799 
Beitragsersteller
 18.06.2024, 17:50
summary {
  list-style-type: none;
  position: relative;
}
summary::before {
  display: inline-block;
  height: 12px;
  margin-right: 5px;
  width: 12px;
  background: url(../web-fonts/SVG/bars-solid.svg) no-repeat;
  background-size: 18px;
  font-weight: bold;
}
details[open]::before {
  display: inline-block;
  height: 12px;
  margin-right: 5px;
  width: 12px;
  background: url(../web-fonts/SVG/times-solid.svg) no-repeat;
  background-size: 18px;
  font-weight: bold;
}
summary::after {
  content: "Menü";
  font-size: 8px;
  left: 0;
  position: absolute;
  top: 0;
}

oder gar mit FONT-AWESOME

background: '\f00d'; font-family: 'Font Awesome 5 Pro'; src: local('Font Awesome 5 Pro'); font-size: 2.1rem;

Oder mit content: "\f00d"; einfügen?

Wie wäre es richtig?

regex9  18.06.2024, 21:36
@Moni98799

Font Awesome-Icons würde ich als Textinhalt in Pseudoelemente einfügen.

content: "\f00d";
font-family: 'Font Awesome 5 Pro';