javascript - 使用著名的框架制作模糊动画

标签 javascript famo.us

有谁知道我会使用什么修改器来为项目的模糊属性设置动画?我想要从清晰到一定程度的模糊进行动画处理。类似于:

.blur-out {
    -webkit-filter: blur(8px);
    -webkit-transform: scale(1.1, 1.1);
    opacity: 0.25;
    -webkit-transition: all 0.25s ease-out;
    transition: all 0.25s ease-out;    
}

.blur-in {
    -webkit-filter: blur(0px);
    -webkit-transform: scale(1.0, 1.0);
    opacity: 1.0;
    -webkit-transition: all 0.25s ease-in;
    transition: all 0.25s ease-in;
}

我想我总是可以尝试将项目的类更改为上面的类,我只是想知道是否有一个修饰符可以做到这一点?

最佳答案

目前没有用于动画模糊的特定修改器。话虽这么说……任何时候你想要自定义动画,你都可以使用 TweenTransition 或 Transitionable。这些类允许您在两个值之间创建具有指定过渡的曲线。定义后,您可以使用 .get() 获取值并将它们应用到您想要的任何属性。

这是一个工作示例..

var Engine            = require('famous/core/Engine');
var Surface           = require('famous/core/Surface');
var StateModifier     = require('famous/modifiers/StateModifier');
var Transitionable    = require('famous/transitions/Transitionable');
var SnapTransition    = require('famous/transitions/SnapTransition');

Transitionable.registerMethod('snap', SnapTransition);

var snap   = { method :'snap',  period: 400,  dampingRatio: 0.7   };

var context = Engine.createContext();

var surface = new Surface({
  size: [200,200],
  properties: {
    backgroundColor: 'red'
  }
});

var transitionable;
var final_pos;

var blurred = false;

var blur_from_to = function(i,f,transition){

    var initial_pos = i;
    final_pos = f;

    transitionable = new Transitionable(initial_pos);

    transitionable.set(final_pos, transition);

    Engine.on('prerender', prerender);
}

var prerender = function(){

  current_pos = transitionable.get();

  var blur_string = 'blur('+ current_pos + 'px)';

  surface.setProperties({ webkitFilter:blur_string});

  if (current_pos == final_pos) {
    Engine.removeListener('prerender',prerender);
  };
}

surface.on("click", function(){

  blurred ? blur_from_to(10,0,snap) : blur_from_to(0,10,snap) ;
  blurred = !blurred;

} );

context.add(new StateModifier({origin:[0.5,0.5]})).add(surface);

祝你好运!

关于javascript - 使用著名的框架制作模糊动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295895/

相关文章:

javascript - 如何将 javascript 值设置为 jslt 变量?

javascript - 尝试使用带有 TTL 的谷歌 FCM 发送数据

javascript - 家长famo.us修饰符如何影响他们的 child ?

javascript - Famo.us:如何将表单字段放入适用​​于 iOS 和 Safari 的 ScrollView 中?

famo.us - 如何使用 Famo.us 构建一个真实的应用程序?

javascript - ReactJS - 无限循环调用包装方法

javascript - 在 NGINX docker 容器中启动前运行 bash 脚本

javascript - textContent 与 innerText 之间的区别

javascript - Famo.us IframeSurface

javascript - famo.us 中的表面渲染事件