平滑地调整容器大小

2024-01-30

我已经使用 svelte 一段时间了,它很棒,但有一件事我一次又一次地遇到。我们来看下面的代码:

<script>
    import {flip} from 'svelte/animate';
    import {fade} from 'svelte/transition';
    
    let list = [];
</script>

<div class="this-div-should-smoothly-change-size">
    {#each list as item (item)}
        <div animate:flip transition:fade>
            {item}
            <button on:click={() => (list = list.filter(e => e !== item))}>X</button>
        </div>
    {/each} 
</div>

<button on:click={() => (list = [...list, Math.random()])}>
    Add
</button>

列表上的翻转动画看起来很棒,但下面的按钮仍然“跳跃”。我想要的只是让按钮移动顺畅。当容器的内容发生变化时,svelte 是否可以使容器在大小之间平滑过渡?


由于svelte编译器的限制,"An element that uses the animate directive must be the immediate child of a keyed each block",我们不能简单地添加animate:flip按钮。

但如果你可以稍微改变你的 html 结构,你可以解决这个问题。

<script>
import { flip } from 'svelte/animate'
import { fade } from 'svelte/transition'

const buttonPlaceholder = Symbol('buttonPlaceholder')
let list = []
</script>

<div class="this-div-should-smoothly-change-size">
  {#each list.concat(buttonPlaceholder) as item (item)}
    <div animate:flip transition:fade>
      {#if item == buttonPlaceholder}
        <button on:click={() => (list = [...list, Math.random()])}> Add </button>
      {:else}
        {item}
        <button on:click={() => (list = list.filter(e => e !== item))}>X</button>
      {/if}
    </div>
  {/each}
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

平滑地调整容器大小 的相关文章

  • 如何比较 Svelte 3 中的 Prop 变化

    Svelte 3 中是否有一种机制可以在渲染之前比较组件内的 prop 更改 类似于 反应从Props获取DerivedState https reactjs org docs react component html static get
  • 在 svelte 文件中导出打字稿类型

    我想导出在一个文件中定义的类型并将其导入到另一个文件中 export type myNewType name string 当我添加时 linter 显示以下错误export Modifiers cannot appear here 我可以
  • 我可以使用传递到组件的变量来设置 svelte 样式 css 属性值吗

    我想创建一个接收图像名称和路径的简洁组件 我想让组件使用 CSS 将图像设置为 背景图像 我已经尝试过以下似乎不起作用 调用的组件应用程序 svelte
  • 有没有办法在 Svelte 中将 props 声明为可选

    我创建了一些带有可选道具的组件 例如hide true 我的问题是 当我不通过该道具时 这些恼人的错误消息总是充斥着我的控制台
  • 如何从组件内部调用组件的destroy?

    我有一个模态组件 我希望能够在用户单击 x 按钮时销毁它 我还有一个通知弹出窗口 它会在一段时间后自行销毁 但我想让用户能够通过以下方式关闭它 x 按钮也是如此 我知道我可以将事件传递给组件 但我认为如果组件具有自毁性 那就更好了 对于这种
  • 如何返回 Svelte 组件的渲染 HTML?

    我很难制作一个会消失的工具提示use action 我的要求是 创建以 HTML 或组件为内容的工具提示 无需将组件包装在
  • 如何在 Svelte 中使用 Web 组件?

    我想使用一些网络组件https github com microsoft vscode webview ui toolkit https github com microsoft vscode webview ui toolkit 但我不知
  • 仅在客户端运行某些代码的最佳方法是什么?

    我正在尝试在 Sapper 中实现 firebase 我安装了模块 firebase app firebase auth firebase firestore 然后编写了一个配置文件 import firebase from firebas
  • 当 Svelte 重用父 dom 元素时如何确保仅本地转换

    在 Svelte 中 我有一个组件用于显示两个不同列表中的项目 当这些项目从一个列表移动到另一个列表时 它们使用过渡来动画进入或退出 不过 我还有一种方法可以过滤屏幕上显示的内容 显示一组新的项目将使用相同的组件 但具有不同的数据 在这种情
  • 如何通过svelte访问本地json文件?

    现在我使用 onMount 异步函数来访问 const dataAPI jsfwperf json let data onMount async gt const res await fetch dataAPI then res gt re
  • svelte :更改 html 块内的变量值

    each list as item i div class item div
  • 从 file:// 运行 Svelte 应用程序,无需服务器

    我需要运行一个 Svelte 应用程序并且能够在没有服务器的情况下执行它 对于其他框架 这是可能的 因为它只是 javascript 但我找不到一种方法来单击我的 index html 并运行用 Svelte 构建的应用程序 我需要运行一个
  • 页面加载时的简洁过渡和动画

    我目前正在使用 Svelte 和 Sapper 开发一个网站 我正在使用 Svelte 过渡来为某些页面元素添加动画效果 每当我更改为新的页面路由时 过渡动画都会正确显示 但是当我第一次加载页面时 它们没有动画 Svelte 如何处理页面加
  • 如何将原始二进制数据转换为 blob 并将其显示在 img 标记中?

    我正在 Electron 和 Svelte 中制作梦想日记应用程序 我有一种自定义文件格式 其中包含标题 描述和一张或多张图像 看 程序输入 文件输出 当我需要的时候 我可以打电话ipcRenderer invoke 在主进程中读取文件 然
  • 选项 importNotUsedAsValues 已弃用

    有人可以帮我解决这个问题吗jsonfig json为一个精简的项目文件 它说的是importsNotUsedAsValues选项应替换为verbatimModuleSyntax compilerOptions moduleResolutio
  • 迁移到 SvelteKit 的新路由系统

    不知道你怎么想 但我听说过 SvelteKit 中的这个新路由系统 我第一次听说这个是与 error svelte我在此处找到的文件官方文档 https kit svelte dev docs routing error 不久 我还看到了其
  • 设置 customElement: true 时,Svelte 绑定不起作用

    我想使用 Svelte 构建自定义元素 Thus in rollup config js I set customElement true 然后我必须使用 来引用我的子组件 但我发现 通过这种方式 bind不管用 这是代码示例 HelloW
  • 如何向 SvelteKit/Vite 应用添加版本号?

    我正在尝试在我的 SvelteKit 应用程序中创建一个系统 它会在某个页面上向您显示有关当前应用程序版本的信息 最好是 Git 提交哈希和描述 我尝试使用Vite的定义功能 https vitejs dev config define在构
  • svelte + rollup 中的环境变量

    我正在寻找一种简单的方法来设置环境 IE 如果我能跑步就好了npm run dev local and npm run dev staging加载不同的环境文件 这些文件可以在运行时通过process env 据了解 它是编译的 因此我可能
  • 如何使用 vite 在 svelte 中包含 WASM npm 模块?

    我正在使用 vite 运行一个 svelte 应用程序 并使用 WASM 包构建wasm pack target web 如果我直接将包与 vanilla JS 一起使用 我可以编写如下内容 在 HTML 文件中 其中greet是我的之一w

随机推荐