Skip to content

Effects 动画效果

用于为子元素添加进入/离开动画效果,支持缩放、淡入淡出、滑动、翻转等多种效果。

引入

html
<script type="module">
  import "./node_modules/easy-component-ui/dist/components/ea-effects.js";
</script>
js
import "easy-component-ui/ea-effects";

自定义样式

移步到 CSS Part

Zoom 缩放

提供从不同方向缩放的效果,支持 zoom-centerzoom-topzoom-rightzoom-bottomzoom-left

Click Me
zoom-center
zoom-center-linear
zoom-top
zoom-right
zoom-bottom
zoom-left
查看代码
html
<ea-effects effect="zoom-center">
  <div class="transition-box">zoom-center</div>
</ea-effects>
<ea-effects effect="zoom-center" timing-function="linear">
  <div class="transition-box">zoom-center-linear</div>
</ea-effects>
<ea-effects effect="zoom-top">
  <div class="transition-box">zoom-top</div>
</ea-effects>
<ea-effects effect="zoom-right">
  <div class="transition-box">zoom-right</div>
</ea-effects>
<ea-effects effect="zoom-bottom">
  <div class="transition-box">zoom-bottom</div>
</ea-effects>
<ea-effects effect="zoom-left">
  <div class="transition-box">zoom-left</div>
</ea-effects>
js
const zoomEffects = {
  btn: document.querySelector("#zoomButton"),
  effects: document.querySelectorAll("#zoomEffectsContainer ea-effects"),

  init() {
    this.btn.addEventListener("click", () => {
      this.effects.forEach(effect => effect.toggle());
    });
  },
};
zoomEffects.init();

Fade 淡入淡出

提供简单的淡入淡出效果。

Click Me
fade-1
fade-2
查看代码
html
<ea-effects effect="fade">
  <div class="transition-box">fade-1</div>
</ea-effects>
<ea-effects effect="fade" visible="false" style="display: none;">
  <div class="transition-box">fade-2</div>
</ea-effects>
js
const fadeEffects = {
  btn: document.querySelector("#fadeButton"),
  effects: document.querySelectorAll("#fadeEffectsContainer ea-effects"),

  init() {
    this.btn.addEventListener("click", () => {
      this.effects.forEach(effect => effect.toggle());
    });
  },
};
fadeEffects.init();

Slide 滑动

提供从不同方向滑入/滑出的效果,支持 slide-topslide-rightslide-bottomslide-left

Click Me
slide-top
slide-right
slide-bottom
slide-left
查看代码
html
<ea-effects effect="slide-top">
  <div class="transition-box">slide-top</div>
</ea-effects>
<ea-effects effect="slide-right">
  <div class="transition-box">slide-right</div>
</ea-effects>
<ea-effects effect="slide-bottom">
  <div class="transition-box">slide-bottom</div>
</ea-effects>
<ea-effects effect="slide-left">
  <div class="transition-box">slide-left</div>
</ea-effects>
js
const slideEffects = {
  btn: document.querySelector("#slideButton"),
  effects: document.querySelectorAll("#slideEffectsContainer ea-effects"),

  init() {
    this.btn.addEventListener("click", () => {
      this.effects.forEach(effect => effect.toggle());
    });
  },
};
slideEffects.init();

Flip 翻转

提供沿 X 轴或 Y 轴翻转的效果,支持 flip-xflip-y

Click Me
flip-x
flip-y
查看代码
html
<ea-effects effect="flip-x">
  <div class="transition-box">flip-x</div>
</ea-effects>
<ea-effects effect="flip-y">
  <div class="transition-box">flip-y</div>
</ea-effects>
js
const flipEffects = {
  btn: document.querySelector("#flipButton"),
  effects: document.querySelectorAll("#flipEffectsContainer ea-effects"),

  init() {
    this.btn.addEventListener("click", () => {
      this.effects.forEach(effect => effect.toggle());
    });
  },
};
flipEffects.init();

Trigger 触发

通过 trigger 属性可以设置不同的触发方式。

  • click:点击触发
  • hover:悬停触发
  • manual:手动触发(通过方法调用)
  • scroll:滚动进入视口时触发
Click Me
trigger: click
trigger: hover
trigger: manual
trigger: scroll
查看代码
html
<ea-effects effect="zoom-center" trigger="click">
  <div class="transition-box">trigger: click</div>
</ea-effects>
<ea-effects effect="fade" trigger="hover">
  <div class="transition-box">trigger: hover</div>
</ea-effects>
<ea-effects effect="flip-x" trigger="manual">
  <div class="transition-box">trigger: manual</div>
</ea-effects>
<ea-effects effect="slide-top" trigger="scroll" scroll-once="false">
  <div class="transition-box">trigger: scroll</div>
</ea-effects>
js
const triggerEffects = {
  btn: document.querySelector("#triggerButton"),
  effects: document.querySelectorAll("#triggerEffectsContainer ea-effects"),

  init() {
    this.btn.addEventListener("click", () => {
      this.effects.forEach(effect => effect.toggle());
    });
  },
};
triggerEffects.init();

Effects API

Effects Attributes

参数说明类型可选值默认值
effect动画效果名称stringzoom-center / zoom-top / zoom-right / zoom-bottom / zoom-left / fade / slide-top / slide-right / slide-bottom / slide-left / flip-x / flip-y""
visible是否可见booleantrue
duration动画持续时间string""
delay动画延迟时间string""
timing-function动画缓动函数string""
iteration动画播放次数number1
trigger触发方式stringhover / click / manual / scroll"manual"
scroll-once滚动触发是否仅执行一次booleantrue
scroll-target滚动触发目标元素选择器string""

Effects CSS Part

名称说明
container动画容器元素

Effects Slots

名称说明
default需要应用动画效果的内容

Effects Methods

方法名说明参数
show()显示内容,触发进入动画
hide()隐藏内容,触发离开动画
toggle()切换可见状态
reset()重置动画状态

Effects CSS Custom Properties

属性名说明默认值
--ea-effects-duration动画持续时间0.3s
--ea-effects-delay动画延迟时间0
--ea-effects-timing-function动画缓动函数ease-in-out
--ea-effects-iteration-count动画播放次数1