跨平台与移动端 UI · 新资源

Quasar 设计系统.

一个原生的 Quasar 引导式工作流,采用实际的品牌与间距数值、QForm 验证、三步简报构建器、单选格式选项,以及实时的 45 分钟议程。

OpenDesign 指南9 个章节29 个参考条目原始应用指南
01

Quasar 设计系统界面预览

为活动命名、选择形式、调整人数,并保存一份明确标注为本地的简报。

引导式活动简报打开完整示例
Quasar 2.34.0 搭配 Vue 3,并通过 @quasar/extras 2.1.0 在本地打包 Material Icons。· 实现参考
02

Quasar 设计系统设计参考

Quasar 2.34.0 搭配 Vue 3。颜色使用实际的 --q-* 运行时变量;间距和排版参考值来自其 Sass 默认值。应用标题、日程插图和系统字体覆盖均为原创。Material Icons 通过 @quasar/extras 2.1.0 在本地提供。

默认 Quasar 品牌角色

来源
名称 / 规则值 / 配置用途
--q-primary#1976D2 步进器状态、主要操作和滑块。
--q-secondary#26A69A 次要角色。
--q-accent#9C27B0 强调色角色。
--q-positive#21BA45 正向反馈角色。
--q-negative#C10015 验证/错误角色。
--q-info#31CCEC 信息角色。
--q-warning#F2C037 警告角色。

原生间距辅助类

来源
名称 / 规则值 / 配置用途
$space-base16pxSass 基础间距单位。
q-pa-xs / q-ma-xs4px四分之一基础间距。
q-pa-sm / q-ma-sm8px二分之一基础间距。
q-pa-md / q-ma-md16px基础间距。
q-pa-lg / q-ma-lg24px一个半基础间距。
q-pa-xl / q-ma-xl48px三倍基础间距。
q-mt-md16px top margin用于远程参与切换开关上方。
q-ml-sm8px left margin用于导航操作之间。

原生排版类层级

来源
名称 / 规则值 / 配置用途
text-h42.125rem / 2.5rem, weight 400默认的大标题工具类。
text-h51.5rem / 2rem, weight 400默认的区块标题工具类。
text-h61.25rem / 2rem, weight 500默认的小标题工具类。
text-body11rem / 1.5rem, weight 400默认的大号正文工具类。
text-body20.875rem / 1.25rem, weight 400默认的紧凑正文工具类。
Application fontsystem-ui, sans-serif明确的原创覆盖;此处不会下载 Quasar 默认的 Roboto 字体系列。

断点与明确的应用布局

来源
名称 / 规则值 / 配置用途
sm minimum600px原生 Quasar 断点起始值。
md minimum1024px原生 Quasar 断点起始值。
lg minimum1440px原生 Quasar 断点起始值。
xl minimum1920px原生 Quasar 断点起始值。
Application stack breakpoint740px原创的双栏转纵向堆叠布局断点。
Page title34px / 1.15; 29px mobile原创的文字层级。
Page gap / padding24px / 32px原创的整体布局。
Participants slidermin 2, max 16, step 1实际的 QSlider 属性;并非仅用于视觉展示的范围滑块。
03

Quasar 设计系统完整指南

实用指南,介绍如何为真实界面选择、应用和评审此系统。

DESIGN-quasar.md

完整指导、实现起点和源代码链接。

下载指南

Quasar 设计系统组件可构建完整的引导式任务

Quasar 组件可构建完整的引导式任务流程

Quasar 提供 Vue 组件、样式辅助工具和应用框架。本示例直接在 Vue 3 入口中使用这些组件:原生步进器协调表单、单选组、滑块、切换开关和最终确认。仅为展示这些控件,无需使用全屏 QLayout 外壳。

摘自本 OpenDesign 指南

本次会话的任务说明有明确目的:选择一种工作形式和分组设置,同时查看相应议程。组件库提供控件和导航状态;三个原创议程及其四十五分钟的总时长属于应用内容。这里并未暗示存在排期服务。

阅读配套规范

Quasar 设计系统的品牌变量与命名调色板类并存

品牌变量与命名调色板类并存

在已验证的默认样式表中,运行时 --q-primary 的值为 #1976D2。QStepper、QBtn 和 QSlider 使用 color="primary",因此其主要样式遵循这一角色。Secondary、accent、positive、negative、info 和 warning 保持为彼此独立的命名角色,而不是为每个控件临时挑选颜色。

保存成功提示使用命名的绿色调色板工具类,分别设置浅色界面表面和深色文字。明确的提示语也传达了成功状态,而不只依赖颜色。蓝色环形插图是原创装饰图,并对辅助技术隐藏;它不表示额外的表单状态。

阅读配套规范

Quasar 设计系统:按字面理解 Quasar 间距后缀

按字面理解 Quasar 间距后缀

Quasar 间距类由类型、方向和尺寸组成。q-mt-md 表示使用中等值的上边距;q-ml-sm 表示增加小尺寸的左边距。默认基准值为十六像素,其中 xs 为四、sm 为八、md 为十六、lg 为二十四、xl 为四十八。跳到 xl 相当于三个基准单位,而不是猜测为三十二像素。

页面在控件中使用这些原生辅助类,并使用原创的 CSS 构建更宽阔的版面。默认排版工具类包括字号为 0.875rem 的 text-body2 和字号为 1.5rem 的 text-h5。原创页面标题为三十四像素,页面明确将字体切换为 system-ui,同时保留 Material Icons 作为原生组件图标。

阅读配套规范

Quasar 设计系统:步进器本身不会验证表单

步进器本身不会验证表单

QStepper 保存当前步骤编号,并包含三个命名的 QStep 区段。只有导航离开某一步后,该步骤才会标记为已完成。两个布局都使用垂直方向,在手机上也能清晰呈现步骤顺序,无需挤下三个水平步骤标题。

第一个“继续”操作属于 QForm。其处理程序会等待 validate 完成后,再将步骤设为第二步。示例未启用标题导航,因此点击后续标题无法绕过验证。返回操作会有意保留标题、形式和分组值,因为这些模型位于父级 SFC 中,而不在卸载后会消失的字段内部。

阅读配套规范

Quasar 设计系统:QForm 使用内部规则,而非所有原生约束

QForm 使用内部规则,而非所有原生约束

标题 QInput 带有内部规则数组,会去除空白并要求至少包含五个有效字符。QForm.validate 会执行这条规则。仅设置原生 required 或 email 属性,不能替代调用 validate 时所需的规则,因此示例直接写明实际约束。

无效提交会显示字段错误,并让用户停留在第一步。修改输入内容后,用户可以点击同一个“继续”按钮前往下一步。六十字符上限和可见计数器有助于标题符合任务说明,行内规则则解释了为何标题过短或为空时无法继续。

  1. 提交标题为空的第一步,查看验证消息。
  2. 输入有效标题并选择会话形式。
  3. 点击“继续”,再点击“返回”,确认输入值在导航过程中仍会保留。

阅读配套规范

Quasar 设计系统:单选框、滑块和切换开关分别表示不同的决策

单选框、滑块和切换开关各自代表不同的决策

QOptionGroup 用于在设计评审、绘图会议和研究综合分析中选择一项。更改选项后,会切换到相应的议程数组。议程条目数量是固定的示例内容,因此更改形式会更新相应活动,同时保持总时长为四十五分钟。

QSlider 用于控制二至十六人的整数参与人数。QToggle 用于记录是否包含远程参与者。相邻提示会根据选择,在共用一张桌子与共用白板并进行远程引导之间切换。这些控件会改变屏幕上显示的任务说明,而非彼此无关的演示小部件。

阅读配套规范

Quasar 设计系统:最后一步会将本地结果锁定,直至重置

最后一步会将本地结果锁定,直至重置

复核步骤会再次显示去除空白后的标题、形式、参与人数和参与方式。保存操作会更新本地的已保存标记、禁用“保存”和“返回”,并显示注明小组人数的提示横幅。“开始另一项”会清空所有模型并返回第一步,让示例完整演示一个可观察的操作循环。

此处不会向日历或消息传递 API 发出请求。横幅明确说明未发送邀请,复核文案也说明保存不会创建日程。如要声称已完成排期,生产级排期系统还需要日期、时区、收件人以及真实的后端响应。

阅读配套规范

Quasar 设计系统:使用原生组件语义并进行真实焦点测试

使用原生组件语义并进行真实焦点测试

原生控件提供单选框、滑块和开关语义。滑块带有“参与人数”标签,标题字段带有可见标签和字段级验证消息。步进器会标明当前步骤,并使用步骤标题标注其内容。示例不会将装饰图纳入辅助技术的阅读顺序。

本地测试使用键盘调整滑块、切换远程参与状态、完成验证,并保存了一份包含九人的混合形式会议简报。测试还检查了窄屏布局。静态的步骤条图片无法体现这些关联,也无法证明验证关卡已接通。

  • 保持当前步骤与其内容标题一致。
  • 先按规则完成验证,再更改步骤模型。
  • 使用状态横幅准确描述本地操作结果。

阅读配套规范

Quasar 设计系统包含 Quasar CSS 及其所需的图标集

引入 Quasar CSS 及其所需的图标集

入口文件导入 Quasar 并注册其插件,加载 quasar/dist/quasar.css,并从 @quasar/extras 导入 Material Icons 样式表。SFC 会导入所用组件。本地构建包内嵌图标字体文件,因此无需请求远程字体,勾选标记和编辑指示图标也能正常显示。

原始样式表遵循 Quasar CSS,并将文档高度重置为随内容自适应,以便嵌入使用。它不会全局改写所有原生组件,也不会凭空创建替代性的间距比例。完整的 Quasar CLI 或 Vite 插件应用可以使用标准构建集成;此完整示例则在小型 Vue 入口中展示相同组件。

阅读配套规范

Quasar 设计系统组件示例

完整的原生步骤条工作流

QStepper/QStep、QForm/QInput、QOptionGroup、QSlider、QToggle 和派生的议程。

vue
<script setup>
import {ref,computed} from 'vue';import {QStepper,QStep,QStepperNavigation,QForm,QInput,QOptionGroup,QSlider,QToggle,QBtn,QCard,QCardSection,QBadge,QBanner} from 'quasar';
const step=ref(1),title=ref(''),format=ref('critique'),people=ref(8),remote=ref(false),saved=ref(false),form=ref();const formats=[{label:'Design critique',value:'critique'},{label:'Sketching session',value:'sketch'},{label:'Research synthesis',value:'research'}];const names={critique:'Design critique',sketch:'Sketching session',research:'Research synthesis'};const agenda=computed(()=>format.value==='critique'?[['10 min','Set the question'],['25 min','Review the work'],['10 min','Choose next actions']]:format.value==='sketch'?[['5 min','Frame the prompt'],['25 min','Sketch independently'],['15 min','Compare directions']]:[['10 min','Sort observations'],['20 min','Name the patterns'],['15 min','Record open questions']]);async function next(){if(await form.value.validate())step.value=2;}function reset(){step.value=1;title.value='';format.value='critique';people.value=8;remote.value=false;saved.value=false;}
</script>
<template><main class="session-builder"><header><div><p class="eyebrow">QUASAR · GUIDED WORKFLOW</p><h1>Make time for better work.</h1><p class="intro">Build a small session brief with a native stepper, validated fields and a live agenda.</p></div><QBadge color="primary" label="45 MINUTES"/></header><div class="builder-grid"><QStepper v-model="step" vertical color="primary" animated flat bordered class="session-stepper"><QStep :name="1" prefix="1" title="Name the session" caption="Purpose and format" :done="step>1"><QForm ref="form" @submit="next"><QInput v-model="title" outlined label="Session title" maxlength="60" counter lazy-rules :rules="[v=>v.trim().length>=5||'Use at least five non-space characters.']"/><p class="field-label">Session format</p><QOptionGroup v-model="format" :options="formats" color="primary"/><QStepperNavigation><QBtn color="primary" label="Continue" type="submit" no-caps/></QStepperNavigation></QForm></QStep><QStep :name="2" prefix="2" title="Shape the group" caption="People and participation" :done="step>2"><p class="field-label">Participants: <strong>{{people}}</strong></p><QSlider v-model="people" :min="2" :max="16" :step="1" label color="primary" aria-label="Participants"/><QToggle v-model="remote" label="Include remote participants" color="primary" class="q-mt-md"/><p class="hint">{{remote?'Reserve a shared board and a facilitator for the remote group.':'Use one shared table and keep the work visible to everyone.'}}</p><QStepperNavigation><QBtn color="primary" label="Review brief" no-caps @click="step=3"/><QBtn flat label="Back" no-caps class="q-ml-sm" @click="step=1"/></QStepperNavigation></QStep><QStep :name="3" prefix="3" title="Review the brief" caption="Save a local snapshot"><p class="review-title">{{title.trim()}}</p><p>{{names[format]}} · {{people}} people · {{remote?'Hybrid':'In person'}}</p><p class="hint">The agenda totals 45 minutes. Saving does not create a calendar event or invite anyone.</p><QStepperNavigation><QBtn color="primary" :label="saved?'Saved locally':'Save local brief'" :disable="saved" no-caps @click="saved=true"/><QBtn flat label="Back" no-caps class="q-ml-sm" :disable="saved" @click="step=2"/></QStepperNavigation><QBanner v-if="saved" rounded class="bg-green-1 text-green-10 q-mt-lg" role="status">Local brief saved for {{people}} people. No invitation was sent.<template #action><QBtn flat label="Start another" no-caps @click="reset"/></template></QBanner></QStep></QStepper><QCard flat bordered class="agenda-card"><QCardSection><p class="eyebrow">LIVE AGENDA</p><h2>{{title.trim()||'Your next working session'}}</h2><p class="agenda-format">{{names[format]}}</p><div class="time-art" aria-hidden="true"><i></i><i></i><i></i><span>45′</span></div><ol class="agenda-list"><li v-for="row in agenda" :key="row[1]"><span>{{row[0]}}</span><strong>{{row[1]}}</strong></li></ol><div class="session-meta"><span>{{people}} participants</span><span>{{remote?'Hybrid setup':'One shared table'}}</span></div><p class="local-note">Original sample agenda. Quasar supplies the form and navigation components.</p></QCardSection></QCard></div></main></template>

代码参考

  • 首次切换前会等待 QForm.validate() 完成。
  • 标题规则会检查去除首尾空白后的有效长度。
  • 审核步骤不会创建日历事件。

原始议程构成

响应式布局和围绕原生 Quasar 组件设计的装饰性时间插图。

css
html,body{height:auto;min-height:0}body{background:#f3f5f8;font-family:system-ui,sans-serif}.session-builder{max-width:1120px;padding:32px;margin:auto}header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:32px}.eyebrow{font-size:11px;font-weight:650;letter-spacing:.13em;color:#5c6c80}h1{font-size:34px;line-height:1.15;font-weight:650;margin:14px 0;letter-spacing:-.02em}.intro{font-size:15px;line-height:1.7;max-width:610px;color:#5c6c80}.builder-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start}.field-label{font-size:14px;font-weight:600;margin:20px 0 8px}.hint,.local-note{font-size:12px;line-height:1.7;color:#647187}.review-title{font-size:20px;font-weight:650;line-height:1.4}.agenda-card .q-card__section{padding:24px}.agenda-card h2{font-size:25px;line-height:1.25;font-weight:600;margin:16px 0 8px;letter-spacing:0}.agenda-format{font-size:14px;color:#647187}.time-art{height:140px;background:#e6eef8;border-radius:6px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;margin:24px 0}.time-art i{position:absolute;width:130px;height:130px;border:18px solid #8db8e8;border-radius:50%;left:10%;top:45%}.time-art i:nth-child(2){border-color:#c1d7ef;width:170px;height:170px;left:35%;top:-30%}.time-art i:nth-child(3){border-color:#d8e5f5;width:150px;height:150px;left:65%;top:40%}.time-art span{font-size:45px;font-weight:700;position:relative;color:#175a9e}.agenda-list{list-style:none;padding:0;margin:0}.agenda-list li{display:grid;grid-template-columns:65px 1fr;gap:16px;border-bottom:1px solid #dfe5ec;padding:16px 0;font-size:14px}.agenda-list span{color:#657991;font-size:12px}.agenda-list strong{font-weight:600}.session-meta{display:flex;justify-content:space-between;gap:12px;margin:24px 0;font-size:12px;color:#5c6c80}.local-note{margin-bottom:0}@media(max-width:740px){.session-builder{padding:24px 14px}header{flex-direction:column;gap:4px}h1{font-size:29px}.builder-grid{grid-template-columns:1fr}.session-stepper .q-stepper__step-inner{padding-right:18px}.agenda-card .q-card__section{padding:22px}}

代码参考

  • 页面使用随内容自适应的高度,以便嵌入。
  • 明确覆盖应用字体。
04

Quasar 设计系统 Agent 设置

实现起点

已在 Vue 3 环境中验证 Quasar 2.34.0 和 @quasar/extras 2.1.0。默认步骤指示器需要使用本地图标字体资源。

javascript
// Create the project first:
// npm create vite@latest quasar-specimen -- --template vue
// cd quasar-specimen && npm install
// In a Vite Vue 3 project:
// npm install [email protected] @quasar/[email protected]
// Save the complete SFC as App.vue and layout as style.css.
import {createApp} from 'vue';
import {Quasar} from 'quasar';
import 'quasar/dist/quasar.css';
import '@quasar/extras/material-icons/material-icons.css';
import './style.css';
import App from './App.vue';
createApp(App).use(Quasar, {plugins: {}}).mount('#app');
// index.html contains <div id="app"></div>.
// Components are explicitly imported in App.vue; no auto-import plugin is required here.
// Keep the template index.html and replace its entry with the code above.
// npm run dev

适用于你项目的提示词

Agent 提示词
使用 Quasar 2.34.0 和提供的引导式会议简报。保留 QStepper、QForm 和 QInput 验证、会议形式单选控件、参与人数滑块以及议程开关。前进前等待表单验证,返回时保留已输入的值,并使用这些相同的值派生审核摘要。保存操作会记录一份本地简报;后续更改会使其保存状态失效。包含 Quasar 样式表和本地 Material Icons 设置,并确保窄屏布局易于使用,不要凭空添加派遣或预订服务。
05

Quasar 设计系统来源与范围

Quasar 2.34.0,搭配原生组件和本地 Material Icons。议程和视觉插图均为示例内容。保存操作不会创建日历事件,也不会发送邀请。