浏览器样式
您的扩展可以包含用户界面元素 - 浏览器和页面操作 弹出窗口、侧边栏 和 选项页面 - 由
- 创建定义 UI 元素结构的 HTML 文件。
- 添加一个指向该 HTML 文件的 manifest.json 键(
action
、browser_action
、page_action
、sidebar_action
或options_ui
)。
您可以将这些元素的样式设置为与浏览器的样式匹配。manifest.json 键包含一个可选属性来帮助实现此目的:browser_style
。如果包含此属性并将其设置为 true
,则您的文档将获得一个或多个额外的样式表,以帮助使其外观与浏览器的 UI 以及使用 browser_style
属性的其他扩展保持一致。
注意:清单 V3 中对 browser_style
的支持已弃用。从 Firefox 115 开始,options_ui.browser_style
和 sidebar_action.browser_style
的默认值将从 true
更改为 false
。在 Firefox 118 中,清单 V3 扩展将不再支持 "browser_style": true
。如果您的清单 V3 扩展依赖于 "browser_style": true
样式,请按照 browser_style
的清单 V3 迁移指南 进行操作。有关更多信息,请参阅 (Firefox 错误 1827910)。如果您想将 Firefox 样式应用于您的扩展,请参阅 Firefox 样式指南。
在考虑是否使用 browser_style: true
时,请使用各种主题(内置主题或来自 AMO 的主题)测试您的扩展,以确保扩展 UI 的行为符合您的预期。
警告:当 browser_style: true
包含在您的 Web 扩展的清单中时,除了输入控件外,扩展 UI 中的文本选择将被禁用。如果这导致问题,请改为包含 browser_style:false
。
注意:Google Chrome 和 Opera 在清单 V2 中使用 chrome_style
而不是 browser_style
。因此,对于跨浏览器扩展,您需要添加这两个键。清单 V3 中不提供 chrome_style
。
在 Firefox 中,样式表可以在 chrome://browser/content/extension.css
中看到。在 macOS 上,还会包含 chrome://browser/content/extension-mac.css
中的额外样式表。
大多数样式会自动应用,但某些元素需要您添加非标准的 browser-style
类才能获得其样式,如下表所述
元素 | 示例 |
---|---|
<button> |
html
|
html
|
|
<textarea> |
html
|
<input> 的父元素 |
html
|
清单 V3 迁移
由于 browser_style
在清单 V3 中已弃用,因此您可能希望在迁移清单 V2 扩展时删除支持。例如,使用 options_ui
,您将执行以下步骤以删除对 browser_style
的支持
- 将
options_ui/browser_style
设置为false
。 - 扩展 UI 的外观是否发生了变化?
- 如果外观没有变化,请删除该键。
- 如果外观发生了变化,请进行实验以确定存在哪些依赖项,并在扩展的样式表中添加相关的属性。最可能导致布局更改的样式是
box-sizing:
、border-box
和display: flex
。如果您无法识别依赖项,请将 extension.css 的内容与扩展一起包含,并删除所有不相关的部分,通常是body
和body *
块,因为大多数扩展不使用browser-style
类。
Firefox 面板组件(旧版)
注意:此功能是非标准的,仅在 Firefox 中有效。
chrome://browser/content/extension.css
样式表还包含旧版 Firefox 面板组件(导航组件)的样式。
旧版 Firefox 样式指南 文档说明了正确的用法。
元素 | 示例 |
---|---|
页眉 |
html
|
页脚 |
html
|
选项卡 |
html
|
表单 |
html
|
菜单 |
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>
结果
浏览器兼容性
webextensions.manifest.action
BCD 表格仅在浏览器中加载
webextensions.manifest.browser_action
BCD 表格仅在浏览器中加载
webextensions.manifest.page_action
BCD 表格仅在浏览器中加载
webextensions.manifest.sidebar_action
BCD 表格仅在浏览器中加载
webextensions.manifest.options_ui
BCD 表格仅在浏览器中加载