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 ...
随机推荐
- Transformer-view java实体 转换视图 Lists.transform
自: https://blog.csdn.net/mnmlist/article/details/53870520 meta_ws 连接: https://github.com/kse-music/d ...
- Eclipse使用前准备(转)
Eclipse的发布流程 M1 08/19/2009 M2 09/30/2009 M3 11/11/2009 M4 12/16/2009 M ...
- streamsets 集成 minio s3测试
具体streamsets crate 集成可以参考 streamsets crate 以下文档只关注minio 集成的配置 minio 服务 搭建 具体搭建参考: https://www.cnblog ...
- zstack(一)运行及开发环境搭建及说明(转载)
本篇介绍zstack的部署环境,以及二次开发环境 运行环境 讲真,ZStack的安装做的还是不错的,提供多种安装模式,如离线安装.在线安装.一键安装.分布式安装等.安装的过程其实都很简单,当然这也是z ...
- Spark的word count
word count package com.spark.app import org.apache.spark.{SparkContext, SparkConf} /** * Created by ...
- LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt
题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...
- Python——collections模块、time模块、random模块、os模块、sys模块
1. collections模块 (1)namedtuple # (1)点的坐标 from collections import namedtuple Point = namedtuple('poin ...
- python中的with
看例 """ 需求:不用数据库连接池,实现数据库链接操作 """ class SQLHelper(object): def open(sel ...
- 解决Qt Creator编译输出窗口乱码的问题
设置环境变量LC_ALL为en_US. 附注:将乱码复制到文本编辑器(如Notepad++)后将编码设置为utf-8,可以看到正确的文字. 看样子是编译输出窗口的编码设置出了问题,或者是gcc的输出编 ...
- BASIC-13_蓝桥杯_数列排序
示例代码: #include <stdio.h>#include <stdlib.h> int main(void){ int n = 0 ; int i = 0 , j = ...