Omi框架学习之旅 - 插件机制之omi-transform及原理说明
给omi-transform插件做个笔记,使用起来也很爽。
transform.js这个库,一直想写一篇帖子的,可是,数学不好,三维矩阵和二位矩阵理解的不好,所以迟迟没写了,
这也是一个神库,反正我很喜欢,那怎么和omi结合,怎么使用呢?
先看个demo吧。
        Omi.OmiTransform.init();    // 这个是初始化(源码是这么OmiTransform.init()写,为了方便,自己加了下)
        class App extends Omi.Component {
            constructor(data) {
                super(data);
            }
            installed() {
                setInterval(function() {
                    this.refs.test.rotateZ += 0.1;    // 拿到dom可以随便设置那14个属性
                }.bind(this));
            }
            style(){
                return  `
                    .test{
                        font-size: 20px;
                        border: 1px solid red;
                        width: 150px;
                        font-size
                        min-height: 150px;
                        text-align: center;
                        line-height:150px;
                    }
                 `;
            }
            render() {
                return `
                    <div omi-transform class="test" ref="test" rotateZ="30" translateX="100">    <!--在这里可以方面的设置值-->
                        omi-transform
                    </div>
                `;
            }
        };
废话不多说,实现很简单,以下只贴transform和omi怎么结合的代码了。
如下:
    var OmiTransform = {};
    OmiTransform.init = function(){
        Omi.extendPlugin('omi-transform',function(dom, instance){
            var ref = dom.getAttribute('ref');    // 查找dom的ref属性
            if(ref){
                var element = instance.refs[ref];    // 找到dom元素
                Transform(element, element.getAttribute('perspective') ? false : true);    // 给元素赋予三维矩阵
                ['translateX', 'translateY', 'translateZ', 'scaleX', 'scaleY', 'scaleZ', 'rotateX', 'rotateY', 'rotateZ', 'skewX', 'skewY', 'originX', 'originY', 'originZ'].forEach(function(name){
                    var attr = dom.getAttribute(name);    // 获取这些值的默认值
                    if(attr) {    // 有的话就给他
                        element[name] = parseFloat(dom.getAttribute(name));
                    };
                });
            };
        });
    }
    OmiTransform.destroy = function(){
        delete Omi.plugins['omi-transform'];
    };
这个过于简单,就懒得解释了。
ps:如果文字模糊,就把dom的perspective属性给关闭就好了。
Omi框架学习之旅 - 插件机制之omi-transform及原理说明的更多相关文章
- Omi框架学习之旅 - 插件机制之omi-finger 及原理说明
		以前那篇我写的alloyfinger源码解读那篇帖子,就说过这是一个很好用的手势库,hammer能做的,他都能做到, 而且源码只有350来行代码,很容易看懂. 那么怎么把这么好的库作为omi库的一个插 ... 
- Omi框架学习之旅 - 插件机制之omi-touch 及原理说明
		这个插件也能做好多好多的事,比如上拉下拉加载数据,轮播,等一切和运动有关的特效. 具体看我的allowTouch这篇博客,掌握了其用法,在来看它是怎么和omi结合的.就会很简单. 当然使用起来也比较方 ... 
- Omi框架学习之旅 - 插件机制之omi-router及原理说明
		先来看看官网的介绍吧:https://github.com/AlloyTeam/omi/tree/master/plugins/omi-router 其实我推荐直接看官网的介绍.我所写的,主要给个人做 ... 
- Omi框架学习之旅 - 之开篇扯蛋
		说实话, 我也不知道Omi是干啥的, 只因此框架是alloyTeam出的, dntzhang写的, 也有其他腾讯大神参与了, 还有一些其他贡献者, 以上我也不太清楚, 当我胡说八嘎. 因其写法有人说好 ... 
- Omi框架学习之旅 - Hello World 及原理说明
		学什么东西都从hello world开始, 我也不知道为啥. 恩,先上demo代码, 然后提出问题, 之后解答问题, 最后源码说明. hello world - demo: class Hello e ... 
- Omi框架学习之旅 - 获取DOM节点 及原理说明
		虽然绝大部分情况下,开发者不需要去查找获取DOM,但是还是有需要获取DOM的场景,所以Omi提供了方便获取DOM节点的方式. 这是官网的话,但是我一直都需要获取dom,对dom操作,所以omi提供的获 ... 
- Omi框架学习之旅 - 生命周期 及原理说明
		生命周期 name avatars company constructor 构造函数 new的时候 install 初始化安装,这可以拿到用户传进的data进行处理 实例化 installed 安装完 ... 
- Omi框架学习之旅 - 通过omi-id来实现组件通讯 及原理说明
		这个demo是通过omi-id来获取子类的实例,然后更改data属性,之后updata一下就好了. 老规矩:先上demo代码, 然后提出问题, 之后解答问题, 最后源码说明. class Hello ... 
- Omi框架学习之旅 - 通过对象实例来实现组件通讯 及原理说明
		组件通讯不是讲完了吗(上帝模式还没讲哈),怎么又多了种方式啊. 你484傻,多一种选择不好吗? 其实这个不属于组件通讯啦,只是当父组件实例安装和渲染完毕后,可以执行installed这个方法(默认是空 ... 
随机推荐
- easyUI combobox combotree 模糊查询,带上下键选择功能,待完善。。。。
			/2017年4月9日 11:52:36 /** * combobox和combotree模糊查询 * combotree 结果带两级父节点(手动设置数量) * 键盘上下键选择叶子节点 * 键盘回车键设 ... 
- Android jni c/c++线程通过CallVoidMethod调用java函数出现奔溃问题
			最近在移植网络摄像机里的p2p库到android平台,需要用到jni,最近在c线程了调用java函数的时候 出现一个问题,假如在同一个线程调用java函数是没问题的,但在一个c线程了调用java函数就 ... 
- openCV 色彩空间
			---恢复内容开始--- 1.使用cv2.inrange()获取某个范围内的图像取值,指定某个通道的最小值和最大值 import numpy as np def color_space(image): ... 
- 第一个Django页面(2)
			第一个Django页面 1,进入forum项目:熟悉项目里各种文件的作用 2,配置URL:在urls.py里面添加 [url路径与对应的处理函数] 3,编写处理函数:根据urls.py里添加函数的路径 ... 
- Excel实用录入技巧
			一.文本录入技巧 输入开头为0的序号 当直接输入单元格中的数字第一个为0时系统会默认去掉 只需要经单元格格式改为文本或者在单元格输入前使用英文状态下的单引号(‘) 例如:'0001 >>& ... 
- mysql启动失败一例
			操作系统版本:Ubuntu 13.04 mysql 版本:mysql-server-5.5 现象:突然之前接到报告说数据库启不来了.第一时间查看硬盘空间,看是否硬盘满了.发现空间使用正常. root@ ... 
- 【PAT】B1067 试密码(20 分)
			注意读取时的换行符用getchar吸收 第十个错误后直接输出锁定 #include<cstdio> #include<string.h> int main(){ char mi ... 
- python学习-判断是否是IP地址
			1.使用正则表达式 首先分析IP地址的组成,十进制的合法IP地址由32位数字组成 使用.分割开 每个分组可出现的情况: 第一个分组: 1-9:一位数字 10-99:两位数字 100-199:三位数字且 ... 
- Docker容器学习与分享01
			1.什么是容器? 容器技术是一种虚拟化的方案,与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器是直接运行在操作系统内核之上的用户空间. 所以容器虚拟化又 ... 
- Python3编写网络爬虫04-爬取猫眼电影排行实例
			利用requests库和正则表达式 抓取猫眼电影TOP100 (requests比urllib使用更方便,由于没有学习HTML系统解析库 选用re) 1.目标 抓取电影名称 时间 评分 图片等 url ... 
