组件样式通过 CSS 自定义属性(变量)控制,默认值在样式表 :root 中定义。通过 applyTheme() 在运行时覆盖,内置主题(深色、暖色、冷色)仅覆盖与配色相关的变量,字体、圆角、间距等未列出的变量沿用默认值。


import BMapUIKit from '@baidumap/jsapi-ui-kit';

// 内置预设:'default' | 'dark' | 'warm' | 'cool'
BMapUIKit.applyTheme('dark');

// 切回默认
BMapUIKit.applyTheme('default');

// 注册自定义主题
BMapUIKit.registerTheme('brand', {
'--bmap-ui-primary': '#7c3aed',
'--bmap-ui-primary-hover': '#8b5cf6',
'--bmap-ui-panel-bg': '#faf5ff',
'--bmap-ui-text': '#1e1b4b',
// ... 按需覆盖其他变量
});
BMapUIKit.applyTheme('brand');

自定义主题无需覆盖全部变量,未指定的变量将保持 :root 中的默认值。


名称 说明 主色调
default 默认浅色主题 #38f 蓝色
dark 深色主题 #5ba3ff 亮蓝
warm 暖色主题 #e67e22 橙棕
cool 冷色主题 #0891b2 青蓝

方法 说明
applyTheme(name) 切换到已注册的主题,传入 'default' 恢复默认
applyTheme(vars) 传入 Record<string, string> 直接应用自定义变量(无需注册)
registerTheme(name, vars) 注册一个自定义主题,之后可通过 applyTheme(name) 切换

以下变量均可在自定义主题中覆盖。✓ 表示该变量在对应组件中被使用。

变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-panel-bg 面板背景色 #fff / #1a1a2e
--bmap-ui-text 主文本色(标题、评论内容) #333 / #e0e0e0
--bmap-ui-text-secondary 次要文本色(地址、营业时间、电话) #11141a / #b0b0c0
--bmap-ui-panel-border 分割线、边框 #e8e8e8 / #2d2d44
--bmap-ui-primary 主色调(关键词高亮、POI 图标) #38f / #5ba3ff
--bmap-ui-divider 建议项分割线 rgba(0,0,0,0.06)
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-item-hover-bg 列表项 / 操作按钮悬停背景 rgba(0,0,0,0.02)
--bmap-ui-item-active-bg 列表项选中背景 rgba(51,136,255,0.06)
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-rating-color 评分数字颜色 #ff5e27
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-tag-bg POI 标签背景(如「必吃」「人气」) rgba(15,153,119,0.08)
--bmap-ui-tag-text POI 标签文字 #0f9977
--bmap-ui-tag-detail-bg 详情类型标签背景(如「中餐」「川菜」) rgba(0,0,0,0.04)
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-rank-border 榜单标识边框 #f6cdb4
--bmap-ui-rank-text 榜单标识文字(如「美食榜第1名」) #984f35
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-label-border 行业 / 类型分类标签边框 #d0d3d9
--bmap-ui-label-text 分类标签文字 #5c6373
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-reason-bg 推荐理由卡片背景 #f7f8fc
--bmap-ui-reason-text 推荐理由卡片文字 #984f35
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-phone-icon-border 电话图标圆形边框 rgba(17,20,26,1)
--bmap-ui-gallery-badge-bg 图片画廊数量角标背景 rgba(0,0,0,0.4)
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-autocomplete-shadow 输入框与下拉列表阴影 rgba(0,0,0,0.1)
变量名 PlaceSearch PlaceDetail PlaceAutocomplete 说明 示例值
--bmap-ui-font-family 字体族(系统字体栈) -apple-system, sans-serif
--bmap-ui-font-size-base 基础字号 14px
--bmap-ui-radius 列表容器圆角 4px
--bmap-ui-spacing-xs 超小间距 4px
--bmap-ui-spacing-xsm 小间距(图片画廊间距) 6px
--bmap-ui-spacing-sm 中小间距(信息行间距) 8px
--bmap-ui-spacing-md 中间距(区块间距) 12px
--bmap-ui-spacing-lg 大间距 16px

样式表中定义的默认 CSS 变量,作为所有主题的基准。

变量名 说明 默认值
--bmap-ui-primary 主色 #38f
--bmap-ui-primary-hover 主色悬停 #5ba3ff
--bmap-ui-panel-bg 面板背景 #fff
--bmap-ui-panel-border 面板边框 #e8e8e8
--bmap-ui-text 正文文字颜色 #333
--bmap-ui-text-secondary 次要文字颜色 #11141a
--bmap-ui-font-family 字体族 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif
--bmap-ui-font-size-base 基础字号 14px
--bmap-ui-radius 圆角 4px
--bmap-ui-spacing-xs 超小间距 4px
--bmap-ui-spacing-xsm 小间距 6px
--bmap-ui-spacing-sm 小间距 8px
--bmap-ui-spacing-md 中间距 12px
--bmap-ui-spacing-lg 大间距 16px
--bmap-ui-item-hover-bg 列表项悬停背景 rgba(0, 0, 0, 0.02)
--bmap-ui-item-active-bg 列表项选中背景 rgba(51, 136, 255, 0.06)
--bmap-ui-rating-color 评分颜色 #ff5e27
--bmap-ui-tag-bg 标签背景 rgba(15, 153, 119, 0.08)
--bmap-ui-tag-text 标签文字 #0f9977
--bmap-ui-rank-border 榜单边框 #f6cdb4
--bmap-ui-rank-text 榜单文字 #984f35
--bmap-ui-label-border 标签边框 #d0d3d9
--bmap-ui-label-text 标签文字 #5c6373
--bmap-ui-reason-bg 推荐理由背景 #f7f8fc
--bmap-ui-reason-text 推荐理由文字 #984f35
--bmap-ui-phone-icon-border 电话图标边框 rgba(17, 20, 26, 1)
--bmap-ui-gallery-badge-bg 图集角标背景 rgba(0, 0, 0, 0.4)
--bmap-ui-tag-detail-bg 详情页标签区域背景 rgba(0, 0, 0, 0.04)
--bmap-ui-divider 建议项分割线(自动补全) rgba(0, 0, 0, 0.06)
--bmap-ui-autocomplete-shadow 输入框与下拉列表阴影(自动补全) rgba(0, 0, 0, 0.1)

仅列出与默认主题不同的变量,其余沿用默认值。

变量名 说明 深色主题值
--bmap-ui-primary 主色 #5ba3ff
--bmap-ui-primary-hover 主色悬停 #7bb8ff
--bmap-ui-panel-bg 面板背景 #1a1a2e
--bmap-ui-panel-border 面板边框 #2d2d44
--bmap-ui-text 正文文字颜色 #e0e0e0
--bmap-ui-text-secondary 次要文字颜色 #b0b0c0
--bmap-ui-item-hover-bg 列表项悬停背景 rgba(255, 255, 255, 0.06)
--bmap-ui-item-active-bg 列表项选中背景 rgba(91, 163, 255, 0.15)
--bmap-ui-rating-color 评分颜色 #ff7e4f
--bmap-ui-tag-bg 标签背景 rgba(45, 212, 168, 0.12)
--bmap-ui-tag-text 标签文字 #2dd4a8
--bmap-ui-rank-border 榜单边框 #8b5e3c
--bmap-ui-rank-text 榜单文字 #f6cdb4
--bmap-ui-label-border 标签边框 #4a4a5e
--bmap-ui-label-text 标签文字 #9a9ab0
--bmap-ui-reason-bg 推荐理由背景 #252538
--bmap-ui-reason-text 推荐理由文字 #f6cdb4
--bmap-ui-phone-icon-border 电话图标边框 rgba(224, 224, 224, 0.6)
--bmap-ui-gallery-badge-bg 图集角标背景 rgba(0, 0, 0, 0.55)
--bmap-ui-tag-detail-bg 详情页标签区域背景 rgba(255, 255, 255, 0.08)

以橙棕色为主色,搭配米色背景。仅列出覆盖的变量。

变量名 说明 暖色主题值
--bmap-ui-primary 主色 #e67e22
--bmap-ui-primary-hover 主色悬停 #f39c12
--bmap-ui-panel-bg 面板背景 #fdf6ec
--bmap-ui-panel-border 面板边框 #f0d9b5
--bmap-ui-text 正文文字颜色 #5d4037
--bmap-ui-text-secondary 次要文字颜色 #795548
--bmap-ui-item-hover-bg 列表项悬停背景 rgba(230, 126, 34, 0.06)
--bmap-ui-item-active-bg 列表项选中背景 rgba(230, 126, 34, 0.12)
--bmap-ui-rating-color 评分颜色 #e74c3c
--bmap-ui-tag-bg 标签背景 rgba(230, 126, 34, 0.1)
--bmap-ui-tag-text 标签文字 #e67e22
--bmap-ui-rank-border 榜单边框 #f0d9b5
--bmap-ui-rank-text 榜单文字 #d35400
--bmap-ui-label-border 标签边框 #dcc6a0
--bmap-ui-label-text 标签文字 #8d6e63
--bmap-ui-reason-bg 推荐理由背景 #fef9e7
--bmap-ui-reason-text 推荐理由文字 #d35400
--bmap-ui-phone-icon-border 电话图标边框 rgba(93, 64, 55, 0.6)
--bmap-ui-gallery-badge-bg 图集角标背景 rgba(0, 0, 0, 0.4)
--bmap-ui-tag-detail-bg 详情页标签区域背景 rgba(230, 126, 34, 0.08)

以青蓝色为主色,搭配冷灰背景。仅列出覆盖的变量。

变量名 说明 冷色主题值
--bmap-ui-primary 主色 #0891b2
--bmap-ui-primary-hover 主色悬停 #06b6d4
--bmap-ui-panel-bg 面板背景 #f0f9ff
--bmap-ui-panel-border 面板边框 #bae6fd
--bmap-ui-text 正文文字颜色 #164e63
--bmap-ui-text-secondary 次要文字颜色 #475569
--bmap-ui-item-hover-bg 列表项悬停背景 rgba(8, 145, 178, 0.06)
--bmap-ui-item-active-bg 列表项选中背景 rgba(8, 145, 178, 0.12)
--bmap-ui-rating-color 评分颜色 #f59e0b
--bmap-ui-tag-bg 标签背景 rgba(8, 145, 178, 0.1)
--bmap-ui-tag-text 标签文字 #0891b2
--bmap-ui-rank-border 榜单边框 #bae6fd
--bmap-ui-rank-text 榜单文字 #0e7490
--bmap-ui-label-border 标签边框 #94a3b8
--bmap-ui-label-text 标签文字 #64748b
--bmap-ui-reason-bg 推荐理由背景 #ecfeff
--bmap-ui-reason-text 推荐理由文字 #0e7490
--bmap-ui-phone-icon-border 电话图标边框 rgba(22, 78, 99, 0.6)
--bmap-ui-gallery-badge-bg 图集角标背景 rgba(0, 0, 0, 0.4)
--bmap-ui-tag-detail-bg 详情页标签区域背景 rgba(8, 145, 178, 0.08)

// 示例 1:直接应用变量(无需注册)
BMapUIKit.applyTheme({
'--bmap-ui-panel-bg': '#ff0000',
'--bmap-ui-text': '#ffffff',
'--bmap-ui-rating-color': '#00ff00',
});

// 示例 2:注册后切换
BMapUIKit.registerTheme('custom', {
'--bmap-ui-panel-bg': '#1a1a2e',
'--bmap-ui-text-secondary': '#b0b0c0',
'--bmap-ui-item-hover-bg': 'rgba(255, 255, 255, 0.06)',
});
BMapUIKit.applyTheme('custom');

可通过命名导入获取内置主题的变量对象,用于扩展自定义主题:

import { darkThemeVariables, warmThemeVariables, coolThemeVariables } from '@baidumap/jsapi-ui-kit';

// 基于深色主题扩展
BMapUIKit.registerTheme('custom-dark', {
...darkThemeVariables,
'--bmap-ui-primary': '#7c3aed', // 仅覆盖主色调
});