欢迎访问我的博客GISer空间。

1. CSS3:每块板作为为一个dom元素。

1.1 用一个容器和七个元素来表示七块板。

1.2 通过CSS3的transform的平移、缩放、旋转、变形多种操作来确定七块板的位置。

设置wrap的position为relative,七块板为absolute,并设置top和left为0,这样初始化时七块板都位于左上角,然后将板的transform-origin设为左上角,方便定位计算。尺寸和位置变化参考下图。

1.3 CSS3部分样式

.wrap {

position: relative;

background: #F1F1F1;

width: 600px;

height: 600px;

margin-left: auto;

margin-right: auto;

}

.t {

position: absolute;

top: 0;

left: 0;

width: 0;

height: 0;

transform-origin: 0 0;

}

.t1 {

border-top: 212.13203435596425732025330863145px solid #008FDE;

border-right: 212.13203435596425732025330863145px solid transparent;

animation: t1_move 5s infinite;

}

@keyframes t1_move {

0%{transform: translate(300px, 300px) rotate(-135deg);}

25%{transform: translate(300px,250px) rotate(-135deg);}

50%{transform: translate(350px,250px) rotate(-90deg);}

75%{transform: translate(300px,300px) rotate(-90deg);}

100%{transform: translate(300px,300px) rotate(-135deg);}

}

.t2 {

border-top: 212.13203435596425732025330863145px solid #FEF900;

border-right: 212.13203435596425732025330863145px solid transparent;

animation: t2_move 5s infinite;

}

@keyframes t2_move {

0%{transform: translate(300px, 300px) rotate(135deg);}

25%{transform: translate(250px,300px) rotate(135deg);}

50%{transform: translate(350px,350px);}

75%{transform: translate(300px,300px);}

100%{transform: translate(300px,300px) rotate(135deg);}

}

.t3 {

width: 106.06601717798212866012665431573px;

height: 106.06601717798212866012665431573px;

background: #9A4378;

animation: t3_move 5s infinite;

}

@keyframes t3_move {

0%{transform: translate(300px,300px) rotate(45deg);}

25%{transform: translate(300px,350px) rotate(45deg);}

50%{transform: translate(143.994px,143.994px);}

75%{transform: translate(193.934px,193.934px);}

100%{transform: translate(300px,300px) rotate(45deg);}

}

.t4 {

border-top: 106.06601717798212866012665431573px solid #E1177B;

border-right: 106.06601717798212866012665431573px solid transparent;

animation: t4_move 5s infinite;

}

@keyframes t4_move {

0%{transform: translate(300px,300px) rotate(-45deg);}

25%{transform: translate(350px,300px) rotate(-45deg);}

50%{transform: translate(250px,143.994px) rotate(-180deg);}

75%{transform: translate(300px,193.934px) rotate(-180deg);}

100%{transform: translate(300px,300px) rotate(-45deg);}

}

.t5 {

border-top: 106.06601717798212866012665431573px solid #00913E;

border-right: 106.06601717798212866012665431573px solid transparent;

animation: t5_move 5s infinite;

}

@keyframes t5_move {

0%{transform: translate(225px,375px) rotate(45deg);}

25%{transform: translate(225px,425px) rotate(45deg);}

50%{transform: translate(250px,350px) rotate(90deg);}

75%{transform: translate(300px,300px) rotate(90deg);}

100%{transform: translate(225px,375px) rotate(45deg);}

}

.t6 {

width: 150px;

height: 75px;

background: #2A0F70;

animation: t6_move 5s infinite;

}

@keyframes t6_move {

0%{transform: translate(450px,150px) rotate(90deg) skew(45deg);}

25%{transform: translate(500px,150px) rotate(90deg) skew(45deg);}

50%{transform: translate(143.994px,350px) rotate(45deg) skew(45deg);}

75%{transform: translate(193.934px,300px) rotate(45deg) skew(45deg);}

100%{transform: translate(450px,150px) rotate(90deg) skew(45deg);}

}

.t7 {

border-top: 150px solid #EB7A14;

border-right: 150px solid transparent;

animation: t7_move 5s infinite;

}

@keyframes t7_move {

0%{transform: translate(450px,450px) rotate(180deg);}

25%{transform: translate(500px,500px) rotate(180deg);}

50%{transform: translate(37.868px,300px) rotate(-45deg);}

75%{transform: translate(87.868px,300px) rotate(-45deg);}

100%{transform: translate(450px,450px) rotate(180deg);}

}

1.4 效果

2. 附:Canvas实现七巧板(HTML5新特性)

2.1 Canvas标签

2.2 Script代码

//定义tangram数组,表示七块板对象,每个对象中p属性表示每块板的定点坐标,color属性表示填充颜色。

var tangram = [

{p:[{x:150,y:150},{x:450,y:150},{x:300,y:300}],color:"#008FDE"},

{p:[{x:150,y:150},{x:300,y:300},{x:150,y:450}],color:"#FEF900"},

{p:[{x:300,y:300},{x:375,y:375},{x:300,y:450},{x:225,y:375}],color:"#9A4378"},

{p:[{x:300,y:300},{x:375,y:225},{x:375,y:375}],color:"#E1177B"},

{p:[{x:150,y:450},{x:225,y:375},{x:300,y:450}],color:"#00913E"},

{p:[{x:375,y:225},{x:450,y:150},{x:450,y:300},{x:375,y:375}],color:"#2A0F70"},

{p:[{x:300,y:450},{x:450,y:300},{x:450,y:450}],color:"#EB7A14"}

];

//获取canvas对象,并设置宽和高,然后调用draw函数。

window.onload = function() {

var canvas = document.getElementById("canvas");

canvas.width = 600;

canvas.height = 600;

var context = canvas.getContext("2d");

for(var i = 0; i < tangram.length; i++)

draw(tangram[i], context);

};

//draw函数,绘制每一块板。

function draw(piece, cxt) {

cxt.beginPath();

cxt.moveTo(piece.p[0].x, piece.p[0].y);

for(var i = 1; i < piece.p.length; i++)

cxt.lineTo(piece.p[i].x, piece.p[i].y);

cxt.closePath();

cxt.fillStyle = piece.color;

cxt.fill();

}

3. 参考资料

python绘制七巧板_CSS3制作七巧板动画相关推荐

  1. C语言七巧板游戏制作,七巧板具体玩法与制作方法详解

    七巧板大家应该都不陌生,这是大家从小到大都接触过的,但是你知道七巧板具体玩法与制作方法吗? 具体玩法 通常,用七巧板拼摆出的图形应当由全部的七块板组成,且板与板之间要有连接,如点的连接.线的连接或点与 ...

  2. 使用Python、OpenCVImageMagick工具箱制作GIF动画

    这篇博客将介绍如何根据给定的源图片文件夹制作动画,Python负责根据给定文件夹获取所有图片文件,并根据图片名进行排序,实质上动画是调用ImageMagick的命令行生成的: ImageMagick的 ...

  3. python之七行代码制作GIF动画

    前言 怎么能让我自己的动画与python结合起来,并将其展示给其他人呢?(我知道tkinter,pyglet和pyqt是很好的图形用户界面,但他们不能直接发布到网上......) gifmaze可以帮 ...

  4. 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画

    # Visual-制作3D演示动画 [Visual](http://vpython.org) 是Python的一个简单易用的3D图形库,使用它可以快速创建3D场景.动画.和TVTK相比它更加适合于创建 ...

  5. python制作简单动画_把数据摇起来!用Python制作动画可视化效果!

    Python 中有很多不错的数据可视化库,但是极少能渲染 GIF 图或视频动画效果.本文就分享一下如何用 MoviePy 作为其他可视化库的通用插件,制作动画可视化效果,毕竟这年头,没图不行,有动图更 ...

  6. geopandas学习(八)Python+Kepler.gl制作路径动画

    geopandas学习(八)Python+Kepler.gl制作路径动画 1.简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托Web ...

  7. 如何用python制作三维动画_用Python制作3D动画

    很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢! 比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya Python插件. 另外 ...

  8. 怎么用python绘制柱状图_如何用python快速简单的制作柱状图?

    柱状图大家都会制作,那么你会用python制作柱状图吗? 我们先来看一下柱状图的定义:柱形图,又被称为长条图.或者柱状统计图,也叫作条图.条状图.棒形图,本质上来说就是一种以长方形的长度为变量的统计图 ...

  9. python中利用turtle(海龟)绘图制作龟兔赛跑动画——仅供学习

    python中利用turtle(海龟)绘图制作龟兔赛跑动画--仅供学习哦 首先,欢迎大家来我的博客当中浏览,由于我和我的可爱现在还都个初学者,所作的东西还不够完善,之前在学习计算机的各种语言的过程中, ...

最新文章

  1. SharePoint【调试,诊错系列】-- 一种调试Sharepoint2010 Solution的快捷方式
  2. 多人编辑、共享思维导图
  3. java 验证码图片识别_JavaSE图像验证码简单识别程序详解
  4. knn人脸识别判断_WEEK1_LRamp;KNN
  5. 大数据学习笔记1000条
  6. srcnn 双三次插值_用于数字成像的双三次插值技术
  7. 【linux基础】cuDNN版本查询
  8. ES插件elasticsearch-mapper-attachments 2.3.4及各个版本正确下载地址
  9. keil中下载按钮和调试按钮灰掉了
  10. url 编码(percentcode 百分号编码)
  11. w10用的c语言编译软件,STVP STM8 COSMIC C编译器在WIN10上的安装使用
  12. MP3编码之shine压缩异常解决
  13. 我们一起学程序-五指棋
  14. js中的引号使用不正确导致js方法传入参数类型错误
  15. 关于Win10系统-svchost大量占用网速及自动更新问题——完美解决
  16. 10个有趣且易上手的AI项目(附Python源代码)
  17. 头骨在ZBrush该怎样才能雕刻
  18. 下载微软虚拟学院视频字幕,解决本地播放没有字幕
  19. 堆排序-Java小顶堆排序
  20. stata怎么画分类图_掌握Stata这几种常见功能,让统计图案绘制更加精美

热门文章

  1. Quartz的一般配置方法
  2. 二:统计基础:描述统计
  3. 西瓜卡顿 ANR 优化治理及监控体系建设
  4. Wish官方推荐收款渠道 哪家比较好?
  5. matlab画不定积分图像实例,matlab怎么画函数图像,原来是这样的
  6. 苏州持续深化区块链技术在公证领域的应用
  7. 【入门案例系列】学英语太难?这款英语单词小游戏教你一键学会。
  8. 发明了万维网的他,如今却想亲手推翻它
  9. FLASH知识及读写擦除规则
  10. m基于EM参数估计的Gamma随机过程电池剩余寿命预测matlab仿真