Element-Plus——暗黑主题设置

文章介绍了如何在Vue项目中引入并应用暗黑主题。通过在main.js中导入css样式,自定义dark/css-vars.css文件配置主题颜色,然后使用vueuse库的useDark和useToggle功能,实现页面中切换按钮控制暗黑模式,并将用户选择存储在浏览器中。

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

在main.js中引入暗黑主题样式

import 'element-plus/theme-chalk/dark/css-vars.css'
import '@/styles/dark/css-vars.css'

在src路径下新建style/dark/css-vars.css文件
这里的样式可自定义配置主题颜色

html.dark {
    /* 自定义深色背景颜色 */
    /* --el-bg-color: #fff; */
    /* --el-color-primary: #fff */
    --el-menu-active-color:#fff
}

.el-pagination.is-background .btn-next.is-active,
.el-pagination.is-background .btn-prev.is-active,
.el-pagination.is-background .el-pager li.is-active {
    --el-color-primary: #000
    --el-color-white:white
}

在页面中通过按钮进行切换

<el-text :style="{marginRight:'10px'}">主题颜色</el-text>
<el-switch inline-prompt :style="{marginRight:'10px'}" active-color="#000" active-text="暗黑主题" inactive-text="默认" v-model="theme" @click="toggle()"></el-switch>

将切换暗黑模式按钮的状态存储在浏览器中
引入包

import { useToggle } from "@vueuse/shared";
import { useDark } from "@vueuse/core";
/* start——暗黑模式 */
const theme = ref<boolean>(false);
const isDark = useDark({
  // 存储到localStorage/sessionStorage中的Key 根据自己的需求更改
  storageKey: "useDarkKEY",
  // 暗黑class名字
  valueDark: "dark",
  // 高亮class名字
  valueLight: "light",
});
console.log(isDark.value);
if (isDark.value == false) {
  theme.value = false;
} else {
  theme.value = true;
}
const toggle = useToggle(isDark);
/* End——暗黑模式 */
### 关于 Spring Boot 中集成 Kafka 并处理 `null` 值 在 Spring Boot 项目中集成了 Apache Kafka 后,在消息传递过程中可能会遇到发送或接收 `null` 值的情况。对于 Java 编程语言而言,`null` 表示对象引用为空的状态[^1]。 #### 处理生产者端的 `null` 当作为生产者向 Kafka 主题发布消息时,可以设置序列化器来决定如何处理 `null` 值: ```java props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class); // 自定义序列化逻辑以应对 null 场景 public class NullSafeJsonSerializer<T> implements Serializer<T> { @Override public byte[] serialize(String topic, T data) { if (data == null) { return "null".getBytes(); } try { return new ObjectMapper().writeValueAsBytes(data); } catch (Exception e) { throw new SerializationException("Error serializing JSON message", e); } } } ``` #### 消费者端对 `null` 的处理 消费者接收到消息后,反序列化过程同样需要注意可能出现的 `null` 或特殊字符串 `"null"`: ```java props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonNullAwareDeserializer.class); // 定制化的反序列化类用于识别特定形式的 null 字符串 public class JsonNullAwareDeserializer<T> extends JsonDeserializer<T> { private final Class<T> targetType; public JsonNullAwareDeserializer(Class<T> type) { super(type); this.targetType = type; } @Override protected T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String valueAsString = p.getValueAsString(); if ("null".equals(valueAsString)) { return null; // 显式返回 null 而不是尝试实例化目标类型 } return super.deserialize(p, ctxt); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Southern Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值