Browser-Stile

Ihre Erweiterung kann Benutzerschnittstellenelemente enthalten – Browser- und Seitenaktions-Popups, Sidebars und Optionsseiten – die wie folgt spezifiziert werden:

  1. Erstellen einer HTML-Datei, die die Struktur des UI-Elements definiert.
  2. Hinzufügen eines manifest.json-Schlüssels (action, browser_action, page_action, sidebar_action, oder options_ui), der auf diese HTML-Datei verweist.

Sie können diese Elemente so gestalten, dass sie dem Stil des Browsers entsprechen. Die manifest.json-Schlüssel enthalten eine optionale Eigenschaft, um dies zu unterstützen: browser_style. Wenn diese enthalten ist und auf true gesetzt wird, erhält Ihr Dokument ein oder mehrere zusätzliche Stylesheets, die dazu beitragen, dass es mit der Benutzeroberfläche des Browsers und anderen Erweiterungen, die die browser_style-Eigenschaft verwenden, konsistent aussieht.

Hinweis: Die Unterstützung für browser_style im Manifest V3 ist veraltet. Ab Firefox 115 ändert sich der Standardwert von options_ui.browser_style und sidebar_action.browser_style von true auf false. In Firefox 118 wird "browser_style": true in Manifest V3-Erweiterungen nicht mehr unterstützt. Wenn Ihre Manifest V3-Erweiterung von den "browser_style": true-Stilen abhängt, folgen Sie dem Manifest V3-Migrationsleitfaden für browser_style. Weitere Informationen finden Sie unter (Firefox Bug 1827910). Wenn Sie den Firefox-Stil auf Ihre Erweiterung anwenden möchten, sehen Sie sich den Firefox Style Guide an.

Überlegen Sie, ob Sie browser_style: true verwenden möchten, indem Sie Ihre Erweiterung mit verschiedenen Themes (integriert oder von AMO) testen, um sicherzustellen, dass die Erweiterungs-UI wie erwartet funktioniert.

Warnung: Wenn browser_style: true im Manifest Ihrer Web-Erweiterung enthalten ist, wird die Textauswahl in der UI Ihrer Erweiterung außer bei Eingabesteuerungen deaktiviert. Wenn dies ein Problem verursacht, fügen Sie stattdessen browser_style:false ein.

Hinweis:>Google Chrome und Opera verwenden chrome_style anstelle von browser_style im Manifest V2. Für plattformübergreifende Erweiterungen müssen Sie daher beide Schlüssel hinzufügen. chrome_style ist im Manifest V3 nicht verfügbar.

In Firefox kann das Stylesheet unter chrome://browser/content/extension.css eingesehen werden. Das zusätzliche Stylesheet unter chrome://browser/content/extension-mac.css wird auch unter macOS eingebunden.

Die meisten Stile werden automatisch angewendet, aber einige Elemente erfordern, dass Sie die nicht standardmäßige browser-style-Klasse hinzufügen, um deren Styling zu erhalten, wie in der unten stehenden Tabelle beschrieben:

Element Beispiel
<button>
html
<button class="browser-style">Klicken Sie mich</button>

<select>

html
<select class="browser-style" name="select">
  <option value="value1">Wert 1</option>
  <option value="value2" selected>Wert 2</option>
  <option value="value3">Wert 3</option>
</select>
<textarea>
html
<textarea class="browser-style">Hier schreiben</textarea>
Elternteil eines <input>
html
<div class="browser-style">
  <input type="radio" id="op1" name="choices" value="op1"/>
  <label for="op1">Option 1</label>

<input type="radio" id="op2" name="choices" value="op2"/> <label for="op2">Option 2</label> </div>

Manifest V3-Migration

Da browser_style im Manifest V3 veraltet ist, möchten Sie möglicherweise bei der Migration Ihrer Manifest V2-Erweiterungen die Unterstützung entfernen. Am Beispiel von options_ui würden Sie diese Schritte unternehmen, um die Unterstützung für browser_style zu entfernen:

  • Setzen Sie options_ui/browser_style auf false.
  • Ändert sich das Erscheinungsbild der UI Ihrer Erweiterungen?
    • Wenn sich das Erscheinungsbild nicht ändert, entfernen Sie den Schlüssel.
    • Wenn sich das Erscheinungsbild ändert, experimentieren Sie, um festzustellen, welche Abhängigkeiten existieren, und fügen Sie die relevanten Eigenschaften in das Stylesheet der Erweiterung ein. Die Stile, die am wahrscheinlichsten Layoutänderungen verursachen, sind box-sizing:, border-box und display: flex. Wenn Sie die Abhängigkeiten nicht identifizieren können, fügen Sie den Inhalt von extension.css in die Erweiterung ein und löschen Sie alle Teile, die nicht relevant sind, üblicherweise die body und body *-Blöcke, da die meisten Erweiterungen die browser-style-Klasse nicht verwenden.

Firefox-Panelkomponenten (veraltet)

Hinweis: Diese Funktion ist nicht standardisiert und funktioniert nur in Firefox.

Das chrome://browser/content/extension.css-Stylesheet enthält auch die Stildefinitionen für die veralteten Firefox-Panelkomponenten (Navigationskomponenten).

Der Veraltete Firefox Style Guide dokumentiert die richtige Verwendung.

Element Beispiel
Kopfzeile
html
<header class="panel-section panel-section-header">
  <div class="icon-section-header"><img src="image.svg"/></div>
  <div class="text-section-header">Kopfzeile</div>
</header>
Fußzeile
html
<footer class="panel-section panel-section-footer">
  <button class="panel-section-footer-button">Abbrechen</button>
  <div class="panel-section-footer-separator"></div>
  <button class="panel-section-footer-button default">Bestätigen</button>
</footer>
Tabs
html
<div class="panel-section panel-section-tabs">
  <button class="panel-section-tabs-button selected">Tab</button>
  <div class="panel-section-tabs-separator"></div>
  <button class="panel-section-tabs-button">Tab</button>
  <div class="panel-section-tabs-separator"></div>
  <button class="panel-section-tabs-button">Tab</button>
</div>
Formular
html
<div class="panel-section panel-section-formElements">
  <div class="panel-formElements-item">
    <label for="name01">Beschriftung:</label>
    <input type="text" value="Name" id="name01" />
  </div>
  <div class="panel-formElements-item">
    <label for="picker01">Beschriftung:</label>
    <select id="picker01">
      <option value="value1" selected="true">Dropdown</option>
      <option value="value2">Listeneintrag</option>
      <option value="value3">Listeneintrag</option>
    </select>
  </div>
  <div class="panel-formElements-item">
    <label for="placeholder01">Beschriftung:</label>
    <input type="text" placeholder="Platzhalter" id="placeholder01" />
    <button name="expander" class="expander"></button>
  </div>
</div>
Menü
html
<div class="panel-section panel-section-list">
  <div class="panel-list-item">
    <div class="icon"></div>
    <div class="text">Listeneintrag</div>
    <div class="text-shortcut">Strg-L</div>
  </div>

<div class="panel-list-item"> <div class="icon"></div> <div class="text">Listeneintrag</div> <div class="text-shortcut"></div> </div>

<div class="panel-section-separator"></div>

<div class="panel-list-item disabled"> <div class="icon"></div> <div class="text">Deaktivierter Listeneintrag</div> <div class="text-shortcut"></div> </div>

<div class="panel-section-separator"></div>

<div class="panel-list-item"> <div class="icon"></div> <div class="text">Listeneintrag</div> <div class="text-shortcut"></div> </div>

<div class="panel-list-item"> <div class="icon"></div> <div class="text">Listeneintrag</div> <div class="text-shortcut"></div> </div> </div>

Beispiel

HTML

html
<header class="panel-section panel-section-header">
  <div class="icon-section-header"><!-- An image goes here. --></div>
  <div class="text-section-header">Header</div>
</header>

<div class="panel-section panel-section-list">
  <div class="panel-list-item">
    <div class="icon"></div>
    <div class="text">List Item</div>
    <div class="text-shortcut">Ctrl-L</div>
  </div>

  <div class="panel-list-item">
    <div class="icon"></div>
    <div class="text">List Item</div>
    <div class="text-shortcut"></div>
  </div>

  <div class="panel-section-separator"></div>

  <div class="panel-list-item disabled">
    <div class="icon"></div>
    <div class="text">Disabled List Item</div>
    <div class="text-shortcut"></div>
  </div>

  <div class="panel-section-separator"></div>

  <div class="panel-list-item">
    <div class="icon"></div>
    <div class="text">List Item</div>
    <div class="text-shortcut"></div>
  </div>

  <div class="panel-list-item">
    <div class="icon"></div>
    <div class="text">List Item</div>
    <div class="text-shortcut"></div>
  </div>
</div>

<footer class="panel-section panel-section-footer">
  <button class="panel-section-footer-button">Cancel</button>
  <div class="panel-section-footer-separator"></div>
  <button class="panel-section-footer-button default">Confirm</button>
</footer>

Ergebnis

Browser-Kompatibilität

webextensions.manifest.action

webextensions.manifest.browser_action

webextensions.manifest.page_action

webextensions.manifest.sidebar_action

webextensions.manifest.options_ui