分享

3种方法(div法、css法、js法)制作html的旋转太极图

 常有理 2020-05-05

1.说明:

推荐指数:★★★★

通过动画太极的方法,增加学习兴趣,对html的结构和css、JavaScript、div的认识和了解会逐步深入。

2.复习html的结构框架

<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <title>html结构基本框架代码</title> </head> <body> </body></html>

3 div法

3.1 代码:复制下面的代码,命名为:div法.html,用浏览器打开即可。

<!DOCTYPE html><html><head>    <meta charset='UTF-8'>    <title>div法的旋转的太极图</title></head><!--单独style,不在head和body,只是在body内有一个div容器--><style>div{    width: 0;    /*这个高就是黑色圆形和白色圆形的直径和*/    height: 200px;    /*黑色太极部分的圈带动的黑色的阴影*/    border-left: 100px solid black;    /*白色太极部分的圈带动的白色的阴影*/    border-right: 100px solid #fff;    box-shadow: 0 0 15px rgba(0,0,0,.5);    /*旋转半径100*/    border-radius: 100px;    /*旋转速度定义,越小越快*/    -webkit-animation:rotation 2.5s linear infinite;}div:before{    content: '';    position: absolute;    height: 100px;    z-index: 1;    border-radius: 100px;    /*白色的小半圆*/    border-left: 50px solid #fff;    border-right: 50px solid #fff;    left: -50px;    /*黑色的小半圆,因为转动拖动黑色阴影*/    box-shadow: 0 100px 0 black;}div:after{    content: '';    position: absolute;    /*height是太极里面小圆圈的高30,要和border-radius30一致,才画出圆*/    height: 30px;    /*这个是显示小圆圈的,0就是不显示*/    z-index: 1;    border-radius: 30px;    border-left: 15px solid;    border-right: 15px solid;    /*top和left,决定小圆圈白色和黑色的位置*/    top: 40px;    left: -15px;    /*黑色太极部分里面的小白色圆圈*/    box-shadow: 0 100px 0 white;}/*旋转角度函数定义*/@-webkit-keyframes rotation {    0% {-webkit-transform:rotate(0deg);}    100% {-webkit-transform:rotate(-360deg);}}</style><body>    <div></div></body></html>

3.2 效果图

3种方法(div法、css法、js法)制作html的旋转太极图

4 css法

4.1 css法.html代码

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title>css法的旋转的太极图</title> <!--css导入和js导入不一样,请注意--> <!--script-- src='./tj.css'></!--script--> <link rel='stylesheet' type='text/css' href='./tj.css'></head><body> <div class='tj'></div> </body></html>

4.2 tj.css代码:注意与上面两个文件放在同一个文件夹下

.tj{    width: 100px;    height: 200px;    border: solid black;    border-width: 2px 100px 2px 2px;    background-color: #fff;    border-radius: 50%;    position: absolute;    /*run是动起来的函数,在最后面设置和定义*/    animation: run 2s linear infinite;    margin: auto;    top: 0;    left: 0;    right: 0;    bottom: 0;}.tj:before{    content: ' ';    position: absolute;    width: 28px;    height: 28px;    background-color: black;    /*36=(100-28)/2得到的,是小白色圆圈的半径*/    border: 36px #ffffff solid;    border-radius: 50%;    top: 0;    left: 50%;}.tj:after{    content: ' ';    position: absolute;    width: 28px;    height: 28px;    background-color: #ffffff;    /*36=(100-28)/2得到的,是小黑色圆圈的半径*/    border: 36px black solid;    border-radius: 50%;    top: 50%;    left: 50%;}/*run动起来的函数定义*/@keyframes run{        0%{            transform: rotate(0deg);        }        100%{            transform: rotate(360deg);        }    }

4.3 效果图

3种方法(div法、css法、js法)制作html的旋转太极图

5 js法=就是JavaScript法

5.1 js法.html代码:

<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <title>js法的旋转的太极图</title> <!--注意下面2钟都可以,主要是浏览器都支持html5--> <!--script-- src='script.js' type='text/javascript'></!--script--> <script src='./script.js'></script> <!--简单的css内容就这样写在下面,如果css比较复杂,则需要外部导入--> <style type='text/css'> canvas{ display: block; margin: 20px auto; } </style> </head> <body onload='main()'> <!--画布大小,画布框的线颜色蓝色设置,solid blue是指画布外框的颜色为蓝色--> <canvas width='300' height='300' id='canvas'style='border:1px solid blue'></canvas> </body></html>

5.2 script.js代码:与上面html放在同一个文件夹下

//注意到没有null=0,效果是一样的var angle = 0;//var canvas = null;//var ctx = null;var canvas = 0;var ctx = 0;function main(){    window.setInterval(function()    {        canvas = document.getElementById('canvas');        ctx = canvas.getContext('2d');        // 画布大小有关        ctx.clearRect(0, 0, 300, 300);        // 线条宽度0~10,均可        ctx.lineWidth = 0;        ctx.save();        // 旋转的中心点的坐标位置150,150        ctx.translate(150,150);        ctx.rotate(angle);        // 太极黑色部分        ctx.fillStyle = 'black';        ctx.beginPath();        // 注意几个函数数值的关系,120,60,半径和坐标的关系,如果要缩小半径,那么坐标也需要调整        ctx.arc(0, 0, 120, 0, Math.PI, true);        ctx.fill();        ctx.closePath();        // 太极白色部分        ctx.fillStyle = 'white';        ctx.beginPath();        ctx.arc(0, 0, 120, 0, Math.PI, false);        ctx.fill();        ctx.closePath();        // 太极黑色部分        ctx.fillStyle = 'black';        ctx.beginPath();        ctx.arc(60, -0.6, 60, 0, Math.PI, false);        ctx.fill();        ctx.closePath();        // 太极白色部分        ctx.fillStyle = 'white';        ctx.lineWidth = 0;        ctx.beginPath();        ctx.arc(-60, 0, 60, 0, Math.PI, true);        ctx.fill();        ctx.closePath();        // 白色太极部分里面的小黑色圆圈        ctx.fillStyle = 'black';        ctx.beginPath();        //画圆的函数:-145,0是坐标,15是半径,2*Math.PI是一个圆,一个π是半圆        ctx.arc(-60, 0, 15, 0, 2*Math.PI, false);        ctx.fill();        ctx.closePath();        // 黑色太极部分里面的小白色圆圈        ctx.fillStyle = 'white';        ctx.beginPath();        ctx.arc(60, 0, 15, 0, 2*Math.PI, false);        ctx.fill();        ctx.closePath();        // 旋转角度一次增加多少        ctx.restore();        angle += 0.02;    // 50代表转速,越大越慢,越小越快    },1);}

5.3 效果图

3种方法(div法、css法、js法)制作html的旋转太极图

6 值得收藏,慢慢回味。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多