Skip to content

Fuse 主题

为什么需要Fuse标准主题?

如您所见,Fused是基于ant-design开发的UI框架,自然也支持了ant-design的主题定制。但是,ant-design的默认主题并不符合公司设计统一规范的要求, 所以我们为Fused定制了Fuse标准主题。

如何使用Fuse标准主题?

我们提供了 FusedThemeConfig组件来支持Fuse标准主题的使用。 你只需要在你的项目根组件中引入FusedThemeConfig组件,然后在FusedThemeConfig组件中插入你的组件即可。 我们定制的token基于设计中台B端组件库设计规范,详情可参考B端组件库规范

代码演示

// App.vue
<script>
import { FusedThemeConfig } from '@design-middle-center/fuse-design-vue'
const theme  = ref()
这里的theme是你自己项目的配置,比如Fuse自带的token配置无法满足你的需求,你可以在这里配置一些个性化的token // [!code highlight]
</script>
<template>
  <FusedThemeConfig :theme="theme“> // [!code highlight]
    <Layout />
  </FusedThemeConfig>
</template>

千人千面的换肤SDK

在我们已经确定接入了Fuse标准主题之后,我们还提供了一个千人千面的换肤SDK,你可以通过这个SDK来实现千人千面的换肤。每个用户都可以按照自己的喜好配置自己的主题,目前已支持多语言。

如何安装SDK

在在外层index.html根文件中引入以下代码

<head>
  ... 其他引入
 <script src="https://static-resource-data.obs.cn-east-3.myhuaweicloud.com/design-middle-center/fuseThemeSdk-umd.js"></script>
 <link rel="stylesheet" href="https://static-resource-data.obs.cn-east-3.myhuaweicloud.com/design-middle-center/fuseThemeSdk.css">
 <head/>

如何使用

在最外层组件初始化后,调用以下代码,即可获取到用户的主题配置。并实时根据用户的配置进行更新

vue
<script setup>
// app.vue
import { onMounted } from 'vue'
const themeConfig = ref({})
onMounted(() => {
  // 初始化SDK
  window.FuseThemeSDK.initSDK(
    (val, isInit) => {
      if (isInit) {
        console.log(val, 'initSDK初始化回调=============')
        if (val) {
          theme.value = { ...theme.value, ...val }
        } else {
          const configObj = JSON.parse(localStorage.getItem('fuseDesignThemeConfig'))
          theme.value = { ...theme.value, ...{ token: configObj } }
        }
      } else {
        window.location.reload()
      }
    },
    {
      bottom: '10%',
      allowDrag: false,
      domElement: '.leftContainer',
      left: '50%',
      closeFontFamilyOption: false,
      closeDarkMode: false,
      closeBorderOption: false,
      closeFontOption: false,
      closeSizeOption: false,
      style: {
        marginRight: '10px'
      },
      systemName: ''
    }
  )
  // 多语言设置 默认为中文zh,设置默认英文en
  window.FuseThemeSDK.changeLocale('en')
})
</script>

API说明

TIP

1.sdk的露出按钮默认为悬浮状态,可通过配置top等参数控制悬浮位置,也可通过配置父元素的类名,将按钮嵌入到自己的节点元素中,但是必须保证初始化方法执行时,该节点已经渲染完毕!。2.多语言使用说明多语言,默认为中文,切换方法:window.FuseThemeSDK.changeLocale(luanage) luanage:'zh'为中文,'en'为英文

属性名类型默认值说明
domElementstring'body'可选,填入项将通过querySelector查询到的元素作为sdk按钮的父元素,此时不再为悬浮模式
allowDragbooleanfalse可选,且仅在悬浮模式下生效,是否允许拖拽,移动按钮位置
topstring''可选,且仅在悬浮模式下生效,配置为按钮距离屏幕顶部的值,可为百分比或者px
leftstring''可选,且仅在悬浮模式下生效,配置为按钮距离屏幕左侧的值,可为百分比或者px
rightstring''可选,且仅在悬浮模式下生效,配置为按钮距离屏幕右侧的值,可为百分比或者px
bottomstring''可选,且仅在悬浮模式下生效,配置为按钮距离屏幕底部的值,可为百分比或者px
styleobject''可选,按钮的其他style的配置,如在style中再次配置top等参数,则拖拽功能失效
closeDarkModebooleanfalse可选,是否显示主色配置
closeBorderOptionbooleanfalse可选,是否显示圆角配置
closeFontOptionbooleanfalse可选,是否显示字号大小配置
closeSizeOptionbooleanfalse可选,是否显示间距配置
systemNamestring''可选,不同产品的系统名称,定制特殊换肤功能时需要提供该字段
closeFontFamilyOptionbooleanfalse可选,是否显示字体切换功能,默认打开,显示misans字体,关闭后显示微软雅黑字体(奥丁的系统相反);备注:localstorage中字段fontFamilyConfig:0表示微软雅黑字体 1表示misans 字体

护眼(暗黑)模式介绍

sdk中除了提供部分token的配置之外,还提供了一个暗黑模式的配置,他是基于开源js库darkreader实现的,我们只是做了功能的集成

TIP

他能为绝大多数网站提供现成的暗黑模式,但是他无法做到完美,因为他的底层方案是他的换色算法实现的,不能完全贴合具体业务的设计需求,因此,接入方可灵活根据是否开启暗黑模式,对自己项目内部样式做更加细致的变更,达到更好的效果