html+css实现星系图

往期内容:

01-html+css+js实现时钟

02-html+css+js实现骰子

03-html+css+js实现点名系统

文章目录

  • 01-html+css+js实现时钟
  • 02-html+css+js实现骰子
  • 03-html+css+js实现点名系统
  • 前言
  • 一、整体效果
  • 二、代码实现
    • 1.背景图
    • 2.主体星系
    • 3.添加文字效果
    • 4.整体代码
  • 总结


前言

本文通过html和css3D旋转属性实现星系效果。


一、整体效果

整体效果如下:
1、文字逐行、渐变显示;
2、背景星系图旋转;
3、行星绕中心公转;
4、行星自转;
5、行星自身轨道绕行星旋转。
效果图如下:
整体效果图

二、代码实现

1.背景图

背景图设计思路:
1、给定一个盒子和浏览器窗口一样大;
2、插入img标签,放置背景图;
3、对img长宽进行放大,并调整位置,使img旋转90°的时候不会露出白边;
4、对盒子进行溢出隐藏。
5、增加旋转动画。

html代码:

 <div class="bg"><img src="images/star.jpg" alt=""></div>

css代码:

* {padding: 0;margin: 0;box-sizing: content-box;}html,body {height: 100%;width: 100%;}/* 背景盒子 */.bg {position: absolute;width: 100%;height: 100%;overflow: hidden;}/* 背景盒子图片需比盒子大,不然旋转时会露出白边 */.bg img {position: absolute;top: -800px;left: -1000px;width: 200%;height: 250%;animation: scroll4 200s infinite linear;}/* 大背景转圈动画 */@keyframes scroll4 {to {transform: rotateZ(360deg);}}

2.主体星系

设计思路如下:
1、绘制星球和大轨道;
2、绘制小轨道;
3、星球沿z轴自转;
4、星球光晕沿X轴旋转;
5、大轨道沿X轴旋转一定角度后(为了看出3D效果),沿Z轴旋转;

html代码:

<div class="galact"><!-- 太阳 --><div class="sun"></div><!-- 轨道 --><ul class="rail"><li><div class="box1"></div><div class="rail1"></div></li><li><div class="rail2"></div><div class="box2"></div></li><li><div class="rail3"></div><div class="box3"></div></li><li><div class="rail4"></div><div class="box4"></div></li><li><div class="rail5"></div><div class="box5"></div></li></ul></div>

css代码:

/* 轨道 */ul.rail {position: relative;width: 700px;height: 700px;margin: 0 auto;transition: all 2s;transform-style: preserve-3d;perspective: 1000px;}.rail li {color: aliceblue;position: absolute;border-radius: 50%;list-style: none;transform-style: preserve-3d;border: 2px solid white;}.rail li:first-child {width: 700px;height: 700px;animation: scroll 15s infinite linear;}.rail li:nth-child(2) {left: 50px;top: 50px;width: 600px;height: 600px;animation: scroll 12s infinite linear;}.rail li:nth-child(3) {top: 100px;left: 100px;width: 500px;height: 500px;animation: scroll 10s infinite linear;}.rail li:nth-child(4) {top: 150px;left: 150px;width: 400px;height: 400px;animation: scroll 8s infinite linear;}.rail li:nth-child(5) {top: 200px;left: 200px;width: 300px;height: 300px;animation: scroll 5s infinite linear;}/* 公转 */@keyframes scroll {from {transform: rotateX(70deg) rotateZ(0deg);}to {transform: rotateX(70deg) rotateZ(360deg);}}/* 自转 */@keyframes scroll2 {from {transform: rotateZ(0deg);}to {transform: rotateZ(360deg);}}/* 小轨道转圈 */@keyframes scroll3 {to {transform: rotateX(360deg);}  }/* 太阳 */.sun {top: 250px;left: 250px;position: absolute;width: 200px;height: 200px;border-radius: 50%;background: url(images/sun1.jpg) no-repeat;background-size: 100% 100%;}/* 星球 */div[class^=box] {border-radius: 50%;position: absolute;transform-style: preserve-3d;animation: scroll2 5s infinite linear;}ul li .box1 {top: 70px;left: 60px;width: 80px;height: 80px;background-color: pink;transform-style: preserve-3d;background: url(images/ball.jpg) no-repeat;background-size: 100% 100%;transform: rotateX(0deg) rotateZ(0deg) rotateY(0deg);}/* 小轨道 */ul li div[class^='rail'] {position: absolute;border-radius: 50%;outline-offset: -3px;border: 1px solid #fff;/* transform: rotateX(50deg); */}/* 星球1和轨道 */.rail1 {top: 65px;left: 60px;width: 80px;height: 80px;animation: scroll3 7s infinite linear;height: 90px;outline: 5px rgba(200, 138, 138, 0.7) solid;/* transform-style: preserve-3d; */}/* 星球2和轨道 */.box2 {top: 200px;left: -10px;height: 50px;width: 50px;background-color: aqua;background: url(images/ball2.jpg) no-repeat;background-size: 100% 100%;}.rail2 {top: 195px;left: -15px;height: 60px;width: 60px;animation: scroll3 5s infinite linear;outline: 5px rgba(119, 115, 222, 0.75) solid;}/* 星球3和轨道 */.box3 {top: 70px;right: 10px;width: 70px;height: 70px;background-color: gold;background: url(images/ball3.jpg) no-repeat;background-size: 100% 100%;}.rail3 {top: 65px;right: 5px;width: 80px;height: 80px;animation: scroll3 8s infinite linear;outline: 5px rgba(134, 126, 126, 0.75) solid;}/* 星球4和轨道 */.box4 {top: 170px;right: -30px;width: 70px;height: 70px;background-color: blue;background: url(images/ball4.jpg) no-repeat;background-size: 100% 100%;}.rail4 {top: 165px;right: -35px;width: 80px;height: 80px;animation: scroll3 6s infinite linear;outline: 5px rgba(56, 102, 218, 0.6) solid;}/* 星球5和轨道 */.box5 {top: 170px;left: -30px;width: 70px;height: 70px;background-color: rgb(213, 220, 175);background: url(images/ball5.jpg) no-repeat;background-size: 100% 100%;}.rail5 {top: 165px;left: -35px;width: 80px;height: 80px;animation: scroll3 7s infinite linear;outline: 5px rgba(225, 189, 79, 0.6) solid;}

3.添加文字效果

最后,增加一点文字,点缀以下,思路如下:
1、文字需要分段显示,故需要四个段落;
2、每个句子动画分别延时不同时间,营造递进效果;
3、动画设定opacity并设置both属性,让文字渐变;
代码如下:

html

<div class="font"><p>寄蜉蝣于天地,渺沧海之一粟。</p><p>哀吾生之须臾,羡宇宙之无穷。</p><p>挟飞仙以遨游,抱明月而长终。</p><p>知不可乎骤得,托遗响于悲风。</p>
</div>

css代码

.font {position: absolute;top: 30px;left: 20px;color: #fff;/* 垂直显示 */writing-mode: vertical-rl;font: 400 25px/3 '楷体';}/* 每条句子增加不同延时 */.font p:nth-child(1) {animation: fonts 8s linear both;}.font p:nth-child(2) {animation: fonts 8s 1s linear both;}.font p:nth-child(3) {animation: fonts 8s 2s linear both;}.font p:nth-child(4) {animation: fonts 8s 3s linear both;}/* 文字渐进动画 */@keyframes fonts {from {opacity: 0;}to {opacity: 1;}}

4.整体代码

整体代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>太阳系</title><style>* {padding: 0;margin: 0;box-sizing: content-box;}html,body {height: 100%;width: 100%;}/* 背景盒子 */.bg {position: absolute;width: 100%;height: 100%;overflow: hidden;}/* 背景盒子图片需比盒子大,不然旋转时会露出白边 */.bg img {position: absolute;top: -800px;left: -1000px;width: 200%;height: 250%;animation: scroll4 200s infinite linear;}.galact {position: relative;left: 400px;width: 700px;height: 700px;transform-style: preserve-3d;}/* 轨道 */ul.rail {position: relative;width: 700px;height: 700px;margin: 0 auto;transition: all 2s;transform-style: preserve-3d;perspective: 1000px;}.rail li {color: aliceblue;position: absolute;border-radius: 50%;list-style: none;transform-style: preserve-3d;border: 2px solid white;}.rail li:first-child {width: 700px;height: 700px;animation: scroll 15s infinite linear;}.rail li:nth-child(2) {left: 50px;top: 50px;width: 600px;height: 600px;animation: scroll 12s infinite linear;}.rail li:nth-child(3) {top: 100px;left: 100px;width: 500px;height: 500px;animation: scroll 10s infinite linear;}.rail li:nth-child(4) {top: 150px;left: 150px;width: 400px;height: 400px;animation: scroll 8s infinite linear;}.rail li:nth-child(5) {top: 200px;left: 200px;width: 300px;height: 300px;animation: scroll 5s infinite linear;}/* 公转 */@keyframes scroll {from {transform: rotateX(70deg) rotateZ(0deg);}to {transform: rotateX(70deg) rotateZ(360deg);}}/* 自转 */@keyframes scroll2 {from {transform: rotateZ(0deg);}to {transform: rotateZ(360deg);}}/* 小轨道转圈 */@keyframes scroll3 {to {transform: rotateX(360deg);}}/* 大背景转圈 */@keyframes scroll4 {to {transform: rotateZ(360deg);}}/* 太阳 */.sun {top: 250px;left: 250px;position: absolute;width: 200px;height: 200px;border-radius: 50%;background: url(images/sun1.jpg) no-repeat;background-size: 100% 100%;}/* 星球 */div[class^=box] {border-radius: 50%;position: absolute;transform-style: preserve-3d;animation: scroll2 5s infinite linear;}ul li .box1 {top: 70px;left: 60px;width: 80px;height: 80px;background-color: pink;transform-style: preserve-3d;background: url(images/ball.jpg) no-repeat;background-size: 100% 100%;transform: rotateX(0deg) rotateZ(0deg) rotateY(0deg);}/* 小轨道 */ul li div[class^='rail'] {position: absolute;border-radius: 50%;outline-offset: -3px;border: 1px solid #fff;/* transform: rotateX(50deg); */}/* 星球1和轨道 */.rail1 {top: 65px;left: 60px;width: 80px;height: 80px;animation: scroll3 7s infinite linear;height: 90px;outline: 5px rgba(200, 138, 138, 0.7) solid;/* transform-style: preserve-3d; */}/* 星球2和轨道 */.box2 {top: 200px;left: -10px;height: 50px;width: 50px;background-color: aqua;background: url(images/ball2.jpg) no-repeat;background-size: 100% 100%;}.rail2 {top: 195px;left: -15px;height: 60px;width: 60px;animation: scroll3 5s infinite linear;outline: 5px rgba(119, 115, 222, 0.75) solid;}/* 星球3和轨道 */.box3 {top: 70px;right: 10px;width: 70px;height: 70px;background-color: gold;background: url(images/ball3.jpg) no-repeat;background-size: 100% 100%;}.rail3 {top: 65px;right: 5px;width: 80px;height: 80px;animation: scroll3 8s infinite linear;outline: 5px rgba(134, 126, 126, 0.75) solid;}/* 星球4和轨道 */.box4 {top: 170px;right: -30px;width: 70px;height: 70px;background-color: blue;background: url(images/ball4.jpg) no-repeat;background-size: 100% 100%;}.rail4 {top: 165px;right: -35px;width: 80px;height: 80px;animation: scroll3 6s infinite linear;outline: 5px rgba(56, 102, 218, 0.6) solid;}/* 星球5和轨道 */.box5 {top: 170px;left: -30px;width: 70px;height: 70px;background-color: rgb(213, 220, 175);background: url(images/ball5.jpg) no-repeat;background-size: 100% 100%;}.rail5 {top: 165px;left: -35px;width: 80px;height: 80px;animation: scroll3 7s infinite linear;outline: 5px rgba(225, 189, 79, 0.6) solid;}/* 诗句 */.font {position: absolute;top: 30px;left: 20px;color: #fff;/* 垂直显示 */writing-mode: vertical-rl;font: 400 25px/3 '楷体';}/* 每条句子增加不同延时 */.font p:nth-child(1) {animation: fonts 8s linear both;}.font p:nth-child(2) {animation: fonts 8s 1s linear both;}.font p:nth-child(3) {animation: fonts 8s 2s linear both;}.font p:nth-child(4) {animation: fonts 8s 3s linear both;}/* 文字渐进动画 */@keyframes fonts {from {opacity: 0;}to {opacity: 1;}}</style>
</head><body><div class="bg"><img src="images/star.jpg" alt=""></div><div class="galact"><!-- 太阳 --><div class="sun"></div><!-- 轨道 --><ul class="rail"><li><div class="box1"></div><div class="rail1"></div></li><li><div class="rail2"></div><div class="box2"></div></li><li><div class="rail3"></div><div class="box3"></div></li><li><div class="rail4"></div><div class="box4"></div></li><li><div class="rail5"></div><div class="box5"></div></li></ul></div><!-- 加一首诗 --><div class="font"><p>寄蜉蝣于天地,渺沧海之一粟。</p><p>哀吾生之须臾,羡宇宙之无穷。</p><p>挟飞仙以遨游,抱明月而长终。</p><p>知不可乎骤得,托遗响于悲风。</p></div></body></html>

总结

综上,就是本次分享全部内容,前端小菜鸡一枚,如发现代码错误或优化空间,欢迎大佬随时指正,不胜感激。
代码及图片打包下载可移步:https://download.csdn.net/download/qq_42825643/85152425

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23537.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

涌html编写星空图,canvas实现十二星座星空图

效果如下&#xff1a; 代码如下&#xff1a;canvas星座 * { margin: 0; padding: 0; } #box{ margin:10px 0 0 10px;; } input{ outline: none; font-size:16px; } p{ margin-bottom: 10px } input[typedate]{ height:36px; text-indent:10px; } input[typebutton]{ background…

联邦计算在百度观星盘的实践

导读&#xff1a;本文简短综述联邦计算领域的核心技术点&#xff0c;随着联邦计算在产业界的应用及普及&#xff0c;保护数据隐私与解决数据孤岛&#xff0c;二者可以兼得&#xff0c;为数字广告营销等领域提供了一个全新思路。 全文4761字&#xff0c;预计阅读时间12分钟。 …

c语言 校正时区算法,如何正确校正星盘中的时差与时区

如何正确校正星盘中的时差与时区以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01; 制作命盘中最容易产生误差的就是时区问题了。 因为中国幅员辽阔&#xff0c;横跨好几个时区&#xff0c;但都…

C#: 星座星盘计算算法

前一篇提到计算八卦五行的算法&#xff0c;这里要跟大家分享一个星座星盘的算法。你们可能觉得笔者怎么开始研究这些玄幻的东西了&#xff0c;确实笔者觉得有一些真的是很扯&#xff0c;不过笔者的目的是为了研究大数据。好了&#xff0c;说到星盘笔者发现新浪星座有个很不错的…

星盘php,占星树星盘教程:如果通过星盘推算盘主适合哪个领域的工作?

塔罗 星盘占卜&#xff0c;请找阳阳老师 ~ XYZ&#xff1a;无论你遇到任何疑问&#xff0c;都请随时留言给阳阳老师&#xff0c;我会在看到信息后的第一时间回复的 Orz... 关注我&#xff0c;每天一个关于命理学的一个小知识(笑) ————其它热点内容请在文章底部查看 今天&a…

【Prompting】ChatGPT Prompt Engineering开发指南(6)

ChatGPT Prompt Engineering开发指南&#xff1a;Expanding/The Chat Format Expanding自定义对客户电子邮件的自动回复提醒模型使用客户电子邮件中的详细信息 The Chat Format总结内容来源 在本教程中&#xff0c;第一部分学习生成客户服务电子邮件&#xff0c;这些电子邮件是…

做外贸如何能提高开发信的回复率?

Snow给我分享了一封他们的开发信&#xff0c;我觉着写得很好&#xff0c;分享给大家。 各位可以仔细看下这封开发信。 一封好的开发信&#xff0c;要包含下面一些个要点&#xff1a; 1. 尽可能的简单&#xff0c;不要太长&#xff0c;一般3-8句话就可以了&#xff0c;太长客户…

ChatGPT背后的指令学习是什么?PSU最新首篇《指令学习》技术全面综述,详述指令学习关键问题

来源: 专知 任务语义可以用一组输入到输出的例子或一条文本指令来表示。传统的自然语言处理(NLP)机器学习方法主要依赖于大规模特定任务样本集的可用性。出现了两个问题: 首先&#xff0c;收集特定于任务的标记示例&#xff0c;不适用于任务可能太复杂或太昂贵而无法注释&#…

使用Python机器学习预测足球比赛结果:第一篇 数据采集 (下)

利物浦7比0狂胜曼联&#xff0c;这个锅不能再让C罗背了吧。预测足球比分有什么好方法吗&#xff1f; 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 探索足球结果和赔率的 Python 项目。 那么&#xff0c;让我们按照我所遵循的步骤进行&a…

cas latex模板参考文献APA等引用格式(Elsevier期刊)

目录 一、在模板中引入需要的 .bst 文件&#xff0c;每个文件都是一种参考文献的格式 二、模板中引入.bst 文件的格式 三、在 \documentclass 之后&#xff0c;\begin{document} 之前&#xff0c;引入 natbib 包 四、在文章正文中引用参考文献 例如&#xff1a;期待的参考文献格…

作为测试人员,我们该如何看待AI

前几天看到一篇文章讨论从测试人员的角度去理解AI的&#xff0c;稍微翻译了一下。原文地址https://stevethedoc.wordpress.com/2023/06/18/how-should-we-view-ai-as-testers 上周三和周四&#xff0c;我有幸与我的两位同事Sushmitha Sivan和Bhavana Akula一起参加了伦敦的AI峰…

【Ai工具合集,一定有你需要的!】

花费了一天的时间测试了市面上各大Ai工具&#xff0c;然后帮大家整理总结出来了这些工具&#xff0c;一定记得点赞收藏保存&#xff0c;后面肯定会用到&#xff01; 使用说明 1.部分Ai工具需要魔法上网&#xff0c;请自行解决&#xff1b;部分工具需要收费&#xff0c;可以尝…

把 ChatGPT 加入 Flutter 开发,会有怎样的体验?

前言 ChatGPT 最近一直都处于技术圈的讨论焦点。它除了可作为普通用户的日常 AI 助手&#xff0c;还可以帮助开发者加速开发进度。声网社区的一位开发者"小猿"就基于 ChatGPT 做了一场实验。仅 40 分钟就实现了一个互动直播 Demo。他是怎么做的呢&#xff1f;他将整个…

加入Beezy GPT-4体验官俱乐部,成为高级AI功能“领航员”

目前&#xff0c;Beezy已率先接入GPT-4 API &#xff0c;无需科学上网&#xff0c;为您带来简单好用的智能体验。 GPT-4 VS GPT-3.5 一、优点 GPT-4和 GPT-3.5语言模型在前沿技术的推动下&#xff0c;都具备了相当出色的自然语言生成能力。相较于GPT-3.5&#xff0c; GPT-4 实现…

迎来新兴市场数字化转型红利,雅乐科技潇洒画出“向上曲线”

3月14日&#xff0c;“中东小腾讯”雅乐科技公布了最新一季财报。财报显示&#xff0c;雅乐科技2022年第四季度&#xff0c;营收7510万美元&#xff0c;同比增长11.2%&#xff1b;净利润为1660万美元&#xff0c;净利润率22.1%&#xff1b;2022年全年营收3.036亿美元&#xff0…

梦幻西游手游排队显示服务器已满,梦幻西游手游排队进不去 一直排队解决方法...

今天小编为大家带来了梦幻西游手游排队进不去 一直排队解决方法&#xff0c;感兴趣的朋友们可以跟着小编去下文了解一下哦&#xff01; 梦幻西游手游排队进不去&#xff0c;一直排队怎么办&#xff1f;游戏新开服&#xff0c;总是会有一堆服务器排队问题&#xff0c;那么梦幻西…

梦幻西游单机架设教程-端游篇

准备工具&#xff1a; GGE 服务端 客户端 服务器 源码 废话不多说教程开始 我们打开GEE双击打开ggemain.exe这个程序 程序打开之后点击右上角文件设置 关联lua文件和关联项目文件后保存 打开服务端找到服务端. sublime-projectl打开把127.0.0.1改成我们服务器的ip 5、把默认端口…

好玩的免费GM游戏整理汇总

前言 我所有架设的游戏发布和更新都会实时整理到本文 https://echeverra.cn/h5game &#xff0c;建议收藏。 游戏全部免费带GM后台&#xff08;可以免费充值发送游戏道具&#xff09;&#xff0c;且长期维护&#xff0c;其中大天使之剑和梦幻西游我会一直一直维护下去。 有人…

【手游服务端】梦幻西游十五门派端+教程+GM物品后台

下载链接&#xff1a;https://pan.baidu.com/s/1ds_xFq1Rd1_xC4515BRGXw 提取码&#xff1a;soho 【手游服务端】梦幻西游十五门派端教程GM物品后台

最新亲测转转交易猫闲鱼后台源码

教程&#xff1a;修改数据库账号密码直接使用。 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3