CSS3 实现穿梭星空动画


Posted in HTML / CSS onNovember 13, 2020

实现效果:

CSS3 实现穿梭星空动画

html

<canvas id="starfield"></canvas>

css

* {
  background:black;
  padding:0;
  margin:0;
}

canvas {
  padding:0;
  margin:0;
  width:100%;
  height:100%;
}

js

function $i(t) {
    return document.getElementById(t)
}
function $r(t, r) {
    document.getElementById(t).removeChild(document.getElementById(r))
}
function $t(t) {
    return document.getElementsByTagName(t)
}
function $c(t) {
    return String.fromCharCode(t)
}
function $h(t) {
    return ("0" + Math.max(0, Math.min(255, Math.round(t))).toString(16)).slice(-2)
}
function _i(t, r) {
    $t("div")[t].innerHTML += r
}
function _h(t) {
    return hires ? Math.round(t / 2) : t
}
function get_screen_size() {
    var t = document.documentElement.clientWidth,
        r = document.documentElement.clientHeight;
    return Array(t, r)
}
function init() {
    for (var t = 0; n > t; t++) star[t] = new Array(5), star[t][0] = Math.random() * w * 2 - 2 * x, star[t][1] = Math.random() * h * 2 - 2 * y, star[t][2] = Math.round(Math.random() * z), star[t][3] = 0, star[t][4] = 0;
    var r = $i("starfield");
    r.style.position = "absolute", r.width = w, r.height = h, context = r.getContext("2d"), context.fillStyle = "rgb(0,0,0)", context.strokeStyle = "rgb(255,255,255)"
}
function anim() {
    mouse_x = cursor_x - x, mouse_y = cursor_y - y, context.fillRect(0, 0, w, h);
    for (var t = 0; n > t; t++) test = !0, star_x_save = star[t][3], star_y_save = star[t][4], star[t][0] += mouse_x >> 4, star[t][0] > x << 1 && (star[t][0] -= w << 1, test = !1), star[t][0] < -x << 1 && (star[t][0] += w << 1, test = !1), star[t][1] += mouse_y >> 4, star[t][1] > y << 1 && (star[t][1] -= h << 1, test = !1), star[t][1] < -y << 1 && (star[t][1] += h << 1, test = !1), star[t][2] -= star_speed, star[t][2] > z && (star[t][2] -= z, test = !1), star[t][2] < 0 && (star[t][2] += z, test = !1), star[t][3] = x + star[t][0] / star[t][2] * star_ratio, star[t][4] = y + star[t][1] / star[t][2] * star_ratio, star_x_save > 0 && w > star_x_save && star_y_save > 0 && h > star_y_save && test && (context.lineWidth = 2 * (1 - star_color_ratio * star[t][2]), context.beginPath(), context.moveTo(star_x_save, star_y_save), context.lineTo(star[t][3], star[t][4]), context.stroke(), context.closePath());
    timeout = setTimeout("anim()", fps)
}
function start() {
    resize(), anim()
}
function resize() {
    w = parseInt(-1 != url.indexOf("w=") ? url.substring(url.indexOf("w=") + 2, -1 != url.substring(url.indexOf("w=") + 2, url.length).indexOf("&") ? url.indexOf("w=") + 2 + url.substring(url.indexOf("w=") + 2, url.length).indexOf("&") : url.length) : get_screen_size()[0]), h = parseInt(-1 != url.indexOf("h=") ? url.substring(url.indexOf("h=") + 2, -1 != url.substring(url.indexOf("h=") + 2, url.length).indexOf("&") ? url.indexOf("h=") + 2 + url.substring(url.indexOf("h=") + 2, url.length).indexOf("&") : url.length) : get_screen_size()[1]), x = Math.round(w / 2), y = Math.round(h / 2), z = (w + h) / 2, star_color_ratio = 1 / z, cursor_x = x, cursor_y = y, init()
}
var url = document.location.href,
    flag = !0,
    test = !0,
    n = parseInt(-1 != url.indexOf("n=") ? url.substring(url.indexOf("n=") + 2, -1 != url.substring(url.indexOf("n=") + 2, url.length).indexOf("&") ? url.indexOf("n=") + 2 + url.substring(url.indexOf("n=") + 2, url.length).indexOf("&") : url.length) : 812),
    w = 0,
    h = 0,
    x = 0,
    y = 0,
    z = 0,
    star_color_ratio = 0,
    star_x_save, star_y_save, star_ratio = 115,
    star_speed = 5,
    star_speed_save = 0,
    star = new Array(n),
    color, opacity = .1,
    cursor_x = 0,
    cursor_y = 0,
    mouse_x = 0,
    mouse_y = 0,
    canvas_x = 0,
    canvas_y = 0,
    canvas_w = 0,
    canvas_h = 0,
    context, key, ctrl, timeout, fps = 0;
start();

以上就是CSS3 实现穿梭星空动画的详细内容,更多关于CSS3 星空动画的资料请关注三水点靠木其它相关文章!

HTML / CSS 相关文章推荐
用CSS3实现Win8风格的方格导航菜单效果
Apr 10 HTML / CSS
利用css3实现的简单的鼠标悬停按钮
Nov 04 HTML / CSS
CSS Grid布局教程之什么是网格布局
Dec 30 HTML / CSS
利用CSS3实现圆角的outline效果的教程
Jun 05 HTML / CSS
使用CSS3来匹配横屏竖屏的简单方法
Aug 04 HTML / CSS
教你如何一步一步用Canvas写一个贪吃蛇
Oct 22 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
Dec 20 HTML / CSS
HTML5实现签到 功能
Oct 09 HTML / CSS
使用canvas压缩图片上传的方法示例
Feb 07 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
Apr 23 HTML / CSS
HTML5 SEO优化的一些建议
Aug 27 HTML / CSS
css 边框添加四个角的实现代码
Oct 16 HTML / CSS
CSS3 实现图形下落动画效果
Nov 13 #HTML / CSS
css3实现平移效果(transfrom:translate)的示例
Nov 13 #HTML / CSS
CSS3 文字动画效果
Nov 12 #HTML / CSS
css3弹性盒子flex实现三栏布局的实现
Nov 12 #HTML / CSS
CSS3 按钮边框动画的实现
Nov 12 #HTML / CSS
CSS3 实现发光边框特效
Nov 11 #HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
Nov 10 #HTML / CSS
You might like
建立动态的WML站点(二)
2006/10/09 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
PHP 代码规范小结
2012/03/08 PHP
php使用session二维数组实例
2014/11/06 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
浅谈Python 中整型对象的存储问题
2016/05/16 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
医药代表个人求职信范本
2013/12/19 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
党员承诺书内容
2014/03/26 职场文书
小班下学期评语
2014/05/04 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
建筑安全生产责任书
2014/07/22 职场文书
中学推普周活动总结
2015/05/07 职场文书
就业推荐表院系意见
2015/06/05 职场文书
自信主题班会
2015/08/14 职场文书
导游词之崇武古城
2019/10/07 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书