Nanbeige 4.1-3B Streamlit WebUI实战教程:自定义主题色与字体配置指南

张开发
2026/4/6 18:05:08 15 分钟阅读

分享文章

Nanbeige 4.1-3B Streamlit WebUI实战教程:自定义主题色与字体配置指南
Nanbeige 4.1-3B Streamlit WebUI实战教程自定义主题色与字体配置指南1. 引言从默认到专属打造你的个性化聊天界面如果你已经体验过Nanbeige 4.1-3B Streamlit WebUI那个清爽的二次元风格界面可能会想这个界面确实好看但能不能换成我喜欢的颜色能不能用我电脑里安装的特定字体答案是肯定的。今天这篇教程就是带你深入这个WebUI的CSS核心手把手教你如何自定义主题色和字体。你不需要是前端专家甚至不需要懂JavaScript只需要跟着步骤修改几个CSS变量就能让这个聊天界面从“别人的设计”变成“你的专属空间”。我们将从最基础的配色原理讲起到实际修改代码再到预览效果整个过程就像给房间换墙纸一样简单。学完这篇教程你将掌握如何快速定位并修改WebUI的主题颜色背景、气泡、文字。如何为界面更换系统字体或引入网络字体。如何通过简单的CSS调整微调阴影、圆角等细节让界面更符合你的审美。让我们开始吧给你的AI助手换上一套新皮肤。2. 准备工作找到并理解样式文件在动手修改之前我们需要先找到控制整个界面样式的“魔法书”——CSS文件。在这个项目中所有的样式都通过Streamlit的st.markdown函数以内联CSS的形式直接写在app.py这个Python文件里。2.1 定位样式代码用你喜欢的代码编辑器如VSCode、Sublime Text打开app.py文件。使用搜索功能通常是CtrlF或CmdF搜索关键词style。你会找到一大段被包裹在st.markdown(“””style … /style”””, unsafe_allow_htmlTrue)中的CSS代码。这整段style.../style标签内的内容就是我们要修改的目标。它定义了从页面背景、聊天气泡到按钮效果的所有视觉样式。2.2 理解核心CSS结构为了方便修改这个项目的CSS巧妙地使用了“CSS自定义属性”也就是我们常说的CSS变量。你可以把它们理解为样式中的“可调参数”。找到以--开头的那些行例如:root { --primary-bg-color: #f0f8ff; --user-bubble-color: #e3f2fd; --ai-bubble-color: #ffffff; --text-color: #333333; --font-family: ‘Segoe UI‘, system-ui, sans-serif; }这段代码在:root选择器中定义了一系列变量--primary-bg-color: 主背景颜色。--user-bubble-color: 用户聊天气泡的颜色。--ai-bubble-color: AI聊天气泡的颜色。--text-color: 主要文字颜色。--font-family: 字体家族。后续的CSS规则会引用这些变量比如background-color: var(--primary-bg-color);。这意味着我们只需要修改:root中的变量值整个界面的对应部分就会自动更新无需到处查找替换非常方便和安全。3. 实战一自定义主题配色方案现在让我们开始最有趣的部分——换颜色。我们将分步骤修改背景、气泡和文字颜色。3.1 修改背景与全局色调首先我们来改变整个聊天窗口的背景。原始的浅灰蓝波点背景很清新但你可能想要更温暖的米色或者更酷的深色模式。在:root部分找到--primary-bg-color这一行。它的值是一个十六进制颜色码#f0f8ff这是一种非常浅的蓝色。如何选择颜色直接使用颜色码你可以将其替换为任何你喜欢的十六进制颜色码例如米白#f5f5dc浅灰#f0f0f0深色模式背景#1e1e1e使用在线工具如果你对颜色码不熟悉可以打开浏览器搜索“颜色选择器”或“color picker”使用可视化工具选取颜色工具会自动生成对应的#号代码。示例改为浅灰色渐变背景我们可以不止是纯色还能设置渐变。替换--primary-bg-color这行但更推荐在下方新增一个专门用于背景图像的变量避免冲突:root { /* 将原来的背景色变量注释或修改 */ /* --primary-bg-color: #f0f8ff; */ --primary-bg-color: transparent; /* 设为透明让背景图显示 */ --main-bg-image: radial-gradient(circle at 1px 1px, #e0e0e0 1px, transparent 0); /* 灰色圆点网格 */ --main-bg-size: 40px 40px; --main-bg-color: #fafafa; /* 主底色 */ }然后你需要找到设置st.container背景的CSS规则通常在后文将其更新为使用新的渐变变量。3.2 自定义聊天气泡颜色聊天气泡是界面的核心。原始样式是用户气泡为天蓝色#e3f2fdAI气泡为纯白色#ffffff。修改用户气泡颜色在:root中找到--user-bubble-color变量。你可以将其改为任何颜色。例如改为淡紫色#e8dff或改为与深色模式搭配的深蓝色#2a4365。修改AI气泡颜色找到--ai-bubble-color变量。除了纯色你也可以尝试轻微的渐变让气泡更有质感。例如linear-gradient(135deg, #ffffff, #f8f9fa)。示例创建一套协调的配色假设我们想打造一套“暮色紫”主题:root { --primary-bg-color: #f5f0ff; /* 非常浅的紫色背景 */ --user-bubble-color: #d6bcfa; /* 中等紫色 */ --ai-bubble-color: #ffffff; /* AI气泡保持白色形成对比 */ --user-text-color: #1a202c; /* 深色文字确保在紫色气泡上可读 */ --ai-text-color: #2d3748; /* 深灰色文字 */ }重要提示修改气泡颜色后一定要确保气泡内文字颜色--text-color或专门为气泡设置的文字颜色变量有足够的对比度保证可读性。如果气泡颜色很深文字就需要是浅色。3.3 调整细节与阴影颜色改完后我们可以微调一些细节让界面更精致。阴影颜色找到控制气泡阴影的box-shadow属性。原始样式可能是rgba(0, 0, 0, 0.05)。你可以调整颜色和透明度来匹配新主题。例如在深色主题下阴影可以更明显rgba(0, 0, 0, 0.15)。边框与圆角找到border-radius属性来调整气泡圆角的大小。数值越大气泡越“圆润”。border属性可以给气泡添加细细的边框例如border: 1px solid var(--user-bubble-color)可以让用户气泡有一个同色系边框。4. 实战二自定义字体配置字体是界面风格的另一个灵魂。Streamlit应用默认使用系统字体但我们可以指定更具体的字体。4.1 使用系统或安全字体在:root中找到--font-family变量。它的值是一组字体名称用逗号分隔。浏览器会从左到右尝试加载如果第一个字体在用户电脑上不存在就尝试第二个以此类推。‘Segoe UI‘: 这是Windows系统的默认UI字体清晰易读。system-ui: 这是一个通用值代表使用当前操作系统的默认UI字体。sans-serif: 无衬线字体族是最后的回退方案。如何修改你可以调整这个顺序或者添加你喜欢的、在大多数系统上都存在的“安全字体”。例如很多设计师喜欢用--font-family: ‘Inter‘, -apple-system, BlinkMacSystemFont, ‘Segoe UI‘, Roboto, Oxygen, Ubuntu, sans-serif;注意这里假设‘Inter‘是下一步要引入的网络字体如果暂不引入应将其移除或放在已安装的字体后面4.2 引入网络字体如Google Fonts如果你想使用一些特别漂亮的字体比如圆润的Nunito、优雅的Playfair Display或者科技感的Roboto Mono可以通过网络字体服务引入。步骤选择字体访问 Google Fonts。获取链接选择你喜欢的字体例如Nunito选择字重如300, 400, 600然后网站会生成一段link代码。注入HTML头我们需要在Streamlit的style标签之前通过st.markdown将字体链接插入到页面的head中。在app.py里找到写入CSS的那段st.markdown在它前面添加# 在注入CSS的st.markdown之前添加字体链接 st.markdown( ‘link href“https://fonts.googleapis.com/css2?familyNunito:wght300;400;600displayswap” rel“stylesheet”‘, unsafe_allow_htmlTrue )更新CSS变量修改:root中的--font-family变量将‘Nunito‘放在最前面。:root { --font-family: ‘Nunito‘, ‘Segoe UI‘, system-ui, sans-serif; }现在你的聊天界面就会使用Nunito字体了网络字体能让你的UI在不同设备上拥有一致的、独特的字体表现。5. 效果预览与调试技巧修改完成后保存app.py文件。Streamlit开发服务器通常支持热重载你会立即在浏览器中看到变化。如果没有请手动刷新页面。5.1 常见问题与排查颜色没生效检查CSS变量名是否拼写正确是否在:root中定义并且在后续规则中通过var(--变量名)正确引用。浏览器的开发者工具F12打开是调试利器。在“元素Elements”面板中可以查看具体元素应用的CSS检查你的新样式是否被覆盖。字体没生效检查Google Fonts的链接是否正确网络是否通畅。在开发者工具的“控制台Console”查看是否有加载字体资源的错误。确保--font-family变量中你引入的字体名称用引号括起来且拼写与Google Fonts提供的完全一致。布局错乱如果修改了气泡的padding、margin或border可能导致布局轻微错位。微调这些值即可。利用开发者工具的“样式Styles”面板可以实时修改数值并预览效果找到最佳值后再更新到代码中。5.2 创建多套主题方案进阶如果你想让WebUI能在几套主题间切换可以定义一个JavaScript函数来动态修改:root的CSS变量。但这需要更复杂的Streamlit组件交互。一个更简单的折中方案是在app.py中定义多套CSS变量块然后通过Streamlit的selectbox组件让用户选择再根据选择用Python动态组合并注入不同的CSS字符串。这可以作为你下一步探索的方向。6. 总结通过这篇教程你已经掌握了定制Nanbeige 4.1-3B Streamlit WebUI视觉风格的核心技能。我们完成了从识别CSS结构到修改主题配色再到更换字体的全过程。关键点回顾样式代码位于app.py文件的style标签内通过CSS变量如--primary-bg-color集中管理。修改主题色主要是调整:root中定义的颜色变量值并注意文字与背景的对比度。更换字体可以通过调整--font-family变量使用系统字体或通过引入Google Fonts等网络字体服务来实现。浏览器的开发者工具是调试和预览样式修改的必备利器。现在这个极简清爽的聊天界面已经打上了你的个人烙印。无论是为了更好的视觉体验还是为了匹配你的桌面环境个性化的UI都能让你在与AI对话时心情更加愉悦。动手试试创造出独一无二的专属界面吧获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章