😍
Framer API 中文版
  • 写在前面
  • 从这里开始
    • 介绍
      • 快速开始
      • 基础
    • 教程
      • 准备 Setup
      • 引入 Slider 组件
      • Slider组件的元素
      • 拖动 & MotionValue
      • Hooks & 传递数据
      • 完成
      • 回顾
    • 简要案例
      • Frame
      • Stack
      • Animate
      • Gestures
      • Dragging 拖拽
      • Scrolling 滚动
      • Paging 翻页
      • Tranforms 变换
      • Variants 动画状态组
  • LIBRARY 库
    • Frame
      • Layout 布局
      • Visual 视觉
      • Transform 变换
      • Animation 动画
      • Transition 过渡
      • Variants 动画状态组
      • Tap 点击
      • Hover 悬浮
      • Pan
      • Drag
      • Types
    • Animation
      • Overview
      • Animation controls
      • Tween
      • Spring
      • Inertia 惯性
      • Orchestration
      • Types
    • Color
      • Create
      • Modify
      • Convert
      • Compare
      • Models
    • Page
      • Content
      • Padding
      • Events
      • Effects
      • PageEffectInfo
    • Scroll
      • Sizing
      • Content
      • Events
    • Stack
      • Content
      • Padding
    • Utilities
      • Transfrom
      • useTransform
      • useAnimation
      • useCycle
      • useMotionValue
      • useSpring
      • useViewportScroll
  • FRAMER X
    • Assets
      • Functions
    • Data & Overrides
    • CanvasComponents
      • Canvas.tsx
      • Layout
      • Colors
    • PropertyControls
      • Adding Controls
      • Hiding Controls
      • Array
      • Boolean
      • Color
      • ComponentInstance
      • Enum
      • File
      • FusedNumber
      • Image
      • Number
      • SegmentedEnum
      • String
    • Render Target
      • Properties
      • Functions
Powered by GitBook
On this page
  • Loop 循环变化
  • Cycle 两种状态切换
  • Color 颜色变化
  • Arrays 数组

Was this helpful?

  1. 从这里开始
  2. 简要案例

Animate

PreviousStackNextGestures

Last updated 5 years ago

Was this helpful?

这里,我们要让Frame标签的rotate属性产生动画效果。我们利用Frame标签的animate属性来设置一个新的rotate的值。同时,我们可以利用transition这个属性来自定义变化的一些设置,比如说我们可以定义一个变化的时长为5s。

import * as React from "react"
import { Frame } from "framer"

export function MyComponent() {
  return (
    <Frame
      animate={{ rotate: 360 }}
      transition={{ duration: 1 }}
    />
  )
}

Loop 循环变化

transition属性包含很多可以设置的属性用来让我们自定义想要的一些变化效果。在这个案例中,我们定义了一个无限循环的变化效果,我们把loop属性的值设置为Infinity,把ease属性的值设置linear,用以实现这个效果。这种动画效果比较适合用来做进度提示,尤其是作为加载旋转提示。

import * as React from "react"
import { Frame } from "framer"

export function MyComponent() {
  return (
    <Frame
      animate={{ rotate: 360 }}
      transition={{
        duration: 2,
        loop: Infinity,
        ease: "linear",
      }}
    />
  )
}

Cycle 两种状态切换

你可以利用Framer中useCycle方法来实现两种状态之间的动画切换效果。这个例子中,我们通过点击让Framer标签在两种状态值之间进行切换。

import * as React from "react"
import { Frame, useCycle } from "framer"

export function MyComponent() {
  const [animate, cycle] = useCycle(
    { scale: 1.5, rotate: 0 },
    { scale: 1.0, rotate: 90 }
  )

  return <Frame animate={animate} onTap={() => cycle()} />
}

Color 颜色变化

Frame标签的背景颜色也能通过background属性来产生变化。在下面这个例子中,我们让Frame标签的颜色从在1秒的时间内从淡蓝色变化为紫色,然后再从紫色变回蓝色,一直循环不停。这是使用了yoy'o这个属性,让背景色的变化可以反向变化,同时yoyo的值设置成了Infinity,就是无限循环。

import * as React from "react"
import { Frame } from "framer"

export function MyComponent() {
  return (
    <Frame
      animate={{ background: "#85F" }}
      transition={{
        duration: 1,
        yoyo: Infinity,
      }}
      background={"#0CF"}
    />
  )
}

Arrays 数组

除了使用一个单一的值,你也可以把好几个值放到数组里面然后放在animate属性里面。在这个案例中,我们让Frame标签的颜色在2秒之内从几个颜色之间不停地来回切换。

import * as React from "react"
import { Frame } from "framer"

export function MyComponent() {
  return (
    <Frame
      animate={{ background: ["#F05", "#85F", "#0CF"] }}
      transition={{
        duration: 2,
        yoyo: Infinity,
      }}
      background={"#0CF"}
    />
  )
}

Open Example
Open Example
Open Example
Open Example
Open Example