vue3实现支持一次性周期性规律任务的待办事项todolists 代码

代码语言:html

所属分类:其他

代码描述:vue3实现支持一次性周期性规律任务的待办事项todolists 代码:主要功能: 添加任务 任务内容输入 三种分类:工作、学习、生活 一次性任务:选择具体日期 周期性任务:设置开始日期和重复周期 任务展示 今日任务视图(自动筛选当天的任务) 全部任务视图 按分类筛选 任务管理 完成人任务 删除任务 数据持久化(localStorage)

代码标签: vue3 支持 一次性 周期性 规律 任务 待办 事项 todolists 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8" />
  <meta
    name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
  />
  <title>待办事项 TodoLists - Vue CDN 版</title>
  <style>
    :root{
      --bg:#0f172a;
      --panel:#111827;
      --muted:#6b7280;
      --text:#e5e7eb;
      --primary:#4f46e5;
      --primary-2:#6366f1;
      --danger:#ef4444;
      --success:#10b981;
      --warning:#f59e0b;
      --border:#1f2937;
      --chip:#334155;
    }
    *{ box-sizing: border-box; }
    body{
      margin:0;
      font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
      background:linear-gradient(180deg, #0b1020, #0f172a);
      color:var(--text);
    }
    .container{
      max-width: 940px;
      margin: 24px auto 80px;
      padding: 0 16px;
    }
    header{
      display:flex;
      align-items:center;
      gap:12px;
      margin-bottom: 16px;
    }
    header h1{
      font-size: 24px;
      margin: 0;
      letter-spacing: .5px;
    }
    header .today{
      margin-left:auto;
      color: var(--muted);
      font-size: 14px;
    }

    .panel{
      background: rgba(17, 24, 39, .7);
      backdrop-filter: blur(10px);
      border:1px solid var(--border);
      border-radius: 12px;
      padding: 16px;
      margin-top: 16px;
      box-shadow: 0 10px 30px rgba(0,0,0,.25);
    }
    .panel h2{
      margin: 0 0 12px;
      font-size: 18px;
    }

    .form-grid{
      display:grid;
      grid-template-columns: 2fr 1fr 2fr 2fr 1.2fr auto;
      gap: 10px;
    }
    @media (max-width: 920px){
      .form-grid{
        grid-template-columns: 1fr 1fr;
      }
    }
    .field{
      display:flex;
      flex-direction: column;
      gap:6px;
    }
    label{
      font-size: 12px;
      color: var(--muted);
    }
    input[type="text"], input[type="number"], input[type="date"], select{
      background: #0b1220;
      color:var(--text);
      border: 1px solid var(--border);
      padding: 10px 12px;
      border-radius: 8px;
      outline: none;
    }
    input[type="number"]::-webkit-outer-spin-button,
    input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
    .type-switch{
      display:flex;
      gap:10px;
      align-items:center;
      background: #0b1220;
      border: 1px solid var(--border);
      border-radius: 8px;
      padding: 8px 10px;
    }
    .type-switch label{
      color:var(--text);
      font-size: 14px;
    }

    .btn{
      border: none;
      border-radius: 10px;
      padding: 10px 14px;
      font-weight: 600;
      cursor: pointer;
      transition: .15s transform, .15s opacity, .15s box-shadow;
      display:inline-flex;
      align-items:center;
      gap:8px;
      white-space: nowrap;
    }
    .btn:active{ transform: translateY(1px); }
    .btn-primary{
      background: linear-gradient(135deg, var(--primary), var(--primary-2));
      color:white;
      box-shadow: 0 6px 16px rgba(79,70,229,.35);
    }
    .btn-ghost{
      background: transparent;
      border:1px solid var(--border);
      color:var(--text);
    }
    .btn-danger{
      background: rgba(239, 68, 68, .14);
      color:#fecaca;
      border: 1px solid rgba(239, 68, 68, .35);
    }
    .btn-success{
      background: rgba(16,185,129,.14);
      color:#bbf7d0;
      border: 1px solid rgba(16,185,129,.35);
    }
    .btn-sm{ padding: 6px 10px; border-radius: 8px; font-size: 13px; }

    .toolbar{
      display:flex;
      gap:10px;
      align-items:center;
      justify-content: space-between;
      margin-bottom: 8px;
    }
    .filters{
      display:flex;
      gap:10px;
      align-items:center;
    }

    .list{
      display:flex;
      flex-direction: column;
      gap: 8px;
    }
    .item{
      display:grid;
      grid-template-columns: auto 1fr auto auto;
      align-items:center;
      gap: 12px;
      background: #0b1220;
      border:1px solid var(--border);
      pad.........完整代码请登录后点击上方下载按钮下载查看

网友评论0