软件系统开发定制200行Html5+CSS3+JS代码实现动态圣诞树

 一、前言  

  • 最近CSDN软件系统开发定制的热榜出现了很多用Python、C/C++软件系统开发定制等编程语言实现的圣诞树,软件系统开发定制发现很少用前端的,软件系统开发定制这篇文章用前端三大杀手Html5、CSS、Js软件系统开发定制来实现动态圣诞树。

 二、圣诞树

效果展示:

备注:

  • 整体圣诞树分为3个部分,书的主干、粒子特效、树上的卡片
  • 树上的卡片(重点):每一张卡片上都有一个名字,代表圣诞树的叶子,后面可以根据自己需求更改,比如全部改成喜欢人的名字,在JS代码的第五行内更改内容
  • 树的动态旋转通过js实现、主干是html5、样式CSS

三、步骤

1.下载VSCode

下载链接:

  • 在Hbuilder、idea运行也是可以的,这里推荐使用VSCode

2.配置插件

三个插件对应的功能: 

  • 改写标签后自动完善
  • 切换成中文页面
  • 让代码在网页中打开,默认键Alt+B

3.构建三个文件

  • 在桌面新建一个空的文件夹,用VSCode打开
  • 在VSCode新建三个文件 index .html   domtree.css   domtree.js  (文件名字要和这个一样,不然会出错),保存别忘了
  • 对于文件的层级问题,三个index .html   domtree.css   domtree.js 在同一级文件夹内不要修改,如果在下一个层级或者上面一个层级需要改动选择
  • 在index.html代码界面,默认键Alt+B 或者 鼠标右击,选择倒数第三个Open In  Default  Browser默认浏览器打开

4.添加额外功能

修改背景:

  • Css代码的第39到43行,可以更改不同的背景颜色或者背景图片,鼠标放在红色的框上面会出现,上图所示的一个颜色选择,拉动就可以选择不同的颜色背景

添加音乐:

  • 在index.html代码中的第23行添加下列代码:                                                            <embed src="song.mp3" hidden="false" autostart="true" loop="true">

  • src="音乐地址",把想要播放的音乐,提前放到这个文件夹中,把这个音乐的命名填入src中就可以播放音乐
  • hidden="true"表示隐藏音乐播放按钮,hidden="false"开启音乐播放按钮
  • autostart="true" 打开网页加载完后自动播放
  • loop="true"循环播放 如仅想播放一次则为:loop="false"

修改卡片上的内容:

  • 圣诞树上面的卡片是由不同的类型的,有的卡片可以下拉查看下面的内容
  • 圣诞树上面的卡片是可以修改内容的,在JS代码的第五行的const greetings = [  ]修改,把里面的内容换成你想要的就行,如果叶子不够,在后面还可以加入。

四、编码实现

CSS代码:

  1. /*********************************************
  2. * RESET
  3. *********************************************/
  4. html{color:#000;background:#222222;}
  5. a{cursor:pointer;}
  6. html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}
  7. table{border-collapse:collapse;border-spacing:0;}
  8. fieldset,img{border:0;}
  9. address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
  10. li{list-style:none;}
  11. caption,th{text-align:left;}
  12. /* h1,h2,h3,h4,h5,h6{font-size:100%;} */
  13. q:before,q:after{content:'';}
  14. abbr,acronym {border:0;font-variant:normal;}
  15. sup {vertical-align:text-top;}
  16. sub {vertical-align:text-bottom;}
  17. input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;outline-style:none;outline-width:0pt;}
  18. legend{color:#000;}
  19. a:focus,object,h1,h2,h3,h4,h5,h6{-moz-outline-style: none; border:0px;}
  20. /*input[type="Submit"]{cursor:pointer;}*/
  21. strong {font-weight: bold;}
  22. /*********************************************
  23. * GLOBAL
  24. *********************************************/
  25. body, html {
  26. overflow: hidden;
  27. font-family: Helvetica, Arial, sans-serif;
  28. color: #fff;
  29. font-size: 11px;
  30. width: 100%;
  31. height: 100%;
  32. background: #b72424;
  33. background: -moz-radial-gradient(center, ellipse cover, #b72424 0%, #492727 100%);
  34. background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#b72424), color-stop(100%,#492727));
  35. background: -webkit-radial-gradient(center, ellipse cover, #b72424 0%,#492727 100%);
  36. background: radial-gradient(center, ellipse cover, #b72424 0%,#492727 100%);
  37. }
  38. @keyframes spin {
  39. 0% { transform: rotateY( 0deg ); }
  40. 100% { transform: rotateY( 360deg ); }
  41. }
  42. body {
  43. perspective: 3000px;
  44. perspective-origin: 0 20%;
  45. }
  46. .tree {
  47. margin: 0 auto;
  48. position: relative;
  49. animation: spin 18s infinite linear;
  50. transform-origin: 50% 0;
  51. transform-style: preserve-3d;
  52. }
  53. .tree * {
  54. position: absolute;
  55. transform-origin: 0 0;
  56. }

Html代码: 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="description" content="A Christmas tree built out of form elements." />
  6. <meta name="author" content="Hakim El Hattab" />
  7. <meta http-equiv="X-UA-Compatible" content="chrome=1">
  8. <title>DOM Tree</title>
  9. <link href="domtree.css" rel="stylesheet" media="screen" />
  10. <link href='https://fonts.googleapis.com/css?family=Armata' rel='stylesheet' type='text/css'>
  11. </head>
  12. <body>
  13. <div class="tree"></div>
  14. <script src="domtree.js"></script>
  15. <!-- Third party scripts and sharing UI -->
  16. <p class="project-title">DOM Tree</p>
  17. <div class="credits">
  18. <a href="https://blog.csdn.net/qq_53673551?spm=1000.2115.3001.5343">知心宝贝</a>
  19. <a href="https://twitter.com/hakimel">文章代码参考@hakimel</a>
  20. </div>
  21. <style type="text/css" media="screen">
  22. .project-title {
  23. position: absolute;
  24. left: 25px;
  25. bottom: 20px;
  26. font-size: 16px;
  27. color: #fff;
  28. }
  29. .credits {
  30. position: absolute;
  31. right: 20px;
  32. bottom: 25px;
  33. font-size: 15px;
  34. z-index: 20;
  35. color: #fff;
  36. vertical-align: middle;
  37. }
  38. .credits * + * {
  39. margin-left: 15px;
  40. }
  41. .credits a {
  42. padding: 8px 10px;
  43. color: rgba(255,255,255,0.7);
  44. border: 2px solid rgba(255,255,255,0.7);
  45. text-decoration: none;
  46. }
  47. .credits a:hover {
  48. border-color: #fff;
  49. color: #fff;
  50. }
  51. @media screen and (max-width: 1040px) {
  52. .project-title {
  53. display: none;
  54. }
  55. .credits {
  56. width: 100%;
  57. left: 0;
  58. right: auto;
  59. bottom: 0;
  60. padding: 30px 0;
  61. background: #b72424;
  62. text-align: center;
  63. }
  64. .credits a {
  65. display: inline-block;
  66. margin-top: 7px;
  67. margin-bottom: 7px;
  68. }
  69. }
  70. </style>
  71. <script>
  72. var _gaq = [['_setAccount', 'UA-15240703-1'], ['_trackPageview']];
  73. (function(d, t) {
  74. var g = d.createElement(t),
  75. s = d.getElementsByTagName(t)[0];
  76. g.async = true;
  77. g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  78. s.parentNode.insertBefore(g, s);
  79. })(document, 'script');
  80. </script>
  81. </body>
  82. </html>

JS代码: 

  1. const width = 500;
  2. const height = 600;
  3. const quantity = 150;
  4. const types = [ 'text', 'select', 'progress', 'meter', 'button', 'radio', 'checkbox' ];
  5. const greetings = [ '知心宝贝','知心宝贝','Merry Christmas','Merry Christmas','Merry Christmas','Merry Christmas','知心宝贝','12月25','知心宝贝','Merry Christmas','Happy Holidays', ' 知心宝贝','12月25','知心宝贝','Merry Christmas','知心宝贝','Merry Christmas','知心宝贝' ];
  6. let tree = document.querySelector( '.tree' ),
  7. treeRotation = 0;
  8. tree.style.width = width + 'px';
  9. tree.style.height = height + 'px';
  10. window.addEventListener( 'resize', resize, false );
  11. // The tree
  12. for( var i = 0; i < quantity; i++ ) {
  13. let element = null,
  14. type = types[ Math.floor( Math.random() * types.length ) ],
  15. greeting = greetings[ Math.floor( Math.random() * greetings.length ) ];
  16. let x = width/2,
  17. y = Math.round( Math.random() * height );
  18. let rx = 0,
  19. ry = Math.random() * 360,
  20. rz = -Math.random() * 15;
  21. let elemenWidth = 5 + ( ( y / height ) * width / 2 ),
  22. elemenHeight = 26;
  23. switch( type ) {
  24. case 'button':
  25. element = document.createElement( 'button' );
  26. element.textContent = greeting;
  27. element.style.width = elemenWidth + 'px';
  28. element.style.height = elemenHeight + 'px';
  29. break;
  30. case 'progress':
  31. element = document.createElement( 'progress' );
  32. element.style.width = elemenWidth + 'px';
  33. element.style.height = elemenHeight + 'px';
  34. if( Math.random() > 0.5 ) {
  35. element.setAttribute( 'max', '100' );
  36. element.setAttribute( 'value', Math.round( Math.random() * 100 ) );
  37. }
  38. break;
  39. case 'select':
  40. element = document.createElement( 'select' );
  41. element.setAttribute( 'selected', greeting );
  42. element.innerHTML = '<option>' + greetings.join( '</option><option>' ) + '</option>';
  43. element.style.width = elemenWidth + 'px';
  44. element.style.height = elemenHeight + 'px';
  45. break;
  46. case 'meter':
  47. element = document.createElement( 'meter' );
  48. element.setAttribute( 'min', '0' );
  49. element.setAttribute( 'max', '100' );
  50. element.setAttribute( 'value', Math.round( Math.random() * 100 ) );
  51. element.style.width = elemenWidth + 'px';
  52. element.style.height = elemenHeight + 'px';
  53. break;
  54. case 'text':
  55. default:
  56. element = document.createElement( 'input' );
  57. element.setAttribute( 'type', 'text' );
  58. element.setAttribute( 'value', greeting );
  59. element.style.width = elemenWidth + 'px';
  60. element.style.height = elemenHeight + 'px';
  61. }
  62. element.style.transform = `translate3d(${x}px, ${y}px, 0px) rotateX(${rx}deg) rotateY(${ry}deg) rotateZ(${rz}deg)`;
  63. tree.appendChild( element );
  64. }
  65. // Let it snow
  66. for( var i = 0; i < 200; i++ ) {
  67. let element = document.createElement( 'input' );
  68. element.setAttribute( 'type', 'radio' );
  69. let spread = window.innerWidth/2;
  70. let x = Math.round( Math.random() * spread ) - ( spread / 4 ),
  71. y = Math.round( Math.random() * height ),
  72. z = Math.round( Math.random() * spread ) - ( spread / 2 );
  73. let rx = 0,
  74. ry = Math.random() * 360,
  75. rz = 0;
  76. if( Math.random() > 0.5 ) element.setAttribute( 'checked', '' );
  77. element.style.transform = `translate3d(${x}px, ${y}px, ${z}px) rotateX(${rx}deg) rotateY(${ry}deg) rotateZ(${rz}deg)`;
  78. tree.appendChild( element );
  79. }
  80. function resize() {
  81. tree.style.top = ( ( window.innerHeight - height - 100 ) / 2 ) + 'px';
  82. }
  83. resize();

附录:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发