使用 BeerCSS 与 Svelte 快速开发应用

使用 BeerCSS 与 Svelte 快速开发 Material Design 应用

一、项目搭建与基础配置

1. 创建 Svelte 项目

通过以下命令初始化 Vite + Svelte 项目:

npm create vite@latest beercss-svelte-demo --template svelte
cd beercss-svelte-demo
npm install

2. 集成 Beer CSS

index.html 中引入 Beer CSS 的 CDN 资源:

<head>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/beercss@latest/dist/beercss.min.css">
</head>

二、基础组件开发示例

示例 1:Material Design 风格按钮

<script>
  let count = 0;
  function increment() {
    count += 1;
  }
</script>

<button on:click={increment} class="filled primary">
  点击次数:{count}
</button>

技术要点

  • 使用 filled 类实现填充效果
  • primary 类定义主色调
  • Svelte 响应式变量自动更新 UI

示例 2:动态主题切换

<script>
  import { writable } from 'svelte/store';
  const theme = writable('light');

  function toggleTheme() {
    theme.update(t => (t === 'light' ? 'dark' : 'light'));
  }
</script>

<body class={$theme}>
  <button on:click={toggleTheme} class="outlined">
    切换主题(当前:{$theme})
  </button>
</body>

实现原理

  • 通过 Svelte Store 管理全局主题状态
  • Beer CSS 的 dark/light 类控制配色方案

示例 3:表单输入组件

<script>
  let name = '';
</script>

<div class="field">
  <label>用户名</label>
  <input type="text" bind:value={name} class="round">
  <small>输入内容:{name}</small>
</div>

功能说明

  • field 类实现 Material 输入框布局
  • round 类添加圆角边框
  • bind:value 实现双向数据绑定

三、综合应用:待办清单

<script>
  import { writable } from 'svelte/store';
  let newTodo = '';
  const todos = writable([]);

  function addTodo() {
    if (newTodo.trim()) {
      todos.update(t => [...t, { text: newTodo, done: false }]);
      newTodo = '';
    }
  }
</script>

<div class="responsive-grid">
  <div class="card">
    <input type="text" bind:value={newTodo} placeholder="添加待办" class="border">
    <button on:click={addTodo} class="filled secondary">添加</button>
  </div>

  {#each $todos as todo, index}
    <div class="card">
      <label>
        <input type="checkbox" bind:checked={todo.done}>
        <span class:done={todo.done}>{todo.text}</span>
      </label>
    </div>
  {/each}
</div>

<style>
  .done { text-decoration: line-through; }
</style>

核心功能

  • 使用 responsive-grid 实现响应式布局
  • card 类创建 Material 卡片效果
  • Svelte 的 {#each} 实现列表渲染

四、进阶开发技巧

1. 自定义主题样式

在全局 CSS 中覆盖变量:

:root {
  --primary-color: #2196F3;
  --card-padding: 1.5rem;
}

2. 集成交互动画

{#if visible}
  <div transition:fly={{ y: 50 }} class="modal">
    动态弹窗内容
  </div>
{/if}

五、常见问题排查

  1. 样式不生效

    • 检查 Beer CSS 的 CDN 是否正确加载
    • 确认没有其他 CSS 框架冲突
  2. 移动端适配问题

    • 添加 viewport meta 标签
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    

参考文献

  1. Beer CSS 官方文档
  2. Svelte 官方教程
  3. Vite 项目搭建指南

转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i建模

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值