菜鸟科技网

深色模式如何制作?

制作深色模式界面已成为现代设计的重要趋势,它不仅能减少眼睛疲劳,还能在低光环境下提供更舒适的视觉体验,同时延长设备电池续航(尤其是OLED屏幕),以下是制作深色模式的详细步骤,从设计原则到技术实现,帮助你打造既美观又实用的深色界面。

深色模式如何制作?-图1
(图片来源网络,侵删)

明确深色模式的设计目标与原则

在开始制作前,需先明确深色模式的核心目标:提升视觉舒适度、保持内容可读性、确保品牌一致性,基于此,设计时应遵循以下原则:

  1. 对比度优先:深色背景下的文字与元素需有足够的对比度,确保用户能清晰识别内容,避免使用过浅的文字(如纯白文字在深灰背景上可读性较差)。
  2. 色彩统一性:避免使用高饱和度的鲜艳颜色作为背景或元素,以免在深色背景下过于刺眼;同时保持与浅色模式品牌调性的一致性,可通过调整色彩明度而非改变色相来实现。
  3. 层次感分明:通过不同的背景灰度、边框阴影等元素区分界面层级,让用户快速理解内容结构(卡片背景比主背景稍亮,标题文字比正文更突出)。

选择深色模式的配色方案

配色是深色模式的核心,合理的色彩搭配能显著提升用户体验,以下是推荐的配色逻辑及示例:

背景色(Background)

深色背景不宜过深,避免“黑洞效应”(纯黑背景易导致视觉疲劳),建议使用深灰色系(如#1a1a1a#0f0f0f)或深蓝灰色系(如#1e293b),既能营造深邃感,又能与文字形成适中对比。

文字颜色(Text)

文字需根据层级设置不同明度,确保可读性: 使用接近白色的浅灰色(如#f8f9fa#e9ecef),避免纯白(#ffffff)在深色背景下过于锐利。 使用中高明度灰色(如#d1d5db#cbd5e1),确保与背景有足够对比(对比度建议不低于4.5:1,符合WCAG 2.1 AA级标准)。

深色模式如何制作?-图2
(图片来源网络,侵删)
  • 次要文字(如时间戳、标签):使用中低明度灰色(如#9ca3af#6b7280),弱化视觉干扰。

强调色与功能色

  • 链接/按钮:使用低饱和度的高对比色(如蓝色系的#3b82f6、绿色系的#10b981),避免使用高饱和度红色(如#ef4444),以免刺眼。
  • 警告/错误:可使用橙色(#f59e0b)或红色(#ef4444),但需降低明度(如#dc2626),并通过边框、背景填充等方式增强识别度。

边框与分割线

使用与背景色接近的灰色(如背景为#1a1a1a时,边框用#2d2d2d),避免使用纯白或纯黑边框,以免破坏整体和谐感。

以下是深色模式配色表示例:

元素类型 推荐颜色(HEX) 说明
主背景 #1a1a1a 深灰底,避免纯黑
卡片背景 #242424 比主背景稍亮,区分层级
次要文字 #9ca3af 中低明度灰,弱化视觉
链接/按钮 #3b82f6 低饱和蓝,强调可点击性
边框/分割线 #2d2d2d 接近背景色的浅灰

界面元素的深色模式适配

不同界面元素在深色模式下需单独调整,确保整体一致性:

导航栏与页眉

导航栏背景可使用比主背景稍深的颜色(如#0f0f0f),文字颜色与主标题一致;若导航栏包含图标,建议使用与文字颜色一致的线条图标,避免彩色图标干扰视觉。

深色模式如何制作?-图3
(图片来源网络,侵删)

区块

卡片背景使用#242424等稍亮的灰色,内部文字按层级设置颜色;卡片阴影宜使用半透明深色(如rgba(0,0,0,0.3)),避免白色阴影(在深色背景下会显得突兀)。

表单元素

  • 输入框:背景色使用#2d2d2d,边框用#404040,聚焦时边框改为强调色(如#3b82f6),文字颜色为#d1d5db
  • 按钮:默认状态背景用强调色,文字用白色;禁用状态背景用#404040,文字用#6b7280

图片与媒体

  • 普通图片:无需调整,但需注意避免在深色背景下使用高亮图片(如白色背景的产品图),可通过添加dark模式滤镜(如filter: brightness(0.8))适当降低亮度。
  • 图标:优先使用矢量图标(SVG),通过CSS动态切换颜色(如fill: #d1d5db),避免使用静态PNG图标(需单独准备深色版本)。

技术实现:代码层面的适配

使用CSS变量实现主题切换

通过CSS变量定义深色/浅色模式的颜色值,便于全局统一修改,示例代码:

:root {
  --bg-primary: #ffffff;    /* 浅色模式主背景 */
  --text-primary: #1a1a1a;  /* 浅色模式主文字 */
  --accent: #3b82f6;        /* 强调色 */
}
[data-theme="dark"] {
  --bg-primary: #1a1a1a;
  --text-primary: #f8f9fa;
  --accent: #60a5fa;        /* 深色模式下强调色稍亮 */
}
body {
  background-color: var(--bg-primary);
  color: var(--text-primary);
}

媒体查询(自动适配系统主题)

通过prefers-color-scheme检测系统主题,自动切换深色/浅色模式:

@media (prefers-color-scheme: dark) {
  :root {
    --bg-primary: #1a1a1a;
    --text-primary: #f8f9fa;
  }
}

手动切换主题(用户可控)

通过JavaScript动态修改html标签的data-theme属性,结合本地存储(localStorage)保存用户偏好:

// 切换主题按钮点击事件
document.getElementById("theme-toggle").addEventListener("click", () => {
  const html = document.documentElement;
  const currentTheme = html.getAttribute("data-theme");
  const newTheme = currentTheme === "dark" ? "light" : "dark";
  html.setAttribute("data-theme", newTheme);
  localStorage.setItem("theme", newTheme);
});
// 页面加载时应用保存的主题
const savedTheme = localStorage.getItem("theme") || 
                  (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
document.documentElement.setAttribute("data-theme", savedTheme);

测试与优化

对比度测试

使用工具(如WebAIM Contrast Checker)检查文字与背景的对比度,确保正文文字对比度≥4.5:1,标题文字≥3:1(WCAG 2.1标准)。

多设备测试

在不同屏幕(手机/平板/电脑)、不同亮度环境下测试深色模式的可读性,避免在低亮度下文字过浅,高亮度下背景过深。

性能优化

  • 避免使用大量渐变或复杂阴影,减少渲染负担;
  • 图片优先使用WebP格式,并通过srcset适配不同主题(如深色模式使用低亮度图片)。

相关问答FAQs

Q1:深色模式是否适合所有类型的网站?
A:并非所有网站都适合深色模式,以文字阅读为主的网站(如新闻、博客)、需要展示大量图片的网站(如摄影作品集),深色模式可能影响阅读体验或图片色彩呈现;而对于工具类网站(如代码编辑器、设计软件)、夜间使用场景(如视频平台、社交APP),深色模式能显著提升用户体验,建议根据网站核心功能和用户使用场景决定是否添加深色模式。

Q2:如何确保深色模式与浅色模式切换时过渡流畅?
A:可通过CSS的transition属性为颜色变化添加过渡动画,

body {
  transition: background-color 0.3s ease, color 0.3s ease;
}

这样在切换主题时,背景色和文字颜色会平滑过渡,避免突兀的视觉变化,避免对box-shadowborder等属性添加过渡(可能影响性能),仅对核心颜色(背景、文字、强调色)做过渡处理即可。

分享:
扫描分享到社交APP
上一篇
下一篇