【发布时间】:2021-09-09 18:17:21
【问题描述】:
是否可以在 html 元素中为纤细的过渡添加条件
<script>
let visible = true;
</script>
{#if visible}
<p
transition:fly="{{ y: 200, duration: 2000 }}"
>
Flies in and out
</p>
{/if}
像 idk 之类的东西
<script>
let visible = true;
let iWantFly = true
</script>
{#if visible}
<p
transition:fly:iWantFly="{{ y: 200, duration: 2000 }}"
>
Flies in and out
</p>
{/if}
甚至喜欢
<script>
let visible = true;
let flyType = 'sureThing'
</script>
{#if visible}
<p
transition:fly:{flyType === 'sureThing'}="{{ y: 200, duration: 2000 }}"
>
Flies in and out
</p>
{/if}
我知道可以做两个独立的元素,比如
<script>
let visible = true;
let baseEl;
let flyType = 'sureThing'
</script>
{#if visible && flyType === 'sureThing'}
<p
bind:this={baseEl}
transition:fly="{{ y: 200, duration: 2000 }}"
>
Flies in and out
</p>
{/if}
{#if visible && flyType === 'otherThing'}
<p bind:this={baseEl}>
Flies in and out
</p>
{/if}
{#if visible && flyType === 'thisThing'}
<p
bind:this={baseEl}
transition:fade
>
Flies in and out
</p>
{/if}
但问题是一个重复代码,两个我试图绑定到元素,所以在“flyType”之间翻转切换到一个新元素并搞砸了绑定。还是我需要做。定制一个?我是新手,所以还没有这样做,但不想让它过于复杂
回复以前标记的正确答案似乎不起作用 使用@geoffrich 中的示例,从“否”字符串开始并切换到“是”,然后可见过渡立即移动
<script>
import { fly } from 'svelte/transition';
let visible = true;
let shouldTransition = 'no';
function toggleTransition(){
shouldTransition = shouldTransition === 'yes' ? 'no' : 'yes';
}
</script>
<label><input type='checkbox' bind:checked={visible}> Visible</label>
<button on:click={toggleTransition}>toggleTransition: {shouldTransition}</button>
{#if visible}
<p transition:transitionToUse={{ y: 200, duration: 500 }}>Flies in and out</p>
{/if}
【问题讨论】:
标签: css conditional-statements transition bind svelte