界面图标¶
Odoo 的界面依赖两套图标系统:
Material Symbols (Google Fonts)是主要的图标库,覆盖绝大多数界面需求。
Odoo UI Icons(OI) 是补充图标库,用于提供 Material Symbols 中不可用的图标——自定义视图图标、品牌徽标(如 Facebook、GitHub)以及其他 Odoo 特有的字形。
两套系统共用同一个 .oi 基类,并使用 data-icon 属性指定要渲染的图标。
Material Symbols¶
Odoo Web 客户端中加载的是 Material Symbols Outlined 的一个子集。任何标准图标(动作、导航、状态指示等)都可使用它。
将图标的连字名称(见 fonts.google.com/icons 中列出的名称)传给 data-icon 属性:
示例
<i class="oi" data-icon="check"/>
<i class="oi" data-icon="settings"/>
<i class="oi" data-icon="arrow_forward"/>
小技巧
要浏览和搜索图标,请访问 Material Symbols 图标库,或打开媒体对话框查看 Odoo 中可用的确切图标子集。在 Odoo 编辑器中输入 /icons,可通过 Powerbox 直接打开 图标 选项卡。
注解
Odoo 中可用的图标列表维护在 icons_wishlist.txt 中。
Odoo 界面图标¶
OI 图标库涵盖 Material Symbols 中不可用的图标:品牌徽标、自定义看板视图图标以及其他 Odoo 特有的字形。OI 图标在 data-icon 属性中使用 oi_ 前缀:
示例
<i class="oi" data-icon="oi_odoo"/>
<i class="oi" data-icon="oi_view-kanban"/>
<i class="oi" data-icon="oi_facebook"/>
与 Material Symbols 图标库 一样,Odoo 自定义图标也可以在 Odoo 媒体对话框中找到。
Odoo
oi_odoo
oi_studio
oi_view-kanban
oi_view-pivot
oi_view-cohort
oi_app_documents
oi_threads
社交
oi_bandcamp
oi_behance
oi_behance-square
oi_bluesky
oi_deviantart
oi_digg
oi_discord
oi_dribbble
oi_facebook
oi_facebook-square
oi_flickr
oi_foursquare
oi_google-plus
oi_imdb
oi_instagram
oi_kickstarter
oi_lastfm
oi_linkedin
oi_linkedin-square
oi_medium
oi_meetup
oi_mixcloud
oi_odnoklassniki
oi_pinterest
oi_pinterest-square
oi_product-hunt
oi_qq
oi_quora
oi_reddit
oi_reddit-square
oi_skype
oi_slack
oi_snapchat
oi_soundcloud
oi_spotify
oi_steam
oi_strava
oi_telegram
oi_tiktok
oi_tumblr
oi_twitch
oi_vimeo
oi_vk
oi_weibo
oi_whatsapp
oi_x
oi_x-square
oi_xing
oi_yelp
oi_youtube
oi_youtube-play
oi_youtube-square
技术
oi_amazon
oi_android
oi_angellist
oi_apple
oi_bitbucket
oi_bitbucket-square
oi_chrome
oi_codepen
oi_creative-commons
oi_css3
oi_dropbox
oi_drupal
oi_edge
oi_git
oi_github
oi_github-square
oi_gitlab
oi_google
oi_google-play
oi_hacker-news
oi_html5
oi_joomla
oi_linux
oi_opera
oi_safari
oi_stack-overflow
oi_trello
oi_windows
oi_wordpress
oi_yahoo
支付方式
oi_paypal
oi_cc-paypal
oi_cc-amex
oi_cc-diners-club
oi_cc-discover
oi_cc-jcb
oi_cc-mastercard
oi_cc-stripe
oi_cc-visa
RTL 适配¶
某些 OI 视图图标具有 RTL(从右到左) 适配,在启用 RTL 语言时会将字形水平翻转。Material Symbols 的方向性图标(箭头、尖角符号等)也包含 RTL 适配;完整列表请参阅 rtl_icons.scss。
工具类¶
以下工具类可与 .oi 组合使用:
oi-fw固定宽度 — 用于在列表或菜单中对齐图标。
示例
<i class="oi oi-fw" data-icon="check"></i>
oi-spin连续 360° 旋转(2 秒,线性)。适用于加载指示器。
示例
<i class="oi oi-spin" data-icon="progress_activity"></i>
oi-pulse8 步脉冲旋转(1 秒)。作为
oi-spin的替代方案,用于分步动画。示例
<i class="oi oi-pulse" data-icon="progress_activity"></i>
oi-filled默认情况下,Material Symbols 以其轮廓样式渲染。添加
oi-filled可渲染图标的填充变体。示例
<i class="oi oi-filled" data-icon="favorite"></i>
- 尺寸类
oi-sm、oi-lg、oi-2x、oi-3x…oi-10x会相对于当前字体大小缩放图标。示例
<i class="oi oi-2x" data-icon="check"></i>
注解
也可以通过在 CSS 中覆盖
--oi-font-size变量来调整图标字体大小:.my-element { --oi-font-size: 1.5em; }
从 CSS 设置图标¶
如需直接从 CSS(而不是 data-icon 属性)设置图标的字形,请将图标的连字名称用作 content 的值。如需使用填充变体,请在名称后附加 _f,或将 'FILL' 的 font-variation-settings 设置为 1。在 PDF 报表中请优先使用 _f 后缀,因为 wkhtmltopdf 不支持 font-variation-settings。
示例
/* Outline variant */
.my-element::before { content: "favorite"; }
/* Filled variant */
.my-element::before { content: "favorite_f"; }
/* OR */
.my-element::before {
content: "favorite";
font-variation-settings: 'FILL' 1;
}
注解
在大多数情况下,应通过 HTML 中的 oi-filled 类设置填充变体,这种方式在 PDF 报表中同样有效。
从 Font Awesome 迁移¶
Odoo 的用户界面过去使用 fa fa-<name> 和 oi oi-<name> HTML 类名来渲染 Font Awesome 和 Odoo UI 图标。
自从引入 Material Symbols 和 新的 Odoo UI 图标 以来,这些字形类名不再有效,必须在新图标系统中替换为对应的 data-icon。
为了便于图标迁移,我们引入了 SCSS 映射;你可以参考它们来帮助切换到新的图标系统。
Font Awesome 到 Material Symbols 的映射:fa_to_ms.scss
(旧)Odoo 自定义图标 到 Material Symbols 的映射:oi_to_ms.scss
重要
从 Odoo 20 起,这些映射已不再包含在 Odoo 代码库中;上面的链接指向包含它们的最后一个修订版本。
迁移步骤:
将
class="fa fa-<name>"替换为class="oi" data-icon="<ms-name>",其中<ms-name>是对应的 Material Symbols 连字名称。对于 Material Symbols 中不可用的图标(品牌图标、Odoo 自定义字形),请使用 Odoo UI 图标 库:
class="oi" data-icon="oi_<name>"。删除所有
fa-*尺寸与格式化类,并替换为等效的oi-*实用类 (fa-lg→oi-lg、fa-2x→oi-2x、fa-fw→oi-fw、fa-spin→oi-spin、fa-pulse→oi-pulse)。
示例
以下是新旧图标系统中等效图标的一些示例:
<!-- Old system -->
<i class="fa fa-user"></i>
<!-- New system -->
<i class="oi oi-filled" data-icon="person"></i>
<!-- Old system -->
<i class="fa fa-github fa-2x"></i>
<!-- New system -->
<i class="oi oi-2x" data-icon="oi_github"></i>
<!-- Old system -->
<i class="oi oi-settings-adjust"></i>
<!-- New system -->
<i class="oi" data-icon="tune"></i>
<!-- Old system -->
<i class="oi oi-view-pivot"></i>
<!-- New system -->
<i class="oi" data-icon="oi_view-pivot"></i>
Odoo Spreadsheet 图标¶
Odoo Spreadsheet 的图标以 <svg> 元素定义,并使用 QWeb templates 渲染。
示例
<t t-name="o-spreadsheet-Icon.GLOBAL_FILTERS">
<svg width="20" height="20" viewbox="0 0 20 20">
<path fill="currentColor" d="M1 3h12L7 9M5.5 6h3v11l-3-3M14 4h4v2h-4m-3 3h7v2h-7m0 3h7v2h-7"/>
</svg>
</t>
SEE_RECORDS
GLOBAL_FILTERS
NEW
COPY_FILE
SAVE
VERSION_HISTORY
CAMERA
DOWNLOAD_AS_JSON
ADD_TO_DASHBOARD
ODOO_LIST
INSERT_LIST
REFRESH_DATA
COMMENTS
LINE_CHART
STACKED_LINE_CHART
AREA_CHART
STACKED_AREA_CHART
COLUMN_CHART
STACKED_COLUMN_CHART
BAR_CHART
STACKED_BAR_CHART
COMBO_CHART
PIE_CHART
DOUGHNUT_CHART
SCATTER_CHART
GAUGE_CHART
SCORECARD_CHART
WATERFALL_CHART
POPULATION_PYRAMID_CHART
RADAR_CHART
FILLED_RADAR_CHART
GEO_CHART
FUNNEL_CHART
SUNBURST_CHART
TREE_MAP_CHART
CLEAR_AND_RELOAD
EXPORT_XLSX
OPEN_READ_ONLY
OPEN_DASHBOARD
OPEN_READ_WRITE
IMPORT_XLSX
UNDO
REDO
CUT
COPY_AS_IMAGE
PASTE
CLEAR
FREEZE
UNFREEZE
FORMULA
HIDE_ROW
UNHIDE_ROW
HIDE_COL
UNHIDE_COL
INSERT_ROW
INSERT_ROW_BEFORE
INSERT_ROW_AFTER
INSERT_COL
INSERT_COL_AFTER
INSERT_COL_BEFORE
INSERT_CELL
INSERT_CELL_SHIFT_DOWN
INSERT_CELL_SHIFT_RIGHT
DELETE_CELL_SHIFT_UP
DELETE_CELL_SHIFT_LEFT
INSERT_DROPDOWN
INSERT_SHEET
PAINT_FORMAT
CONDITIONAL_FORMAT
CLEAR_FORMAT
BOLD
ITALIC
UNDERLINE
STRIKE
TEXT_COLOR
FILL_COLOR
MERGE_CELL
ALIGN_LEFT
ALIGN_CENTER
ALIGN_RIGHT
ALIGN_TOP
ALIGN_MIDDLE
ALIGN_BOTTOM
WRAPPING_OVERFLOW
WRAPPING_WRAP
WRAPPING_CLIP
BORDERS
BORDER_HV
BORDER_H
BORDER_V
BORDER_EXTERNAL
BORDER_LEFT
BORDER_TOP
BORDER_RIGHT
BORDER_BOTTOM
BORDER_CLEAR
BORDER_TYPE
BORDER_COLOR
BORDER_NO_COLOR
PLUS
MINUS
LIST
ARROW_DOWN
ARROW_UP
ARROW_RIGHT
SMILE
MEH
FROWN
GREEN_DOT
YELLOW_DOT
RED_DOT
SMALL_DOT_RIGHT_ALIGN
SORT_RANGE
FILTER_ICON
CHECK
NUMBER_FORMATS
FONT_SIZE
SPLIT_TEXT
DISPLAY_HEADER
COG
PLUS_IN_BOX
MINUS_IN_BOX
GROUP_ROWS
UNGROUP_ROWS
GROUP_COLUMNS
UNGROUP_COLUMNS
DATA_VALIDATION
THIN_DRAG_HANDLE
SHORT_THIN_DRAG_HANDLE
EDIT_TABLE
DELETE_TABLE
PAINT_TABLE
CIRCLE_INFO
PIVOT
INSERT_PIVOT
MOVE_SHEET_LEFT
MOVE_SHEET_RIGHT
RENAME_SHEET
CAROUSEL