😍
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

Was this helpful?

  1. LIBRARY 库
  2. Utilities

Transfrom

transform(inputValue, inputRange, outputRange, options): T

这个方法能把传入的inputValue转换成inputRange和outputRange映射后的在outputRange范围内的映射值。返回一个数据的类型决定于你传入数据的类型。

当你传入的inputRange是一个[0,200]的数组,同时你传入的outputRange是[0,1],那么这个函数返回的是就是0到1范围内的一个数,当然,前提是你传入的数据是在0-200范围内的。你传入的值必须是这个连续范围内一个数。outputValue范围类型支持数字、颜色、投影、数组和对象以及更多。每一个返回的值的类型都和输入的inputValue值保持一致。

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

export function MyComponent() {
   const inputRange = [0, 200]
   const outputRange = [0, 1]
   const output = transform(100, inputRange, outputRange)

   // Returns 0.5
   return <Frame>{output}</Frame>
}

inputValue: number

一个需要被转换的数据

inputRange: number[]

inputValue的值的范围

outputRange: T[]

支持多种数据类型,比如numbers, colors, shadows, arrays和objects

options: TransformOptions<T>

Clamp: 是否现在数据在给定的范围内,默认是true

returns: T

Ranges

transform方法同样也支持传入的范围数组包含的数据超过2个。比如说下面这个例子,当inputValue是[ -200, -100, 100, 200 ],outputValue 范围是[ 0, 1, 1, 0 ],那么这个函数会返回:

- 当inputValue的值在 -200 到 -100之间,那么返回一个值是0到1范围的

- 当inputValue的值在-100 到 100之间,那么返回的值都是1

- 当inputValue的值在100 到 200之间,那么返回的值是1到0的范围

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

export function MyComponent() {
  const inputRange = [-200, -100, 100, 200]
  const outputRange = [0, 1, 1, 0]
  const output = transform(150, inputRange, outputRange)
  // output equals 0.5
  return <Frame>{output}</Frame>
}

transform(inputRange, outputRange, options): (inputValue: number) => T

为了提高运行效果,可以先将inputRange和outputRange传入到transform函数中,这将回返回一个函数。然后再将要转换的数据,在需要转换时传进去。

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

export function MyComponent() {
    const inputRange = [-200, -100, 100, 200]
    const outputRange = [0, 1, 1, 0]
    const convertRange = transform(inputRange, outputRange)
    const output = convertRange(-150)

    // Returns 0.5
    return <Frame>{output}</Frame>
}

inputRange: number[]

连续的数据值范围

outputRange: T[]

支持多种数据类型,比如numbers, colors, shadows, arrays和objects

options: TransformOptions<T>

Clamp: 是否现在数据在给定的范围内,默认是true

returns: (inputValue: number) => T

PreviousUtilitiesNextuseTransform

Last updated 5 years ago

Was this helpful?