vue项目自定主题及字体大小以及颜色


1.新建seeting.js(前提是你项目里用了less)

//自定义字体及主题颜色
export function defaultFontSize(fontSizec,color){
  let headerHeight='166px'
  let navHeight='75px'
  let fontSizeXl = '36px'
  let fontSizeLg = '26px'
  let fontSizeMd = '24px'
  let fontSizeSm = '22px'
  let fontSizeXs = '20px'
  let fontSizeXXs = '18px'
  let userInfoWidth = '90px'
  let fontSizeAnticon = '60px'
  let defaultColor =color
  switch (fontSize) {
    case '24px':
      headerHeight='144px'
      navHeight = '53px'
      fontSizeXl = '28px'
      fontSizeLg = '20px'
      fontSizeMd = '18px'
      fontSizeSm = '16px'
      fontSizeXs = '14px'
      fontSizeXXs = '14px'
      userInfoWidth = '70px'
      fontSizeAnticon='30px'
      break;
    case '16px':
        headerHeight='113px'
        navHeight = '40px'
        fontSizeXl = '32px'
        fontSizeLg = '20px'
        fontSizeMd = '18px'
        fontSizeSm = '16px'
        fontSizeXs = '14px'
        fontSizeXXs = '12px'
        userInfoWidth = '70px'
        fontSizeAnticon='34px'
        break;
    case '14px':
      headerHeight='113px'
      navHeight = '40px'
      fontSizeXl = '30px'
      fontSizeLg = '18px'
      fontSizeMd = '16px'
      fontSizeSm = '14px'
      fontSizeXs = '12px'
      fontSizeXXs = '10px'
      userInfoWidth = '70px'
      fontSizeAnticon='34px'
      break;
    default:
      break;
  }
  return {
    '@primary-fontSize': fontSize,
    '@primary-fontSize-xl':fontSizeXl,
    '@primary-fontSize-lg': fontSizeLg,
    '@primary-fontSize-md': fontSizeMd,
    '@primary-fontSize-sm':fontSizeSm,
    '@primary-fontSize-xs':fontSizeXs,
    '@primary-fontSize-xxs':fontSizeXXs,
    '@primary-anticon':fontSizeAnticon,
    '@header-height':headerHeight,
    '@primary-userInfoWidth':userInfoWidth,
    '@nav-height':navHeight,
    '@defaultColor':defaultColor,
  }
}
const updateThemeFonSize = primaryColor => {
    console.log(primaryColor)
  if (!primaryColor) {
    return;
  }
  console.info(`正在编译主题!`)
  function buildIt() {
    // 正确的判定less是否已经加载less.modifyVars可用
    if (!window.less || !window.less.modifyVars) {
      return;
    }
    localStorage.setItem('fontSize',primaryColor)
    // console.log(localStorage.getItem('color'))
    
    let defaultSize = defaultFontSize(primaryColor)
    // console.log(defaultSize)
    // less.modifyVars可用
    window.less.modifyVars({
        '@primary-color': localStorage.getItem('color'),
        '@btn-primary-bg': localStorage.getItem('color'),
        ...defaultSize
      })
      .then(() => {
        console.log(`成功`);
      })
      .catch((err) => {
        //   console.log(err)
        // console.error(`失败`);
      });
  }
  buildIt();
};
export { updateThemeFonSize }

2.在你需要自定的地方引入updateThemeFonSize,然后传入字体跟主题颜色

import { updateThemeFonSize } from '@/utils/setting'
updateThemeFonSize('24px','#f00)

 3.vue3.0在public静态文件夹里面新建文件,在index.html里面引入fontSize.less。自此完成了,快配置试试

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,针对您的问题,我可以提供如下思路: 1. 在 Vue 中,我们可以使用 `v-if` 或 `v-show` 指令来实现点击切换两段文字的功能。这两个指令的区别在于,`v-if` 会直接将元素从 DOM 中移除,而 `v-show` 则是通过设置 CSS 的 `display` 属性来控制元素的显示/隐藏。 2. 对于字体颜色字体大小的修改,我们可以通过绑定样式的方式来实现。在 Vue 中,可以使用 `v-bind` 或简写的 `:` 来进行样式绑定。例如: ```html <p :style="{ color: textColor, fontSize: fontSize + 'px' }">{{ text }}</p> ``` 其中,`textColor` 和 `fontSize` 可以是 Vue 实例中的响应式数据,通过修改这些数据来实现样式的动态修改。 综上,我们可以编写如下代码来实现点击切换两段文字,并且可以动态修改文字的颜色和大小: ```html <template> <div> <p v-show="showText1" @click="toggleText">{{ text1 }}</p> <p v-show="!showText1" @click="toggleText">{{ text2 }}</p> </div> </template> <script> export default { data() { return { showText1: true, text1: 'Hello, World!', text2: 'Bonjour le monde!', textColor: 'black', fontSize: 16, }; }, methods: { toggleText() { this.showText1 = !this.showText1; }, }, }; </script> <style> p { cursor: pointer; } </style> ``` 在上述代码中,我们使用了 `v-show` 指令来控制两段文字的显示/隐藏,使用 `@click` 来监听点击事件,并在 `toggleText` 方法中修改 `showText1` 的值以实现切换。同时,我们使用了 `:style` 来绑定样式,并将字体颜色字体大小作为响应式数据,在需要时进行修改。最后,我们为 `<p>` 元素添加了 `cursor: pointer` 样式,使其在鼠标悬停时显示为手型,以提示用户可以点击该元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值