tnblog
首页
视频
资源
登录

圣诞树

6121人阅读 2022/1/27 11:59 总访问:177194 评论:1 收藏:1 手机
分类: JS


index.html

  1. <!DOCTYPE html>
  2. <html>
  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>圣诞树</title>
  9. <link href="css/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></div>
  14. <script src="js/domtree.js"></script>
  15. <script>
  16. var _gaq = [['_setAccount''UA-15240703-1'], ['_trackPageview']];
  17. (function(d, t{    
  18. var g = d.createElement(t),
  19.     s = d.getElementsByTagName(t)[0];
  20. g.async = true;
  21. g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  22. s.parentNode.insertBefore(g, s);
  23. })(document'script');
  24. </script>
  25.     </body>
  26. </html>

domtree.css

  1. html{color:#000;background:#222222;}
  2. a{cursor:pointer;}
  3. 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;}
  4. table{border-collapse:collapse;border-spacing:0;}
  5. fieldset,img{border:0;}
  6. address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
  7. li{list-style:none;}
  8. caption,th{text-align:left;}
  9. /* h1,h2,h3,h4,h5,h6{font-size:100%;} */
  10. q:before,q:after{content:'';}
  11. abbr,acronym {border:0;font-variant:normal;}
  12. sup {vertical-align:text-top;}
  13. sub {vertical-align:text-bottom;}
  14. input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;outline-style:none;outline-width:0pt;}
  15. legend{color:#000;}
  16. a:focus,object,h1,h2,h3,h4,h5,h6{-moz-outline-style: none; border:0px;}
  17. /*input[type="Submit"]{cursor:pointer;}*/
  18. strong {font-weight: bold;}
  19. bodyhtml {
  20. overflow: hidden;
  21. font-family: Helvetica, Arial, sans-serif;
  22. color#fff;
  23. font-size11px;
  24. width100%;
  25. height100%;
  26. background-imageurl(../img/background.jpg);
  27. }
  28. @keyframes spin {
  29. 0% { transformrotateY( 0deg ); }
  30. 100% { transformrotateY( 360deg ); }
  31. }
  32. body {
  33. perspective3000px;
  34. perspective-origin0 20%;
  35. }
  36. .tree {
  37. margin0 auto;
  38. position: relative;
  39. animation: spin 18s infinite linear;
  40. transform-origin50% 0;
  41. transform-style: preserve-3d;
  42. }
  43. .tree * {
  44. position: absolute;
  45. transform-origin0 0;
  46. }

domtree.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 = [ 'Joyeuses Fêtes','Felices Fiestas','God Jul','Boas Festas','Mutlu Bayramlar','Sarbatori Fericite','Jie Ri Yu Kuai','Bones Festes','Tanoshii kurisumasu wo','Buone Feste','Happy Holidays''Ii holide eximnandi','Frohe Feiertage','Prettige feestdagen','Beannachtaí na Féile','Vesele Praznike','Selamat Hari Raya','Sretni praznici' ];
  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. forvar 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. ifMath.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. forvar 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. ifMath.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();

背景图

评价

剑轩

2022/1/30 20:22:46

新年快乐~

sometimes ever,sometimes never
排名
21
文章
27
粉丝
11
评论
12
MySQL数据库基础
剑轩 : 大神教我学mysql!
MySQL概述与安装配置
剑轩 : PHP是目前最流行的 Web 开发语言
JAVA8 十大新特性详解
叼着奶瓶逛酒吧 : 文章写得真心不错,加油哈
Java学习 - Java语言基础
剑轩 : 每个小标题颜色加深一点会更好哦
Java学习 - Java语言简介
剑轩 : 请注意,java大神开讲了
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术