幻灯片过渡使用 getComputedStyle,所以也许这就是您所需要的。以下内容是从 svelte 存储库 (src/runtime/transition/index.ts) 中的幻灯片函数复制而来的。滑动功能将这些值从零设置为初始值并返回。
const style = getComputedStyle(node);
const opacity = +style.opacity;
const height = parseFloat(style.height);
const padding_top = parseFloat(style.paddingTop);
const padding_bottom = parseFloat(style.paddingBottom);
const margin_top = parseFloat(style.marginTop);
const margin_bottom = parseFloat(style.marginBottom);
const border_top_width = parseFloat(style.borderTopWidth);
const border_bottom_width = parseFloat(style.borderBottomWidth);
编辑:@bobfanger 在评论中解释了如何制作自定义mySlide
- 函数,并且在该函数中有可用的初始大小值。这是一个工作示例:
<script>
import {slide} from "svelte/transition"
let show=false
let d
function mySlide(el) {
let s=window.getComputedStyle(d)
console.log("mySlide",s.height)
return slide(el, {duration:2000})
}
</script>
<h1 on:click={()=>show=show?false:true}>Click me</h1>
{#if show}
<div bind:this={d} transition:mySlide
style="background-color:yellow;padding:10px;border:10px solid;">
<p>test</p>
</div>
{/if}
这比使用onMount
和visibility
破解要简单得多。