vue实现多窗口主题样式切换以及跟随系统切换

文章介绍了如何在Vue项目中利用matchMediaAPI检测系统主题,并结合localStorage实现多窗口间的主题切换功能。同时,提供了完整的代码示例,包括监听系统变化、跨页面通信及AntDesignVue主题切换的配置方法。

vue实现多窗口主题样式切换以及跟随系统切换

自我记录

一.知识点链接:https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media/prefers-color-scheme
一.知识点链接:https://www.runoob.com/jsref/met-win-matchmedia.html
二.监听 storage 变动 (跨页签通信)
三.watchEffect 侦听器

一.js+css 去匹配系统主题颜色

// 使用matchMedia API 去匹配css的媒体查询的 系统的主题是否为案(dark)颜色 (也可以去匹配屏幕的宽度高度等)
const match = matchMedia('(prefers-color-scheme:dark)')
console.log(match,'match');

在这里插入图片描述

二. 跨标签通信

window.addEventListener('storage', (event) => {
   
   
      console.log(event.newValue)
    })

A页面存储发生变化时B页面可以监听到
在这里插入图片描述

三.监听本地存储的变化并赋值

watchEffect(() => {
   
   
 localStorage.setItem(LOCAL_KEY, theme.value)
 document.documentElement.className = theme.value
})

四.全部代码

<template>
  <a-layout-header class="head-box" :style="{ position: 'fixed', zIndex: 1, width: '100%' }">
    <a-row :gutter="{ xs: 24, sm: 24, md: 24, lg: 24 }">
      <a-col :xs="7" :sm="7" :md="7" :lg="7">奔跑的代码!</a-col>
      <a-col :xs="6" :sm="6" :md="6" :lg="6">奔跑的代码!</a-col>
      <a-col :xs="6" :sm="6" :md="6" :lg="6">奔跑的代码!</a-col>
      <a-col :xs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值