You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte 5动态内容容器高度动画实现及模块用法咨询

解决方案:Svelte 5容器高度动态过渡动画

实现容器高度平滑变化

要实现内容增删时容器高度的动画,不需要手动用tweened计算,直接用svelte/transitions的slide过渡就能搞定,它会自动检测容器高度变化并生成平滑动画:

<script>
  import { slide } from 'svelte/transitions';
  let items = [];
  let count = 0;

  const addItem = () => items.push(`Item ${++count}`);
  const removeItem = () => items.length && items.pop();
</script>

<button on:click={addItem}>添加元素</button>
<button on:click={removeItem}>移除元素</button>

<div transition:slide={{ duration: 300 }} class="container">
  {#each items as item}
    <div class="item">{item}</div>
  {/each}
</div>

<style>
  .container {
    border: 1px solid #eee;
    padding: 10px;
  }
  .item {
    padding: 8px;
    margin: 4px 0;
    background: #f5f5f5;
  }
</style>

如果slide的默认效果不符合需求,也可以自定义高度过渡函数,精确控制动画过程:

<script>
  import { transition } from 'svelte/transitions';

  const heightTransition = (node, { duration = 300 }) => {
    const startHeight = getComputedStyle(node).height;
    return {
      duration,
      css: t => `height: ${parseFloat(startHeight) * t}px;`
    };
  };

  // 同上面的items和操作函数
</script>

<div transition:heightTransition class="container">
  {#each items as item}
    <div class="item">{item}</div>
  {/each}
</div>

svelte/transitions 与 svelte/animate 的用法及适用场景

svelte/transitions(过渡模块)

  • 核心功能:处理单个元素的入场/退场动画,包括尺寸变化、显隐过渡等。
  • 适用场景:
    • 元素从DOM中添加/移除时的过渡(比如模态框弹出、单个列表项的显隐)。
    • 容器尺寸(高度/宽度)变化的平滑过渡(就是你需要的场景)。
  • 常用内置过渡:fade(淡入淡出)、slide(滑动过渡)、scale(缩放),也支持完全自定义过渡函数。

svelte/animate(动画模块)

  • 核心功能:处理元素在DOM中的位置/顺序变化时的动画,比如列表重排、元素移动。
  • 适用场景:
    • 列表项排序后的位置平滑过渡(比如拖拽排序、筛选后列表重排)。
    • 元素在不同容器间移动时的过渡效果。
  • 常用方法:flip(First, Last, Invert, Playback),自动计算元素的起始/结束位置,生成自然的移动动画。示例:
<script>
  import { flip } from 'svelte/animate';
  let items = [1,2,3,4,5];

  const shuffle = () => items = items.sort(() => Math.random() - 0.5);
</script>

<button on:click={shuffle}>打乱列表</button>

{#each items as item (item)}
  <div animate:flip class="item">{item}</div>
{/each}

内容的提问来源于stack exchange,提问作者havlli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:23:12