Advertisement
DigitalMag

Page hangs

Feb 1st, 2020
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="">
  3.  
  4.     <head>
  5.  
  6.         <meta charset="utf-8">
  7.  
  8.         <!--
  9.         <link rel="stylesheet" href="wait.css" />
  10.         -->
  11.  
  12.         <style>
  13.             #container{
  14.                 background-color: beige;
  15.                 position: absolute;
  16.                 bottom:0;
  17.                 top:0;
  18.                 left:0;
  19.                 right:0;
  20.             }
  21.  
  22.             .animate_container{
  23.               margin:auto;
  24.              
  25.               width:100%;
  26.               height:100%;
  27.              
  28.               background-color:beige;
  29.               text-align:center;
  30.               cursor:pointer;
  31.              
  32.             }
  33.             .animate_container .circle{
  34.               background-color: lightgray;
  35.               width:1rem;
  36.               height:1em;        
  37.               margin-left:1em;
  38.               margin-right:1em;
  39.               display:inline-block;
  40.               transition:1s;
  41.               border-radius:0.5em;
  42.             }
  43.             .animate_container .active{
  44.                 background-color:brown;    
  45.                 box-shadow: 0px 0px 5px 5px brown;    
  46.             }      
  47.         </style>
  48.  
  49.         <script>
  50.  
  51.             var dom = document;
  52.             var vom = {};
  53.             dom.get_s = document.querySelectorAll;
  54.  
  55.             function Elem(type_name, txt, css_cls){    
  56.                 var elem = document.createElement(type_name);  
  57.                 elem.innerText = txt;   //value
  58.                
  59.                 if (css_cls) {
  60.                     elem.className = css_cls;
  61.                 }
  62.                
  63.                 return elem;   
  64.             }
  65.  
  66.  
  67.             vom.add = function(container, elem, cls)
  68.             {
  69.                 if (typeof container == 'string')   {  
  70.                     container = document.querySelector(container);
  71.                     }
  72.                 if (typeof elem == 'string'){
  73.                    
  74.                     elem = document.createElement(elem);
  75.                     if (cls) elem.className = cls;
  76.                    
  77.                 }
  78.                
  79.                 container.appendChild(elem);
  80.                
  81.                 return elem;       
  82.             };
  83.  
  84.             HTMLElement.prototype.vs = function (dict) {
  85.  
  86.                 for (var key in dict){
  87.                     this.setAttribute(key, dict[key]);
  88.                 }
  89.  
  90.                 return this;
  91.             };
  92.  
  93.  
  94.  
  95.  
  96.             var animate = {
  97.                 elem_quantity : 5,
  98.                 time_wait : 500,
  99.                 animates : [],
  100.                 stop : function(){
  101.                
  102.                    for(var i=0;i<animates.length;i++){
  103.                    
  104.                         clearInterval(this.animates[i]);
  105.                     }
  106.                     this.animates = [];
  107.                    
  108.                 },
  109.                 start : function(elem){
  110.                     var anim =
  111.                         vom.add(elem,'div','animate_container'
  112.                     );             
  113.                     var i=0; while(i<animate.elem_quantity){
  114.                         vom.add(anim, 'div', 'circle');
  115.  
  116.                     }
  117.                                  
  118.                     return wait_animate(anim);
  119.                              
  120.                 }                              
  121.                
  122.             }
  123.            
  124.             var animate_start = function(elem){
  125.                 var anim =
  126.                     vom.add(elem,'div','animate_container'
  127.                 );             
  128.                 var i=0; while(i<animate.elem_quantity){
  129.                     vom.add(anim, 'div', 'circle');
  130.  
  131.                 }
  132.                              
  133.                 return wait_animate(anim);
  134.                          
  135.             }              
  136.            
  137.             function wait_animate(elem){
  138.            
  139.                _time = animate.time_wait || 500;
  140.            
  141.                 var elems=(elem || dom).querySelectorAll(
  142.                     '.animate_container .circle'
  143.                 );
  144.            
  145.                 var key = 0;
  146.                        
  147.                 var _animate = setInterval(function(){                 
  148.  
  149.                     var len = elems.length - 1;
  150.                    
  151.                     if (len < 0)
  152.                         throw new Error ('missing elements inside container for animate');
  153.                    
  154.                     var pre = key > 0 ? key - 1  : len;
  155.                     elems[key].className = 'circle active';
  156.                     elems[pre].className = 'circle';
  157.  
  158.                   if (key<len) {key+=1} else key=0;
  159.                  
  160.                 }, _time);
  161.  
  162.                 animate.animates.push(_animate);
  163.                
  164.                 return _animate;
  165.                
  166.             }
  167.  
  168.  
  169.         </script>
  170.  
  171.     </head>
  172.  
  173.     <body>
  174.        
  175.         <div id="container" onclick='animate_start(this)'>
  176.        
  177.         </div>
  178.        
  179.  
  180.     </body>
  181.  
  182. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement