“文字”聚合、散出动画-转自奇舞团

本文介绍一个文字聚合、散出效果的动画效果,先看 demo

Chinese tea cupswholesale Chinese tea cups

demo借鉴了 智能社首页图片轮播效果。接下来介绍聚合、散出效果的实现方法。

首先定义一个容器元素

    <div class="ctn"></div>

然后,将这个容器的宽高划分成数块。

    var oDiv = document.getElementByClassName(‘ctn‘)[0];
    var C=4;  //划分的列数
    var R=8;  //划分的行数

    //容器的中心点X坐标(相对于容器的左上角)
    var divCX=oDiv.offsetWidth/2;  

    //容器的中心点Y坐标(相对于容器的左上角)
    var divCY=oDiv.offsetHeight/2;

接下来在容器内生成C * R 个 div。

    for(var i=0;i<R;i++)
    {
        for(var j=0;j<C;j++) {
            var oNewDiv=document.createElement(‘div‘); 

            //接下来给 oNewDiv 设置初始状态
            ...
        }
    }

并给 oNewDiv 设置初始状态:left、 top、 背景位置、transform值

    var w=Math.floor(oDiv.offsetWidth/C);  //小块的宽度
    var h=Math.floor(oDiv.offsetHeight/R); //小块的高度
    var offsetLeft = j*w; //新元素的left值
    var offsetTop = i*h;  //新元素的top值
    var l=offsetLeft+w/2; // 新元素的中心点x坐标(相对于容器的左上角)
    var t=offsetTop+h/2;  // 新元素的中心点y坐标(相对于容器的左上角)

    //容器中心点到新元素中心点向量(简化形式)
    var disX=l-divCX;  //初始的translateX值
    var disY=t-divCY;  //初始的translateY值

    oNewDiv.style.left = offsetLeft + ‘px‘;  //新元素的left值
    oNewDiv.style.top = offsetTop + ‘px‘;    //新元素的top值
    oNewDiv.style.backgroundPosition = ‘-‘+offsetLeft+‘px -‘+offsetTop+‘px‘;  //背景位置

    oNewDiv.style.WebkitTransform=‘perspective(800px) translate3d(‘+disX+‘px, ‘+disY+‘px, 600px) rotateY(‘+rnd(-180, 180)+‘deg) rotateX(‘+rnd(-180, 180)+‘deg) scale(2,2)‘;  //初始的transform值

    oNewDiv.style.opacity=0;    //初始的透明度为0

接下来让新元素飞到聚合状态,酱紫就会出现一张完整的“拼图”~

    (function (oNewDiv, disX, disY){
        setTimeout(function (){
            oNewDiv.style.WebkitTransform=‘translate3d(0,0,0)‘;
            oNewDiv.style.opacity=1;
        }, rnd(300, 500));
    })(oNewDiv, disX, disY);

其中动画简单用过渡来实现: transition: 0.6s all ease 。

以上就是聚合效果的实现,至于散开效果,把 oNewDiv.style.WebkitTransform 的初始值和结束值反过来即可。完整的实现请看 demo

时间: 2025-01-18 11:01:52

“文字”聚合、散出动画-转自奇舞团的相关文章

鼠标滑过图片变暗文字链接滑出jQuery特效

效果体验:http://hovertree.com/texiao/jquery/7.htm HTML文件代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>鼠标滑过图片变暗文字链接滑出jQuery特效 - HoverTree</title><base target="_blank" /> &l

让TextView里面的文字逐个显示的动画效果实现

最近使用TextView时想要实现里面的文字逐个显示的动画效果,就如同打字一样. 主要实现思想:新建一个TextView的派生类,先将要逐个显示的字符串保存变量 mOriginalStr 中,然后启动新线程,每隔一段时间使用 Handler 类对象的sendEmptyMessage(int what) 方法发送消息,让 Handler 对象将mOriginal中的字符串逐个添加到TextView中进行显示. 代码实现如下: 1 /** 2 * Created by Haoye on 2016/1

JS实现边栏弹出动画

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS实现边栏弹出动画</title> <style type="text/css"> *{margin:0;padding:0;} #box{width:200px;height:200px;background-color:

IOS项目之弹出动画三

前面写了弹出动画两个,今天做商城时又用到了,看着这个用着蛮普遍的,所以记了下来 // // mallMoreView.h // XQB // // Created by City--Online on 15/7/6. // // #import <UIKit/UIKit.h> typedef void (^SelectMallMoreMenu)(NSInteger index); @interface mallMoreView : UIView //单例 + (mallMoreView *)s

IOS项目之弹出动画二

在IOS项目之弹出动画一中只是实现也功能,并没有体现面向对象的思想 ,今天就试着把它封装了一下,弹出视图的内容可以根据自定义,此处只是用UIDatePicker来演示 我把它传到了GitHub上   https://github.com/ywcui/YvanDatePicker.git 一.新建一个类YWDatePicker集成UIView // YvanDatePicker.h #import <UIKit/UIKit.h> typedef void (^selectDate)(NSDate

js文字聚合拼接

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

CSS3实现Tooltip提示框飞入飞出动画

我们见过很多利用背景图片制作的Tooltip提示框,但是缺点是扩展比较麻烦,要经常改动图片.还有就是利用多层CSS的叠加实现,但是效果比较生硬,外观不怎么好看.今天我来分享一下利用CSS3快速实现既美观又实用的Tooltip提示框,提示框伴有飞入飞出的动画效果.先来看看效果图. 看上去还简单吧,其实实现的思路的确很简单. 具体效果我们可以在这里查看在线演示. 接下来我们来简单分析一下这个Tooltip实现的CSS3代码. 首先是HTML代码,主要是构造了3个小图标菜单以及对应的Tooltip提示

点击文字,弹出层

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>点击文字弹出一个DIV层窗口代码</title> <style> .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height:

canvas粒子文字渐进渐出效果

之前一直想做一个文字粒子效果的淡出淡进,这两天事情就写了一下代码,效果地址:http://www.mjix.com/code/canvas-text/   ,按F11进入全屏,做屏保还可以,预览图 主要是在粒子(文字像素点)的位移问题上的处理方法.淡进前需要先获取到像素点的初始位置极其透明度,这个东东运用到数学左边换算问题,要遇到数学有点头大就跳过吧,我学数学的/偷笑 1 //获取渐进前的像素点位置 2 getInData : function(data, min, offset){ 3 var