Less var(:root) 处理正常模式和暗黑模式或其他多种样式

本文介绍了如何创建CSS样式文件,定义正常模式和暗黑模式,并通过媒体查询和user-color-scheme属性判断系统主题,实现在不同环境下的样式切换。重点讲解了在APP.vue中动态设置用户界面颜色模式的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 创建样式文件
    在样式文件中定义好正常模式和暗黑模式中的css样式,并确认正常模式和暗黑模式在什么条件下进行调用。
    // theme.less
    .light-variable {
        --color: red;
        --background-color: red;
    }
    
    .dark-variable {
        --color: #fff;
        --background-color: #000;
    }
    
    :root { // 根样式,默认情况下调用的样式
        .light-variable;
    }
    
    // 方法一和方法二可混用
    // 方法一:
    // css媒体特性 使用媒体查询来判断用户是否将系统的主题设置为亮色或暗色。
    @media (prefers-color-scheme: dark) {
        :root {
            .dark-variable;
        }
    }
    @media (prefers-color-scheme: light) {
        :root {
            .dark-variable;
        }
    }
    
    // 方法二:
    // 判断文档根对象上是否存在 user-color-scheme 属性,其是否有值为 dark ,若有则执行 .dark-variable 里定义的样式
    [user-color-scheme='dark'] {
        .dark-variable
    }
    // 同上
    [user-color-scheme='light'] {
        .light-variable
    }
    
  2. 引入样式文件,若使用了第二种方法,则需要在项目的根元素上给定一个自定义属性
    // APP.vue
    <script>
    	created() {
    		let model = 'lihgt';
    		if(model === 'dark') {
    			document
    			.querySelector(":root")
    			.documentElement.setAttribute('user-color-scheme', 'dark');
    		}else if(model === 'lihgt') {
    			// 因为在创建样式时使用了根元素默认调用 .light-variable; 则在此可省略正常模式判断
    			document
    			.querySelector(":root")
    			.documentElement.setAttribute('user-color-scheme', 'light');
    		}
    	}
    </script>
    
    <style lang="less">
    @import './theme.less';
    </style>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值