clip-path的任意元素的碎片拼接动效
看了张大神的这篇文章后自己写的,兼容性不好clip-path要加-webkit-
css
#test img{position: absolute;}
.active .clip{
will-change: transform;
animation: clear_transform .5s both;
}
@keyframes clear_transform {
to {
opacity: ;
transform: translate3d(, , ) rotate() scale();
}
}
.active #image{
opacity: ;
animation: fadeIn .1s .4s both;
}
@keyframes fadeIn {
from { opacity: ; }
to { opacity: ; }
}
#repeat{position: absolute;top: 200px;}
html
<div id="test">
<img src="http://img.mswon.com/img.php?url=http://npic7.edushi.com/cn/zixun/zh-chs/2016-05/31/e-3053153-s1464644414872299.jpg" id='image'/>
</div>
<button id='repeat'>再来一次</button>
JS
test('image');//image-id
function test(ele){
var clip = {
parent:'',
id:ele,
src:'',
num:,//裁剪个数
x_tier:,//X轴要裁剪的个数
y_tier:,//Y轴要裁剪的个数
h:,//图片高度
w:,//图片宽度
y:,//要裁剪的高度40
x://要裁剪的宽度60
}
clip.parent = document.getElementById(ele).parentNode;//图片父级div
var img = document.getElementById(clip.id);
img.onload = function(){
clip.src = img.getAttribute('src');
clip.h = img.clientHeight;
clip.w = img.clientWidth;
clip.x = clip.w/clip.x_tier;
clip.y = clip.h/clip.y_tier;
clip.num = clip.num*clip.num;
start_clip();
}
function start_clip(){
var info = '<img src="'+clip.src+'" id="image" style="opacity:0;"/>';
for (var i = ;i<clip.x_tier;i++){
for (var j = ;j<clip.y_tier;j++) {//(x,y)
//裁剪
var d1 = (clip.x*j)+'px '+(clip.y*i)+'px';
var d2 = (clip.x*j)+'px '+(clip.y*i+clip.y)+'px';
var d3 = (clip.x*j+clip.x)+'px '+(clip.y*i+clip.y)+'px';
var d4 = (clip.x*j+clip.x)+'px '+(clip.y*i)+'px';
var css1 = '-webkit-clip-path: polygon('+d1+','+d2+','+d3+','+d4+');';
//旋转
var r = random()+'deg';
//位移
var t_x = random()+'px';
var t_y = random()+'px';
var t_z = random()+'px';
//缩放
var s = random();
var css2 = '-webkit-transform:translate3d('+t_x+','+t_y+','+t_z+') rotate('+r+') scale('+s+');';
info +='<img class="clip" src="'+clip.src+'" style="'+css1+''+css2+'"/>'
}
}
clip.parent.innerHTML = info;
clip.parent.className = 'active';
}
//随机数
function random(n){
var num = Number(Math.random()*n).toFixed();
return num;
}
document.getElementById('repeat').onclick = function(){
clip.parent.innerHTML = '<img src="'+clip.src+'" id="'+clip.id+'"/>';
test(clip.id);
}
}
clip-path的任意元素的碎片拼接动效的更多相关文章
- 基于clip-path的任意元素的碎片拼接动效(源自鑫空间)
一.实现原理. 效果本质上是CSS3动画,就是旋转transform:rotate和位移:transform:translate,只是旋转和位移的部件是三角碎片而已.三角是使用CSS3 clip-pa ...
- CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。
CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板. CLIP PATH (MASK) GENERATO ...
- WPF-3D动效-文字球形环绕
原文:WPF-3D动效-文字球形环绕 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013224722/article/details/81784 ...
- 玩转HTML5移动页面(动效篇)
原文:http://www.grycheng.com/?p=458 作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有 ...
- 动效解析工厂:Mask 动画
转载自:http://www.cocoachina.com/ios/20160214/15250.html 前言:很多动效都是多种动画的组合,有时候你可能只是需要其中某个动画,但面对庞杂的代码库或是教 ...
- iOS开发之 Lottie -- 炫酷的动效
动效在软件开发中非常常见,炫酷的动画能提升应用的B格,然而由设计师的设计转化成程序猿GG的代码是个非常"痛苦"的过程.对于复杂动画,可能要花费很多时间去研究和实现.Lottie 的 ...
- 新版MATERIAL DESIGN 官方动效指南(三)
运动 Material design 的动效会被类似真实世界中的力的影响,类似重力. 物体在屏幕内的运动 屏幕内物体在两点之间的运动,是沿着一条自然.凹陷的弧线.屏幕上所有的运动都可以使用标准曲线. ...
- QQ音乐的动效歌词是如何实践的?
本文由云+社区发表 作者:QQ音乐技术团队 一. 背景 1. 现状 歌词浏览已经成为音乐app的标配,展示和动画效果也基本上大同小异,主要是单行的逐字染色的卡拉OK效果和多行的滚动效果.当然,我们也不 ...
- iOS动画进阶 - 实现炫酷的上拉刷新动效
移动端訪问不佳,请訪问我的个人博客 近期撸了一个上拉刷新的小轮子.仅仅要遵循一个协议就能自己定义自己动效的上拉刷新和载入,我自己也写了几个动效进去,以下是一个比較好的动效的实现过程 先上效果图和git ...
随机推荐
- 来自官方的一些dbt 最佳实践
限制对原始数据的依赖性 您的项目将取决于存储在数据库中的原始数据.我们建议制作所谓的“基本模型”,以最大限度地减少对原始数据表的依赖性.在此约定中,基本模型可以具有以下职责: 仅选择与当前分析相关的字 ...
- nuclio kubernetes 部署
一张参考架构图: 从图中可以看到nuclio可以运行到docker 以及kubernetes中 提供了kubernetes 部署的脚本 安装 创建命名空间 kubectl create namespa ...
- microsoft webMatrix 使用 IISnode 进行node express 开发
微软的microsoft webMatrix是一个免费的开发工具,我们可以使用它进行node 开发并利用iisnode 模块进行iis 的nodejs网站的维护,还是比较方便的. 一个简单的node ...
- POSIX 线程具体解释(3-相互排斥量:"固定加锁层次"/“试加锁-回退”)
有时一个相互排斥量是不够的: 比方: 当多个线程同一时候訪问一个队列结构时,你须要2个相互排斥量,一个用来保护队列头,一个用来保护队列元素内的数据. 当为多线程建立一个树结构时.你可能须要为每一个节点 ...
- 服务检测sh脚本
如mysql cat check_mysql.sh #!/bin/bash servicename="mysqld"showname="mysql" pid=& ...
- php实现Facebook风格的 time ago函数
php实现Facebook风格的 time ago函数 非常好用,只要把里面的英文替换成中文就行了 英文函数代码如下: <?php function nicetime($date) { if(e ...
- Logback 整合 RabbitMQ 实现统一日志输出
原文地址:Logback 整合 RabbitMQ 实现统一日志输出 博客地址:http://www.extlight.com 一.前言 公司项目做了集群实现请求分流,由于线上或多或少会出现请求失败或系 ...
- Microsoft Dynamics CRM2011 导入解决方案时,失败的原因小结
将大的自定义文件导入到 Microsoft Dynamics CRM 时发生超时? 如图: 首先: a.首先需要确认两面的CRM 环境是一致,比如都是Roll up 11等. b.然后确认导出解决方案 ...
- dzzoffice协同办公平台与onlyoffice在线协作平台安装与部署
1.安装dzzoffice协同办公平台 DzzOffice是一套开源办公套件,适用于企业.团队搭建自己的 类似“Google企业应用套件”.“微软Office365”的企业协同办公平台. 官网地址:h ...
- Java 经典练习题_Day06
面向对象与面向过程的比较 类与对象的关系 成员变量和局部变量 构造方法 this 构造代码块 局部代码块 匿名对象 一. 选择题 1.下列各项中关于面向对象及面向过程的说法错误的是:(BDE) A. ...