canvas画太阳系八大行星
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>太阳系八大行星</title>
</head>
<style>
* {
margin: 0;
padding: 0;
}
body{
width: 100%;
height: 100%;
background: url(./btg.jpg)no-repeat;
background-size: 100% 100%;
}
</style>
<body>
<canvas width="1920" height="1080" id="canvas">
您的浏览器不支持canvas
</canvas>
<script>
//获取画布
var canvas = document.getElementById('canvas');
//获取绘图环境
var cxt = canvas.getContext('2d');
//d单位时间time (1:1天)
var time = 0;
// 水 金 地 火 木 土 天 海
function draw() {
//清除画布
cxt.clearRect(0, 0, 1920, 1080);
//画水星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 200, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画金星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 230, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画地球轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 260, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画火星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 290, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画木星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 350, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画土星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 440, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画天王星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 520, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画海王星轨道
cxt.strokeStyle = "#FFF";
cxt.beginPath();
//路径函数
cxt.arc(960, 500, 570, 0, 360, false);
cxt.closePath();
cxt.stroke();
//画小星星
function xiaoxx() {
cxt.beginPath();
cxt.arc(960, 200, 1, 0, 360, false);
cxt.closePath();
var sunColor = cxt.createRadialGradient(960, 200, 0, 960, 200, 180);
sunColor.addColorStop(0, "#fff");
sunColor.addColorStop(1, "#fff");
cxt.fillStyle = sunColor;
cxt.fill();
}
xiaoxx()
//画太阳
cxt.beginPath();
//路径函数 x,y,r,角度范围,顺时针/逆时针
cxt.arc(960, 500, 180, 0, 360, false);
cxt.closePath();
//填充(渐变色)
//cxt.createLinearGradient(内圆心x,内圆心y,内半径r,外圆心x,外圆心y,外圆半径r);
var sunColor = cxt.createRadialGradient(960, 500, 0, 960, 500, 180);
sunColor.addColorStop(0, "#F00");
sunColor.addColorStop(1, "#F90");
cxt.fillStyle = sunColor;
cxt.fill();
//画水星
cxt.save();
//异次元空间00点
cxt.translate(960, 500);
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(200, 0, 8, 0, 360, false);
var earthColor = cxt.createRadialGradient(180, 0, 0, 180, 0, 10);
cxt.strokeStyle = "#050c12";
earthColor.addColorStop(0, "#0097e2"); //#&8B1Eb
earthColor.addColorStop(1, "#007dbc"); //#050c12
cxt.fillStyle = earthColor;
cxt.fill();
cxt.closePath();
// //画金星
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(230, 0, 10, 0, 360, false);
var moonColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#e7e700";
moonColor.addColorStop(0, "#ffff00");
moonColor.addColorStop(1, "#e7e700");
cxt.fillStyle = moonColor;
cxt.fill();
// //画地球
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(260, 0, 15, 0, 360, false);
var earthColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#55aaff";
earthColor.addColorStop(0, "#55aaff");
earthColor.addColorStop(1, "#80b1ff");
cxt.fillStyle = earthColor;
cxt.fill();
// //画火星
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(290, 0, 5, 0, 360, false);
var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#3E2715";
marsColor.addColorStop(0, "#915634");
marsColor.addColorStop(1, "#673B22");
cxt.fillStyle = marsColor;
cxt.fill();
// //画木星
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(350, 0, 40, 0, 360, false);
var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#84703c";
marsColor.addColorStop(0, "#84703c");
marsColor.addColorStop(1, "#ba9d54");
cxt.fillStyle = marsColor;
cxt.fill();
// //画土星
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(440, 0, 35, 0, 360, false);
var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#dcaf85";
marsColor.addColorStop(0, "#F1C385");
marsColor.addColorStop(1, "#C8A07D");
cxt.fillStyle = marsColor;
cxt.fill();
// 天王星
cxt.rotate(time * 365 / 360 * Math.PI / 960);
cxt.beginPath();
cxt.arc(520, 0, 20, 0, 360, false);
var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#6083D4";
marsColor.addColorStop(0, "#4C64A4");
marsColor.addColorStop(1, "#415E9A");
cxt.fillStyle = marsColor;
cxt.fill();
// 海王星
cxt.rotate(time * 365 / 1000 * Math.PI / 1200);
cxt.beginPath();
cxt.arc(570, 0, 22, 0, 360, false);
var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
cxt.strokeStyle = "#6881C0";
marsColor.addColorStop(0, "#6C8BC8");
marsColor.addColorStop(1, "#414A6D");
cxt.fillStyle = marsColor;
cxt.fill();
cxt.closePath();
cxt.restore();
cxt.restore();
//每画一次图像,时间参数加1
time += 1;
}
draw();
//通过修改第二个参数课调整速度
setInterval(draw, 50);
</script>
</body>
</html>