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实现任意图片lowpoly动画效果实例
May 11 HTML / CSS
用CSS3实现Win8风格的方格导航菜单效果
Apr 10 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 HTML / CSS
css3 中translate和transition的使用方法
Mar 26 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
Jun 09 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
用html5绘制折线图的实例代码
Mar 25 HTML / CSS
有关HTML5中背景音乐的自动播放功能
Oct 16 HTML / CSS
H5混合开发app如何升级的方法
Jan 10 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
Feb 18 HTML / CSS
使用html5实现表格实现标题合并的实例代码
May 13 HTML / CSS
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 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
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
jQuery登陆判断简单实现代码
2013/04/21 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python获取引用对象的个数方式
2019/12/20 Python
python几种常用功能实现代码实例
2019/12/25 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
村级个人对照检查材料
2014/08/22 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
信息技术课教学反思
2016/02/23 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
Python中可变和不可变对象的深入讲解
2021/08/02 Python
Golang数据类型和相互转换
2022/04/12 Golang
Nginx配置之禁止指定IP访问
2022/05/02 Servers