前端组件库——Quasar知识点大全(二)

简介: Quasar框架提供五大核心组件体系:布局(QLayout)、按钮(QBtn)、表单(QInput/QSelect等)、数据展示(QTable)及反馈(QDialog/QNotify);支持双主题(Material/iOS)、深色模式、品牌色定制与断点响应式设计,助力构建高性能、高一致性跨端应用。

三、核心组件体系

3.1 布局组件
布局是应用的骨架,Quasar提供了灵活的布局组件系统。

QLayout布局容器

是Quasar布局系统的根容器,与、、q-drawer等组件配合使用:

<template>
  <q-layout view="hHh Lpr lff">
    <!-- 页眉 -->
    <q-header elevated class="bg-primary text-white">
      <q-toolbar>
        <q-btn flat round dense icon="menu" @click="drawerLeft = !drawerLeft" />
        <q-toolbar-title>Quasar App</q-toolbar-title>
        <q-btn flat round dense icon="more_vert" />
      </q-toolbar>
    </q-header>

    <!-- 左侧抽屉 -->
    <q-drawer v-model="drawerLeft" show-if-above bordered>
      <q-list>
        <q-item clickable v-ripple to="/">
          <q-item-section avatar>
            <q-icon name="home" />
          </q-item-section>
          <q-item-section>首页</q-item-section>
        </q-item>
        <q-item clickable v-ripple to="/about">
          <q-item-section avatar>
            <q-icon name="info" />
          </q-item-section>
          <q-item-section>关于</q-item-section>
        </q-item>
      </q-list>
    </q-drawer>

    <!-- 页面内容 -->
    <q-page-container>
      <router-view />
    </q-page-container>

    <!-- 页脚 -->
    <q-footer class="bg-grey-8 text-white">
      <q-toolbar>
        <q-toolbar-title>© 2024 Quasar App</q-toolbar-title>
      </q-toolbar>
    </q-footer>
  </q-layout>
</template>

布局组件的关键属性:

view属性:定义页眉、页脚、抽屉的排列方式,如"hHh Lpr lff"表示页眉在上、抽屉在左等

show-if-above:抽屉在屏幕足够宽时是否保持打开状态

elevated:是否添加阴影效果
3.2 按钮组件 QBtn
按钮是用户交互的基础,Quasar的按钮组件功能丰富:

<template>
  <!-- 按钮类型 -->
  <q-btn label="默认按钮" />
  <q-btn label="主要按钮" color="primary" />
  <q-btn label="成功按钮" color="positive" />
  <q-btn label="警告按钮" color="warning" />
  <q-btn label="危险按钮" color="negative" />

  <!-- 按钮尺寸 -->
  <q-btn label="超大" size="xl" />
  <q-btn label="大" size="lg" />
  <q-btn label="中" size="md" />
  <q-btn label="小" size="sm" />
  <q-btn label="超小" size="xs" />

  <!-- 图标按钮 -->
  <q-btn icon="home" label="首页" />
  <q-btn icon="favorite" color="pink" round />
  <q-btn icon="arrow_back" flat round />

  <!-- 按钮状态 -->
  <q-btn label="禁用" disable />
  <q-btn label="加载中" loading />

  <!-- 按钮组 -->
  <q-btn-group>
    <q-btn label="选项1" />
    <q-btn label="选项2" />
    <q-btn label="选项3" />
  </q-btn-group>
</template>

3.3 表单组件
Quasar提供了完整的表单组件体系,包括输入框、选择器、复选框、单选框、开关、滑块等。

QInput输入框组件

<template>
  <q-input
    v-model="formData.username"
    label="用户名"
    hint="请输入3-20个字符"
    :rules="[val => !!val || '用户名不能为空']"
    outlined
    clearable
  />

  <q-input
    v-model="formData.password"
    type="password"
    label="密码"
    outlined
    :rules="[
      val => !!val || '密码不能为空',
      val => val.length >= 6 || '密码至少6位'
    ]"
  />

  <q-input
    v-model="formData.bio"
    type="textarea"
    label="个人简介"
    outlined
    rows="3"
  />

  <q-select
    v-model="formData.city"
    :options="cities"
    label="城市"
    outlined
    emit-value
    map-options
  />

  <q-checkbox v-model="formData.agree" label="同意用户协议" />

  <q-radio v-model="formData.gender" val="male" label="男" />
  <q-radio v-model="formData.gender" val="female" label="女" />

  <q-toggle v-model="formData.notifications" label="接收通知" />

  <q-btn label="提交" color="primary" @click="handleSubmit" />
</template>

3.4 数据展示组件
QTable表格组件

Quasar的表格组件功能强大,支持排序、筛选、分页、自定义列、行选择等:

<template>
  <q-table
    title="用户列表"
    :rows="rows"
    :columns="columns"
    row-key="id"
    :pagination="pagination"
    :loading="loading"
    flat
    bordered
  >
    <template #body-cell-status="{ row }">
      <q-badge :color="row.status === 1 ? 'positive' : 'negative'">
        {
  { row.status === 1 ? '启用' : '禁用' }}
      </q-badge>
    </template>

    <template #body-cell-action="{ row }">
      <q-btn flat round dense icon="edit" @click="handleEdit(row)" />
      <q-btn flat round dense icon="delete" color="negative" @click="handleDelete(row)" />
    </template>
  </q-table>
</template>

<script setup>
const columns = [
  { name: 'id', label: 'ID', field: 'id', align: 'left', sortable: true },
  { name: 'name', label: '姓名', field: 'name', sortable: true },
  { name: 'email', label: '邮箱', field: 'email' },
  { name: 'status', label: '状态', field: 'status' },
  { name: 'action', label: '操作', field: 'action' },
];
</script>

3.5 反馈组件
QDialog对话框组件

Quasar的对话框组件支持模态弹窗、确认框、提示框等多种形式:

<template>
  <!-- 基础对话框 -->
  <q-btn label="打开对话框" @click="dialogVisible = true" />

  <q-dialog v-model="dialogVisible">
    <q-card>
      <q-card-section>
        <div class="text-h6">对话框标题</div>
      </q-card-section>
      <q-card-section>
        这是对话框的内容区域。
      </q-card-section>
      <q-card-actions align="right">
        <q-btn flat label="取消" v-close-popup />
        <q-btn flat label="确认" color="primary" v-close-popup />
      </q-card-actions>
    </q-card>
  </q-dialog>

  <!-- 确认对话框插件 -->
  <q-btn label="确认删除" @click="confirmDelete" />

  <!-- 提示插件 -->
  <q-btn label="显示通知" @click="showNotify" />
</template>

<script setup>
import { useQuasar } from 'quasar';

const $q = useQuasar();

function confirmDelete() {
  $q.dialog({
    title: '确认删除',
    message: '确定要删除这条数据吗?此操作不可撤销。',
    cancel: true,
    persistent: true,
  }).onOk(() => {
    $q.notify({ type: 'positive', message: '删除成功' });
  });
}

function showNotify() {
  $q.notify({
    type: 'positive',
    message: '操作成功',
    position: 'top-right',
    timeout: 2000,
  });
}
</script>

四、主题与样式系统

4.1 双主题设计
Quasar内置了两种主题风格,可以在同一套代码中无缝切换:

Material Theme:遵循Google Material Design规范,适合Android风格应用

iOS Theme:遵循Apple Human Interface Guidelines,适合iOS风格应用

这意味着同一个应用在Android设备上可以呈现Material风格,在iOS设备上自动切换为iOS风格,提供原生的用户体验。

4.2 深色模式
Quasar提供了完整的深色模式支持。深色模式是一种补充显示模式,可以减少屏幕发出的蓝光,缓解眼睛疲劳,同时也能降低OLED/AMOLED屏幕的功耗。

工作原理:

当深色模式启用时,页面会被设置一个默认的深色背景

所有Quasar组件会自动添加dark属性,自动适配深色主题

支持自动检测系统主题设置(通过prefers-color-scheme媒体查询)

使用方法:

<template>
  <q-btn @click="toggleDarkMode">
    切换深色模式
  </q-btn>
</template>

<script setup>
import { useQuasar } from 'quasar';

const $q = useQuasar();

function toggleDarkMode() {
  $q.dark.toggle();
}

// 判断当前模式
console.log($q.dark.isActive);
</script>

自定义深色模式样式:

/* 自定义深色模式样式 */
.body--light {
  /* 亮色模式自定义样式 */
}

.body--dark {
  /* 深色模式自定义样式 */
  background: #121212;
}

4.3 品牌色定制
Quasar允许通过配置文件自定义品牌色:

// quasar.config.js
framework: {
  config: {
    brand: {
      primary: '#1976D2',
      secondary: '#26A69A',
      accent: '#9C27B0',
      positive: '#21BA45',
      negative: '#C10015',
      info: '#31CCEC',
      warning: '#F2C037'
    }
  }
}

在组件中使用自定义颜色:

<q-btn color="primary">主要按钮</q-btn>
<q-btn color="secondary">次要按钮</q-btn>
<q-icon name="favorite" color="pink" />

4.4 响应式设计
Quasar的响应式系统基于断点,提供了丰富的响应式工具类:
image.png

<template>
  <!-- 响应式栅格 -->
  <div class="row">
    <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
      响应式列
    </div>
  </div>

  <!-- 响应式显示/隐藏 -->
  <div class="text-center">
    <span class="lt-md">小屏显示</span>
    <span class="gt-sm">大屏显示</span>
  </div>
</template>

来源:
http://yunshizjaa.cn/

相关文章
|
JavaScript 数据可视化 PHP
想要快速开发一个系统?选 BuildAdmin 就对了!
Part1介绍 基于 Vue3.3 + ThinkPHP8 + TypeScript + Vite + Pinia + Element Plus 等流行技术栈的后台管理系统,自适应多端、可视化 CRUD 代码生成、自带 WEB 终端、同时提供 Web、WebNuxt、Server 端、内置全局数据回收站和字段级数据修改保护、自动注册路由、无限子级权限管理等,无需授权即可免费商用,希望能帮助大家实现快速开发。
743 0
|
移动开发 小程序 前端开发
uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
|
Web App开发 存储 关系型数据库
|
24天前
|
人工智能 自然语言处理 机器人
从问答机器人到业务中枢:智能客服场景落地与工程化构建全解析
本文剖析智能客服落地困局,指出问题核心在于“场景选型与构建路径错配”。从四大高价值场景切入,提出知识结构化、人机协同、数据驱动三步工程法,并揭示“开箱即用”等常见认知误区,强调智能客服本质是服务流程的数字化重构。
|
2月前
|
存储 缓存 NoSQL
吃透 Redis 核心原理:内存模型、数据结构与持久化,从根上解决 90% 线上问题
本文深入剖析Redis三大核心基石:内存模型(含内存划分、碎片优化、过期与淘汰策略)、底层数据结构(String/Hash/List/Set/ZSet及扩展结构)和持久化机制(RDB/AOF/混合持久化),助开发者从set/get表层用法进阶到根因级问题解决。
371 2
|
2月前
|
人工智能 Ubuntu 机器人
10分钟上手!OpenClaw阿里云+本地部署保姆级手册 +搭建飞书专属AI机器人
在日常办公中,若能在飞书内直接与AI机器人自然对话、高效协作,将大幅提升工作效率。2026年最新版本OpenClaw(v2026.2.22-2)已内置飞书插件,无需额外安装,支持Claude等主流大模型,通过简单的命令行配置,即可快速搭建专属飞书AI机器人。本文将完整拆解2026年阿里云服务器与本地多系统的OpenClaw部署流程,详细讲解飞书机器人的搭建步骤,所有操作均附带可直接复制的代码命令,新手也能轻松上手。
4466 5
|
机器学习/深度学习 算法 搜索推荐
数据不忽悠:如何用大数据预测未来?
数据不忽悠:如何用大数据预测未来?
633 12