😍
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. Frame

Transform 变换

Transform属性利用GPU加速因此动画效果更加流畅。它们其实是利用了CSS的transfrom这个属性,比如说x=20这个属性设置其实就是CSS中的tranform:translateX(200)。所有的这些变换的效果都会在元素完成基本布局之后才会被应用。

在CSS中给一个元素设置多个translate属性时会有执行先后顺序的问题,那么在Frame标签上与transform相关的属性的默认执行顺序是:translate,scale,rotate和skew。当然,你也可以通过transformTemplate属性来自定义这几种属性的执行顺序。

<Frame
  x={100}
  y={100}
  z={100}
  rotate={90}
  scale={1.2}
  skew={15}
/>

x:number | string | MotionValue<number | string>

设置CSS的transform中的translateX属性

<Frame x={100} />

y:number | string | MotionValue<number | string>

设置CSS的transform中的translateY属性

<Frame y={100} />

z:number | string | MotionValue<number | string>

设置CSS的transform中的translateZ属性

<Frame z={100} />

rotate:number | string | MotionValue<number | string>

设置CSS的transform的rotate的角度值

<Frame rotate={45}/>

rotateX: number | string | MotionValue<number | string>

设置CSS的transform的rotate的角度值

<Frame rotateX={45}/>

rotateY:number | string | MotionValue<number | string>

设置CSS的transform的rotateY的角度值

<Frame rotateY={45}/>

rotateZ:number | string | MotionValue<number | string>

设置CSS的transform的rotateZ的角度值

<Frame rotateZ={45}/>

scale:number | string | MotionValue<number | string>

设置CSS的transfrom的scale值

<Frame scale={1.5} />

scaleX:number | string | MotionValue<number | string>

设置CSS的transfrom的scaleX值

<Frame scaleX={1.5} />

scaleY:number | string | MotionValue<number | string>

设置CSS的transfrom的scaleY值

<Frame scaleY={1.5} />

skew:number | string | MotionValue<number | string>

设置CSS的transform的skew的角度值

<Frame skew={15} />

skewX:number | string | MotionValue<number | string>

设置CSS的transform的skewX的角度值

<Frame skewX={15} />

skewY:number | string | MotionValue<number | string>

设置CSS的transform的skewY的角度值

<Frame skewY={15} />

originX:number | string | MotionValue<number | string>

设置CSS的transform的originX的值

<Frame originX={0.5} />

originY:number | string | MotionValue<number | string>

设置CSS的transform的originY的值

<Frame originY={0.5} />

originZ:number | string | MotionValue<number | string>

设置CSS的transform的originZ的值

<Frame originZ={0.5} />

perspective:number | string | motionValue<number | string>

设置CSS的transform的perspective的值

<Frame perspective={500} />

preserve3d:boolean

将该标签的子元素放置在一个3d空间中。默认是设置为false的。

<Frame preserve3d={true} />

backfaceVisible:boolean

设置当元素的背面朝向用户是是否课件,默认是true

<Frame backfaceVisible={true} />

tranformTemplate(transform, generatedTransform): string

默认情况下,Framer Motion会自动给多个transform的变化属性设定一个顺序,你可以通过transformTemplate属性来创建一个自定义的变化顺序,当然也可以在默认的顺序的基础上进行调整和修改。

function transformTemplate({ x, rotate }) {
  return `rotate(${rotate}deg) translateX(${x}px)`
}

<Frame x={0} rotate={180} transformTemplate={transformTemplate} />

函数 transformTemplate 的参数和返回值

transform: TransformProperties

你想要进行调整顺序的transform相关的属性

generatedTransform: string

自动生成的transform的变化顺序,是一个字符串的值

return:string

PreviousVisual 视觉NextAnimation 动画

Last updated 5 years ago

Was this helpful?