For AI agents: the complete documentation index is available at https://a3s-lab.github.io/UI/v0.4.1/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/UI/v0.4.1/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/UI/v0.4.1/components/drawer.md.

抽屉

抽屉从页面边缘呈现补充任务或详情,在保留原页面上下文的同时提供更大的临时工作区。

实时预览

调整每日目标

设置每天希望完成的活动目标。

350
千卡/天

用法

引入 CSS

导入 Tailwind 和一个完整的 A3S UI 样式包。

@import "tailwindcss";
@import "@a3s-lab/ui/a3s.css";

或者只导入基本CSS、抽屉组件CSS和一个样式包。

@import "tailwindcss";
@import "@a3s-lab/ui/base.css";
@import "@a3s-lab/ui/components/drawer.css";
@import "@a3s-lab/ui/styles/a3s.css";

使用CDN或批量程序导入?请参见安装页。

引入 JavaScript

复制或提供完整的 A3S UI JavaScript 包。

<script src="/assets/js/all.min.js" defer></script>

或者复制或提供A3S UI运行时和抽屉脚本。

<script src="/assets/js/runtime.min.js" defer></script>
<script src="/assets/js/drawer.min.js" defer></script>

使用CDN或批量程序导入?请参见安装页。

添加抽屉 HTML

A3S UI 使用原生 <dialog> 实现抽屉,让浏览器直接负责模态语义、焦点约束和背景内容的不可交互状态。抽屉脚本补充了安全的遮罩点击关闭,并等待退出动效结束后再调用原生关闭方法。该组件不模拟拖动手势、吸附点或拖动手柄。

<button type="button" class="btn" data-variant="outline" onclick="document.getElementById('demo-drawer').showModal()">打开抽屉</button>
<dialog id="demo-drawer" class="drawer" aria-labelledby="demo-drawer-title" aria-describedby="demo-drawer-description">
  <article>
    <header class="mx-auto w-full max-w-sm">
      <h2 id="demo-drawer-title">调整每日目标</h2>
      <p id="demo-drawer-description">设置每天希望完成的活动目标。</p>
    </header>
    <section class="px-4">
      <div class="mx-auto w-full max-w-sm">
        <div class="flex items-center justify-center gap-6">
          <button type="button" class="btn rounded-full" data-variant="outline" data-size="icon-sm" aria-label="减少">...</button>
          <div class="text-center">
            <div class="text-7xl font-bold">350</div>
            <div class="text-muted-foreground text-xs">千卡/天</div>
          </div>
          <button type="button" class="btn rounded-full" data-variant="outline" data-size="icon-sm" aria-label="增加">...</button>
        </div>
      </div>
    </section>
    <footer class="mx-auto w-full max-w-sm">
      <button type="button" class="btn" onclick="this.closest('dialog').close()">保存</button>
      <button type="button" class="btn" data-variant="outline" onclick="this.closest('dialog').close()">取消</button>
    </footer>
  </article>
</dialog>

HTML 结构

<button type="button" onclick="drawer.showModal()"> 可选
触发按钮。A3S UI 直接使用原生 HTMLDialogElement.showModal() 方法。
<dialog class="drawer" data-side="bottom|top|left|right">

原生模态抽屉。省略 data-side 时从底部打开;存在标题和说明时添加 aria-labelledby 与 aria-describedby。JavaScript 会添加 data-drawer-initialized 标记并管理带动效的关闭过程。

<article>

抽屉内容表面。

<header> 可选
包含标题与可选说明的抽屉标题区。
<section> 可选
可滚动的主体内容区。
<footer> 可选
位于主体之后的操作区。

JavaScript API

React 的 useDrawer 与 Vue 的同名 composable 暴露原生 showModal() 与增强后的 close(returnValue)。close() 会等待不超过 220ms 的退出过渡,并在减少动效环境中立即完成。

示例

侧面

使用data-side设置视口一侧。可用值为 top、right、bottom 和 left。

实时预览

调整每日目标

设置每天希望完成的活动目标。

每日完成任务
8 项
专注时长
90 分钟
提醒时间
工作日 17:30

调整每日目标

设置每天希望完成的活动目标。

本周进度
已完成 31 / 40 项任务
连续达标
4 个工作日
调整建议
根据最近两周节奏,将目标保持在 8 项。

调整每日目标

设置每天希望完成的活动目标。

任务目标
每天 8 项
专注目标
每天 90 分钟
休息日
周六、周日

调整每日目标

设置每天希望完成的活动目标。

计算方式
仅统计已完成且通过验收的任务。
跨日规则
未完成任务不会自动计入第二天。
生效时间
保存后立即更新今天的进度。

可滚动内容

当抽屉主体滚动时,保持操作可见。

实时预览

调整每日目标

设置每天希望完成的活动目标。

任务目标

每天完成 8 项经过验收的任务。草稿、已取消任务和失败的自动化不会计入。

专注目标

累计 90 分钟专注时间。少于 5 分钟的片段会被忽略,避免误触影响统计。

工作日

目标仅在周一至周五生效,法定节假日与手动标记的休息日不会中断连续记录。

提醒

工作日 17:30 提醒一次;达到目标或当天已设为休息日时不再发送。

统计范围

个人任务和当前团队项目都会纳入统计,归档项目中的历史任务不会被重新计算。

生效方式

保存后立即更新今日进度,过往日期保持原始记录,方便比较目标调整前后的节奏。

RTL

抽屉侧面是物理视口侧面。内容间距和文本对齐遵循文档方向。

实时预览

نقل الهدف

حدد هدف نشاطك اليومي.

٣٥٠
سعرات حرارية/يوم