当前位置: 首页 > wzjs >正文

php 手机网站cms当牛做吗网站源代码分享

php 手机网站cms,当牛做吗网站源代码分享,中国客户网企业名录,wordpress seo自定义很多项目中有些会涉及到明暗主题切换的功能,今天就来梳理一下有关这方面的具体实现步骤和使用到的方法,本篇文章使用到的组件是tdesign,利用部分案例,主要阐述明暗主题切换的技术原理和实现步骤,仅供参考。 目录 一、…

很多项目中有些会涉及到明暗主题切换的功能,今天就来梳理一下有关这方面的具体实现步骤和使用到的方法,本篇文章使用到的组件是tdesign,利用部分案例,主要阐述明暗主题切换的技术原理和实现步骤,仅供参考。

目录

一、技术原理与核心

二、实现步骤详解

1.组件搭建

2.状态持久化

 3.模式切换逻辑

 4.组件挂载

5.事件监听

 6.配置与优化

7.使用

三、全部代码


一、技术原理与核心

TDesign 通过 CSS 自定义属性(变量)实现主题切换,所有颜色相关配置均使用 var() 函数引用变量。现代浏览器已广泛支持该特性,TDesign 默认提供浅色/深色两套色板。主要核心逻辑是通过操作 html 标签的 theme-mode 属性触发样式切换,TDesign 组件库会自动监听该属性变化并应用对应主题样式。

二、实现步骤详解

具体步骤这里省略了搭建框架和项目中安装tdesign组件,主要详解明暗主题切换的具体代码和逻辑。

1.组件搭建

一般的明暗切换为一个太阳和一个月亮图标的切换,这里我们借用tdesign的icon和按钮来搭建组件

<template><div class="mode-btn-container"><t-button @click="toggleMode" class="mode-btn"><template #icon><ModeDarkIcon v-if="isDarkMode" /><ModeLightIcon v-else /></template></t-button></div>
</template><script setup>
import { ref } from 'vue'
const isDarkMode = ref(false)
const toggleMode = () => {}
</script><style lang="less" scoped>
.mode-btn-container {.mode-btn {margin-right: 0.5vw;}
}
</style>

2.状态持久化

使用 useStorage 组合式函数(通常来自 @vueuse/core 库),创建响应式状态 isDarkMode,值会持久化存储在 localStorage,键名为 'theme-mode',这也是tdesign组件中的主题,默认值为 false(初始为浅色模式),当值变化时会自动同步到本地存储,页面刷新后仍可保持状态

import { useStorage } from '@vueuse/core'
const isDarkMode = useStorage('theme-mode', false)

 3.模式切换逻辑

const toggleMode = () => {isDarkMode.value = !isDarkMode.value // 切换布尔值document.documentElement.setAttribute('theme-mode', isDarkMode.value ? 'dark' : 'light' // 更新HTML根元素属性)emit('toggleMode', isDarkMode.value) // 触发自定义事件
}

 4.组件挂载

初始化加载时同步主题状态(比如从localStorage恢复的持久化状),确保首次渲染时应用正确的主题样式

onMounted(() => {document.documentElement.setAttribute('theme-mode', isDarkMode.value ? 'dark' : 'light')
})

5.事件监听

监听isDarkMode响应式变量的变化,当主题状态变化时(通过切换操作),实时更新DOM属性,

watch(isDarkMode, newVal => {document.documentElement.setAttribute('theme-mode', newVal ? 'dark' : 'light')
})

 6.配置与优化

写完以上代码之后其实我们发现还未达到想要的想要,想要更好的使用还需要最后一步,也就是在使用:root选择器定义全局变量

//该代码依据项目进行修改,仅供参考
:root[theme-mode="light"] {--color-background: #009994;--color-title-background: #71b2b1;--color-chart-background: rgba(255, 255, 255, 0.7);--color-title-text: #282727;--color-manage-background: #fff;--color-dialog-txt:#282727;--color-background-img: url('@/assets/images/page/net-frame.gif') no-repeat;--color-detail-txt:#282727;--color-background-net:#009994;--color-txt-net:#fff;--color-station-background:#f2fffe;--bg-date-picker: #fff;--td-bg-color-secondarycontainer:#f3f3f3;--ele-hover-bg-color:#afe2f6;--ele-bg-color:#fff;:root[theme-mode="dark"] {--color-background: #02455f;--color-title-background: #116e93;--color-chart-background: #7c8d8d31;--color-title-text: #fff;--color-manage-background: #0F1014;--color-dialog-txt:#282727;--color-background-img: url('@/assets/images/page/net-frame-dark.gif') no-repeat;--color-detail-txt:#fff;--color-background-net:#fff;--color-txt-net:#282727;--color-station-background:none;--bg-date-picker: #fff;--td-bg-color-secondarycontainer:#c0bebe;--ele-hover-bg-color:#51a0be;--ele-bg-color:#242424;}

7.使用

具体使用方法对颜色使用 var() 函数引用变量,具体如下,假设我想要对这个切换的按钮实现明暗背景颜色的变化

 .mode-btn {background: var(--color-background);margin-right: 0.5vw;}

三、全部代码

<template><div class="mode-btn-container"><t-button @click="toggleMode" class="mode-btn"><template #icon><ModeDarkIcon v-if="isDarkMode" /><ModeLightIcon v-else /></template></t-button></div>
</template><script setup>
import { ref } from 'vue'
import { useStorage } from '@vueuse/core'
// 主题状态管理
const isDarkMode = useStorage('theme-mode', false)
const toggleMode = () => {isDarkMode.value = !isDarkMode.valuedocument.documentElement.setAttribute('theme-mode', isDarkMode.value ? 'dark' : 'light')emit('toggleMode', isDarkMode.value)
}
onMounted(() => {document.documentElement.setAttribute('theme-mode', isDarkMode.value ? 'dark' : 'light')
})
watch(isDarkMode, newVal => {document.documentElement.setAttribute('theme-mode', newVal ? 'dark' : 'light')
})
</script><style lang="less" scoped>
.mode-btn-container {.mode-btn {background: var(--color-background);margin-right: 0.5vw;}
}
</style>

全局css的文件,我这里是common.less

//该代码依据项目进行修改,仅供参考
:root[theme-mode="light"] {--color-background: #009994;--color-title-background: #71b2b1;--color-chart-background: rgba(255, 255, 255, 0.7);--color-title-text: #282727;--color-manage-background: #fff;--color-dialog-txt:#282727;--color-background-img: url('@/assets/images/page/net-frame.gif') no-repeat;--color-detail-txt:#282727;--color-background-net:#009994;--color-txt-net:#fff;--color-station-background:#f2fffe;--bg-date-picker: #fff;--td-bg-color-secondarycontainer:#f3f3f3;--ele-hover-bg-color:#afe2f6;--ele-bg-color:#fff;:root[theme-mode="dark"] {--color-background: #02455f;--color-title-background: #116e93;--color-chart-background: #7c8d8d31;--color-title-text: #fff;--color-manage-background: #0F1014;--color-dialog-txt:#282727;--color-background-img: url('@/assets/images/page/net-frame-dark.gif') no-repeat;--color-detail-txt:#fff;--color-background-net:#fff;--color-txt-net:#282727;--color-station-background:none;--bg-date-picker: #fff;--td-bg-color-secondarycontainer:#c0bebe;--ele-hover-bg-color:#51a0be;--ele-bg-color:#242424;}


文章转载自:

http://AL7IOVgV.hyhzt.cn
http://ELQw4qzE.hyhzt.cn
http://B6a9X2o4.hyhzt.cn
http://nbQyTSIT.hyhzt.cn
http://XetSpF1M.hyhzt.cn
http://shCHUF9s.hyhzt.cn
http://KrsrS5qi.hyhzt.cn
http://8oj3xp9S.hyhzt.cn
http://3Cv5AM6x.hyhzt.cn
http://b9gUxjof.hyhzt.cn
http://0IEvatnw.hyhzt.cn
http://F2Gc02VT.hyhzt.cn
http://YTap8JLr.hyhzt.cn
http://6uLiCnX7.hyhzt.cn
http://YU4ySye5.hyhzt.cn
http://4OnPcyqv.hyhzt.cn
http://8inNbhqH.hyhzt.cn
http://8WPQZgkk.hyhzt.cn
http://MxHrqijW.hyhzt.cn
http://vaOaw53b.hyhzt.cn
http://GNbsJ9wZ.hyhzt.cn
http://5MDeBt2Q.hyhzt.cn
http://U9Frkfgv.hyhzt.cn
http://X7Wdxr7X.hyhzt.cn
http://NBihS7AZ.hyhzt.cn
http://vJQB4M3m.hyhzt.cn
http://ZJpKbXRa.hyhzt.cn
http://G5rG2YjA.hyhzt.cn
http://xUx5T4bY.hyhzt.cn
http://a9UvVYnA.hyhzt.cn
http://www.dtcms.com/wzjs/624951.html

相关文章:

  • 中国建设银行 英文网站网站静态页面做网站
  • 怎么修改网站模板外贸网站建设昆明
  • 自学制作网站难不难视频号直播怎么引流
  • 武进附近做网站的公司有哪些网站注册局
  • 网站名称查询南京网站建设苏icp备
  • 三、网站开发使用软件环境成都品牌设计网站
  • 网站建设论文开题报告重庆建筑设计公司排名
  • 个人网站免费空间申请定时切换照片wordpress
  • 前端网站开发总结手机网站 软件
  • 做网站销售需要注意的老外做的中国方言网站
  • 在家做兼职哪个网站重庆seo排名软件
  • 管家婆免费仓库管理软件沈阳百度首页优化
  • 吉林建设集团网站网站首页优化的目的
  • 微信保修网站开发源代码谷歌手机版浏览器官网
  • 阿里域名购买网站名师工作室建设名师网站
  • iis网站开发教程投票网站怎么做
  • 短租网站开发韩国女足还能出线吗
  • 地方门户网站推广方案网络营销是什么样的
  • 网站建设需求参考文档不错的免费网站建设
  • 圣弘建设股份有限公司网站宁波房产信息网官方网站
  • 吴桥网站如何在网上推广农产品
  • 建设一个会员积分网站深圳网站设计公司在什么地方
  • 长春seo网站排名房产app开发公司
  • 网站当前位置怎么做h5制作网页
  • 网上引流推广有哪些软件seo网站推广软件
  • 三折页设计那个网站做的好泰安手机网站
  • 商城站地址小程序模板免费制作
  • 石家庄建设工程信息网站网页制作素材图片美食
  • 智能网站搭建wordpress打开刷新2次
  • 网站怎么没有排名公众号微信平台