How I speed up passing a rainbow through text

 I speed up my JavaScript animations of the color of each letter in lines of text by: 

  • using 'IntersectionObserver' to only run the animations when the text is visible
  • coloring the elements for the letters in steps with delays in-between. (I also create and get references to these elements in steps)
  • sometimes coloring whole lines rather than each letter 
  • sometimes just coloring lines that are 'above the fold'
  • only slowly changing the colors of the letters (about every 20 seconds)
  • sometimes not having a 'transition' for the color changes
  • delaying the start of the coloring until a few seconds after the page loads
  • making the page load quicker by making the page small by putting the JavaScript in separate files. I create 'script' elements in JavaScript and set their 'src'. I use 'load' events to create dependencies between the scripts
  • not coloring the text on mobiles and tablets. I look at the 'user agent string' and use 'media queries'
  • having a separate page for mobiles with no coloring of text. (Google does not recommend this)


I color the letters by adding 'spans' around each letter and then getting references to each 'span'. I add a CSS class to each span and add a stylesheet with the color 'transition' using JavaScript. The result looks like a rainbow passing through the letters.


There is some sample code at: 

    'codepen.io/Bert-Beckwith/pen/eYobEKq'


Unfortunately, coloring each letter with JavaScript is very slow. And all the 'spans' and 'transitions' make things worse.


But I did not speed up the coloring of letters of text in my JavaScript game. I do not notice the performance problems when playing my game.


A better way might be to have one 'keyframe' for the rainbow colors and different negative 'animation-delays' for each letter. The 'animation-delays' could be set with 'nth-child'. There is some sample code for this at: 


    'codepen.io/Bert-Beckwith/pen/ZENYmmo'


The constant coloring of the letters still makes this slow. I would have to create the CSS in JavaScript to allow for animations of a random duration.


There are more tips at: [bbingo.xyz/t](http://bbingo.xyz/t)


There are more tips at: bbingo.xyz/techtips/




Comments

Popular posts from this blog

Steve Jobs quotes

Dark mode using 'invert' does not work on Firefox

Free quotes