<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Envato Tuts+ Web Design</title><managingEditor>noemail@noemail.org (Patrick Jaoko)</managingEditor><pubDate>Tue, 18 Nov 2025 05:39:27 GMT</pubDate><link>https://webdesign.tutsplus.com</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:owner><itunes:email>noemail@noemail.org</itunes:email></itunes:owner><item><title>HTML5 Canvas Optimization: A Practical Example</title><link>https://webdesign.tutsplus.com/html5-canvas-optimization-a-practical-example--active-11893t</link><author>noemail@noemail.org (Patrick Jaoko)</author><pubDate>Mon, 20 Jan 2014 02:09:19 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/active-11893</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block-wysi content-block" id="iedu"&gt;
&lt;p&gt;If you've been doing JavaScript development long enough, you've most likely crashed your browser a few times. The problem usually turns out to be some JavaScript bug, like an endless &lt;code&gt;while&lt;/code&gt; loop; if not, the next suspect is page transformations or animations - the kind that involve adding and removing elements from the webpage or animating CSS style properties. This tutorial focuses on optimising animations produced using JS and the HTML5 &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; element.&lt;/p&gt;

&lt;p&gt;This tutorial starts and ends with what the HTML5 animation widget you see below:&lt;/p&gt;
&lt;div&gt;&lt;iframe src="https://activetuts.s3.amazonaws.com/tuts/453_optimiseCanvas/widget.html" width="590" height="240" loading="lazy"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;We will take it with us on a journey, exploring the different emerging canvas optimization tips and techniques and applying them to the widget's JavaScript source code. The goal is to improve on the widget's execution speed and end up with a smoother, more fluid animation widget, powered by leaner, more efficient JavaScript.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://cdn.tutsplus.com/active/uploads/legacy/tuts/453_optimiseCanvas/optimise_canvas_source.zip"&gt;source download&lt;/a&gt; contains the HTML and JavaScript from each step in the tutorial, so you can follow along from any point.&lt;/p&gt;
&lt;p&gt;Let's take the first step.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Step 1: Play the Movie Trailer&lt;/h2&gt;
&lt;p&gt;The widget above is based on the &lt;a href="https://www.youtube.com/watch?v=HOfdboHvshg"&gt;movie trailer for Sintel&lt;/a&gt;, a 3D animated movie by the &lt;a href="http://www.blender.org/blenderorg/blender-foundation/"&gt;Blender Foundation&lt;/a&gt;. It's built using two of HTML5's most popular additions: the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; elements.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; loads and plays the Sintel video file, while the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; generates its own animation sequence by taking snapshots of the playing video and blending it with text and other graphics. When you click to play the video, the canvas springs to life with a dark background that's a larger black and white copy of the playing video. Smaller, colored screen-shots of the video are copied to the scene, and glide across it as part of a film roll illustration.&lt;/p&gt;
&lt;div&gt;
&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step1.jpg" alt loading="lazy" width="595px" height="320px" class="resized-image resized-image-desktop" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step1.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step1.jpg" alt loading="lazy" width="595px" height="320px" class="resized-image resized-image-tablet" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step1.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=360/active/uploads/legacy/tuts/453_optimiseCanvas/source/step1.jpg" alt loading="lazy" width="380px" height="208px" class="resized-image resized-image-mobile" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=720/active/uploads/legacy/tuts/453_optimiseCanvas/source/step1.jpg 2x"&gt;
&lt;/div&gt;
&lt;p&gt;In the top left corner, we have the title and a few lines of descriptive text that fade in and out as the animation plays. The script's performance speed and related metrics are included as part of the animation, in the small black box at the bottom left corner with a graph and vivid text. We'll be looking at this particular item in more detail later.&lt;/p&gt;
&lt;p&gt;Finally, there's a large rotating blade that flies across the scene at the beginning of the animation, whose graphic is loaded from an external PNG image file.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Step 2: View the Source&lt;/h2&gt;
&lt;p&gt;The source code contains the usual mix of HTML, CSS and Javascript. The HTML is sparse: just the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; tags, enclosed in a container &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"animationWidget"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #f4bf75"&gt;&amp;lt;canvas&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"368"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"208"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"mainCanvas"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #f4bf75"&gt;&amp;lt;video&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"184"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"104"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"video"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;autobuffer=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"autobuffer"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;controls=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"controls"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;poster=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"poster.jpg"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #f4bf75"&gt;&amp;lt;source&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;src=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"sintel.mp4"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"video/mp4"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/source&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #f4bf75"&gt;&amp;lt;source&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;src=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"sintel.webm"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"video/webm"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/source&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #f4bf75"&gt;&amp;lt;/video&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The container &lt;code&gt; &amp;lt;div&amp;gt; &lt;/code&gt; is given an ID (&lt;code&gt;animationWidget&lt;/code&gt;), which acts as a hook for all the CSS rules applied to it and its contents (below).&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;#animationWidget&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #90a959"&gt;#222&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;relative&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;570px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;220px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;#animationWidget&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;canvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #90a959"&gt;#222&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;absolute&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #90a959"&gt;5px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;left&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #90a959"&gt;5px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;#animationWidget&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;absolute&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #90a959"&gt;110px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;left&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt;&lt;span style="color: #90a959"&gt;380px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;While HTML and CSS are the marinated spices and seasoning, its the JavaScript that's the meat of the widget.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At the top, we have the main objects that will be used often through the script, including references to the canvas element and its 2D context.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;init()&lt;/code&gt; function is called whenever the video starts playing, and sets up all the objects used in the script.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;sampleVideo()&lt;/code&gt; function captures the current frame of the playing video, while &lt;code&gt;setBlade()&lt;/code&gt; loads an external image required by the animation.&lt;/li&gt;
&lt;li&gt;The pace and contents of the canvas animation are controlled by the &lt;code&gt;main()&lt;/code&gt; function, which is like the script's heartbeat. Run at regular intervals once the video starts playing, it paints each frame of the animation by first clearing the canvas, then calling each one of the script's five drawing functions:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;drawBackground()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drawFilm()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drawTitle()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drawDescription()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drawStats()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As the the names suggest, each drawing function is responsible for drawing an item in the animation scene. Structuring the code this way improves flexibility and makes future maintenance easier.&lt;/p&gt;
&lt;p&gt;The full script is shown below. Take a moment to assess it, and see if you can spot any changes you would make to speed it up.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;canvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt; &lt;span style="color: #949494"&gt;//the canvas tag isn't supported
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// points to the HTML canvas element above
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;//the drawing context of the canvas element
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;video&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// points to the HTML video element
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameDuration&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;33&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// the animation's speed in milliseconds
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;play&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;init&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// The init() function is called whenever the user presses play &amp;amp; the video starts/continues playing
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;ended&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d28445"&gt;function&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d28445"&gt;true&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;//drawStats() is called one last time when the video end, to sum up all the statistics 		
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// this is an array of images, used to store all the snapshots of the playing video taken over time. These images are used to create the 'film reel'
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgrounds&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// this is an array of images, used to store all the snapshots of the playing video taken over time. These images are used as the canvas background
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//An canvas element to store the image copied from blade.png 
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;blade.png&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//path to the blade's image source file
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// stores the last value of mozPaintCount sampled
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt; &lt;span style="color: #949494"&gt;// an array containing all measured values of mozPaintCount over time
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt; &lt;span style="color: #949494"&gt;// an array containing all the execution speeds of main(), measured in milliseconds
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt; &lt;span style="color: #949494"&gt;// an array containing the calculated frames per secong (fps) of the script, measured by counting the calls made to main() per second
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// counts the number of times main() is executed per second.
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// the last time main() was called
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// Called when the video starts playing. Sets up all the javascript objects required to generate the canvas animation and measure perfomance
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;init&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;currentTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Image&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;src&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;blade.png&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;onload&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;setBlade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgrounds&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setTimeout&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;getStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;1000&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// As the scripts main function, it controls the pace of the animation
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setTimeout&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameDuration&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-46" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;46&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paused&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;ended&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-47" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;47&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-48" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;48&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;now&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Date&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;().&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getTime&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-49" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;49&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-50" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;50&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;now&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-51" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;51&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-52" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;52&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;now&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-53" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;53&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;readyState&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-54" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;54&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-55" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;55&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-56" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;56&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//clear the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-57" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;57&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawBackground&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-58" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;58&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawFilm&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-59" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;59&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawDescription&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-60" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;60&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-61" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;61&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawBlade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-62" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;62&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawTitle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-63" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;63&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-64" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;64&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-65" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;65&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// This function is called every second, and it calculates and stores the current frame rate
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-66" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;66&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;getStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-67" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;67&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;readyState&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-68" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;68&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #949494"&gt;//this property is specific to firefox, and tracks how many times the browser has rendered the window since the document was loaded
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-69" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;69&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-70" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;70&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-71" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;71&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-72" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;72&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-73" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;73&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-74" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;74&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-75" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;75&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-76" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;76&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setTimeout&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;getStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;1000&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-77" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;77&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-78" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;78&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-79" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;79&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// create blade, the ofscreen canavs that will contain the spining animation of the image copied from blade.png
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-80" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;80&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;setBlade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-81" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;81&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;canvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-82" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;82&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;400&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-83" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;83&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;400&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-84" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;84&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-85" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;85&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-86" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;86&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-87" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;87&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-88" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;88&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-89" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;89&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// Creates and returns a new image that contains a snapshot of the currently playing video.
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-90" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;90&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleVideo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-91" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;91&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;canvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-92" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;92&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-93" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;93&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-94" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;94&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-95" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;95&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-96" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;96&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-97" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;97&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-98" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;98&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// renders the dark background for the whole canvas element. The background features a greyscale sample of the video and a gradient overlay
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-99" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;99&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawBackground&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-100" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;100&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;canvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-101" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;101&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-102" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;102&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-103" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;103&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-104" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;104&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;  &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-105" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;105&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-106" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;106&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-107" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;107&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;try&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-108" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;108&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;imageData&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getImageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-109" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;109&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-110" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;110&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt; &lt;span style="color: #aa759f"&gt;catch&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #949494"&gt;// CORS error (eg when viewed from a local file). Create a solid fill background instead
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-111" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;111&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;yellow&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-112" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;112&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillRect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-113" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;113&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;imageData&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createImageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-114" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;114&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-115" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;115&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-116" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;116&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-117" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;117&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//loop through each pixel, turning its color into a shade of grey
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-118" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;118&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;4&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-119" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;119&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;red&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-120" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;120&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;green&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-121" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;121&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blue&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-122" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;122&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;grey&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;max&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;red&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;green&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blue&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-123" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;123&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-124" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;124&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;grey&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-125" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;125&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;grey&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-126" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;126&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;grey&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-127" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;127&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-128" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;128&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;putImageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imageData&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-129" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;129&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-130" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;130&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//add the gradient overlay
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-131" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;131&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createLinearGradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-132" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;132&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#000&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-133" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;133&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#000&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-134" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;134&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;rgba(0,0,0,0.5)&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-135" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;135&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-136" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;136&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillRect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-137" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;137&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-138" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;138&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-139" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;139&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-140" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;140&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-141" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;141&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-142" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;142&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-143" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;143&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-144" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;144&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// renders the 'film reel' animation that scrolls across the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-145" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;145&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawFilm&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-146" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;146&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;116&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// the width of a sampled video frame, when painted on the canvas as part of a 'film reel'
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-147" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;147&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;80&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// the height of a sampled video frame, when painted on the canvas as part of a 'film reel'
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-148" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;148&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmSpeed&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// determines how fast the 'film reel' scrolls across the generated canvas animation.
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-149" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;149&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;120&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//the y co-ordinate of the 'film reel' animation
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-150" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;150&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmAngle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #90a959"&gt;10&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;PI&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;180&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//the slant of the 'film reel'
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-151" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;151&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmRight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)?&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;].&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//the right edge of the 'film reel' in pixels, relative to the canvas		
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-152" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;152&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-153" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;153&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//here, we check if the first frame of the 'film reel' has scrolled out of view 
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-154" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;154&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-155" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;155&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bottomLeftX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;].&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-156" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;156&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bottomLeftY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleHeight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-157" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;157&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bottomLeftX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;cos&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmAngle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bottomLeftX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;sin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmAngle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bottomLeftY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// the final display position after rotation
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-158" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;158&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-159" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;159&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bottomLeftX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #949494"&gt;//the frame is offscreen, remove it's refference from the film array
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-160" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;160&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;shift&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-161" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;161&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-162" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;162&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-163" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;163&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-164" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;164&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// add new frames to the reel as required
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-165" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;165&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;while&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmRight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-166" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;166&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;newFrame&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{};&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-167" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;167&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newFrame&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmRight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-168" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;168&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newFrame&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;canvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleVideo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-169" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;169&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;newFrame&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-170" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;170&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmRight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-171" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;171&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-172" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;172&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-173" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;173&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// create the gradient fill for the reel
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-174" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;174&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createLinearGradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-175" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;175&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#0D0D0D&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-176" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;176&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.25&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#300A02&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-177" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;177&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#AF5A00&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-178" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;178&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.75&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#300A02&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-179" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;179&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addColorStop&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#0D0D0D&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-180" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;180&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-181" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;181&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-182" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;182&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;globalAlpha&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.9&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-183" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;183&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-184" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;184&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;rotate&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmAngle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-185" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;185&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-186" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;186&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// loops through all items of film array, using the stored co-ordinate values of each to draw part of the 'film reel'
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-187" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;187&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #aa759f"&gt;in&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-188" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;188&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-189" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;189&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;6&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchInterval&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;11.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-190" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;190&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-191" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;191&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #949494"&gt;//draws the main rectangular box of the sample
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-192" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;192&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;beginPath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-193" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;193&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-194" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;194&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-195" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;195&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-196" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;196&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-197" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;197&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;closePath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-198" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;198&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-199" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;199&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #949494"&gt;//adds the small holes lining the top and bottom edges of the 'fim reel'
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-200" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;200&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-201" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;201&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchInterval&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-202" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;202&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-203" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;203&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-204" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;204&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-205" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;205&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-206" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;206&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-207" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;207&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;closePath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-208" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;208&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchInterval&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-209" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;209&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;70&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-210" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;210&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-211" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;211&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-212" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;212&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-213" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;213&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchY&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-214" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;214&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;closePath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-215" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;215&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-216" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;216&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fill&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-217" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;217&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-218" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;218&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-219" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;219&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//loop through all items of videoSamples array, update the x co-ordinate values of each item, and draw its stored image onto the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-220" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;220&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;globalCompositeOperation&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;lighter&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-221" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;221&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #aa759f"&gt;in&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-222" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;222&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;videoSamples&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-223" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;223&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmSpeed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-224" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;224&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;canvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;filmTop&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;110&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;62&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-225" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;225&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-226" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;226&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-227" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;227&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-228" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;228&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-229" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;229&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-230" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;230&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// renders the canvas title
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-231" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;231&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawTitle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-232" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;232&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-233" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;233&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;black&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-234" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;234&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillRect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;368&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;25&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-235" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;235&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;white&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-236" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;236&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;bold 21px Georgia&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-237" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;237&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;SINTEL&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-238" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;238&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-239" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;239&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-240" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;240&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-241" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;241&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;// renders all the text appearing at the top left corner of the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-242" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;242&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawDescription&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-243" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;243&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt; &lt;span style="color: #949494"&gt;//stores all text items, to be displayed over time. the video is 60 seconds, and each will be visible for 10 seconds.
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-244" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;244&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Sintel is an independently produced short film, initiated by the Blender Foundation.&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-245" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;245&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;For over a year an international team of 3D animators and artists worked in the studio of the Amsterdam Blender Institute on the computer-animated short 'Sintel'.&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-246" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;246&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;It is an epic short film that takes place in a fantasy world, where a girl befriends a baby dragon.&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-247" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;247&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;After the little dragon is taken from her violently, she undertakes a long journey that leads her to a dramatic confrontation.&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-248" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;248&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;The script was inspired by a number of story suggestions by Martin Lodewijk around a Cinderella character (Cinder in Dutch is 'Sintel'). &lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-249" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;249&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Screenwriter Esther Wouda then worked with director Colin Levy to create a script with multiple layers, with strong characterization and dramatic impact as central goals.&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-250" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;250&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;currentTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)];&lt;/span&gt; &lt;span style="color: #949494"&gt;//use the videos current time to determine which text item to display.  
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-251" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;251&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-252" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;252&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-253" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;253&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alpha&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;currentTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-254" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;254&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;globalAlpha&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alpha&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)?&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alpha&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-255" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;255&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#fff&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-256" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;256&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;normal 12px Georgia&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-257" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;257&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-258" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;258&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//break the text up into several lines as required, and write each line on the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-259" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;259&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;split&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt; &lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-260" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;260&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;colWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #90a959"&gt;75&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-261" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;261&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;line&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;''&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-262" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;262&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;40&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-263" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;263&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #aa759f"&gt;in&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-264" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;264&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;line&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt; &lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-265" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;265&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;measureText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;line&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;colWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-266" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;266&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;line&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-267" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;267&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;line&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;''&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-268" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;268&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;12&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-269" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;269&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-270" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;270&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-271" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;271&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;line&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-272" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;272&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-273" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;273&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-274" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;274&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-275" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;275&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-276" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;276&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;//updates the bottom-right potion of the canvas with the latest perfomance statistics
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-277" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;277&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;average&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-278" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;278&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;245.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;130.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;graphScale&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.25&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-279" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;279&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-280" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;280&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-281" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;281&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;normal 10px monospace&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-282" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;282&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textAlign&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;left&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-283" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;283&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textBaseLine&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;top&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-284" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;284&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;black&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-285" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;285&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillRect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;120&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;75&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-286" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;286&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-287" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;287&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//draw the x and y axis lines of the graph
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-288" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;288&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;30&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-289" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;289&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-290" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;290&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;beginPath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-291" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;291&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;strokeStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#888&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-292" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;292&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;1.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-293" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;293&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-294" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;294&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;100&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-295" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;295&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;stroke&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-296" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;296&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-297" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;297&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #90a959"&gt;25&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-298" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;298&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;stroke&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-299" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;299&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-300" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;300&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// draw the last 50 speedLog entries on the graph
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-301" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;301&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;strokeStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#00ffff&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-302" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;302&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#00ffff&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-303" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;303&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-304" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;304&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imax&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-305" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;305&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;50&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)?&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #90a959"&gt;50&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-306" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;306&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;beginPath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-307" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;307&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imax&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-308" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;308&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-309" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;309&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;graphScale&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-310" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;310&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;stroke&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-311" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;311&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-312" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;312&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-313" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;313&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// the red line, marking the desired maximum rendering time
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-314" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;314&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;beginPath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-315" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;315&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;strokeStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#FF0000&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-316" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;316&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-317" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;317&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;target&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameDuration&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;graphScale&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-318" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;318&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;target&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-319" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;319&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;100&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;target&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-320" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;320&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;stroke&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-321" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;321&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-322" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;322&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// current/average speedLog items
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-323" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;323&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;12&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-324" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;324&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;average&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-325" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;325&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speed&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-326" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;326&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #aa759f"&gt;in&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speed&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-327" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;327&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;speed&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speed&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-328" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;328&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #aa759f"&gt;else&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-329" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;329&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;speed&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-330" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;330&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-331" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;331&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;Render Time: &lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-332" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;332&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-333" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;333&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// canvas fps
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-334" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;334&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;#00ff00&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-335" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;335&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;12&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-336" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;336&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;average&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-337" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;337&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-338" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;338&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #aa759f"&gt;in&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-339" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;339&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-340" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;340&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #aa759f"&gt;else&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-341" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;341&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fpsLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-342" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;342&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-343" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;343&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt; Canvas FPS: &lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-344" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;344&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-345" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;345&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;// browser frames per second (fps), using window.mozPaintCount (firefox only)
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-346" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;346&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; 	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-347" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;347&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;12&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-348" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;348&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;average&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-349" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;349&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-350" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;350&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #aa759f"&gt;in&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-351" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;351&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-352" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;352&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #aa759f"&gt;else&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-353" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;353&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;				&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paintCountLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;length&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-354" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;354&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-355" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;355&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;			&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;Browser FPS: &lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fps&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-356" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;356&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-357" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;357&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-358" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;358&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-359" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;359&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-360" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;360&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-361" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;361&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #949494"&gt;//draw the spining blade that appears in the begining of the animation	
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-362" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;362&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawBlade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-363" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;363&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-364" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;364&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;2.5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-365" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;365&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #90a959"&gt;45&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #90a959"&gt;360&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-366" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;366&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-367" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;367&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #949494"&gt;//update blade, an ofscreen canvas containing the blade's image
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-368" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;368&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;PI&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;180&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-369" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;369&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeContext&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-370" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;370&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//clear the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-371" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;371&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-372" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;372&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;translate&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;200&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;200&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-373" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;373&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;rotate&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-374" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;374&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeSrc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-375" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;375&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bladeContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-376" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;376&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-377" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;377&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;save&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-378" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;378&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;globalAlpha&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.95&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-379" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;379&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;sin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;angle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;50&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-380" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;380&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;restore&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-381" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;381&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-382" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;382&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;})();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 3: Code Optimization: Know the Rules&lt;/h2&gt;
&lt;h3&gt;The first rule of code performance optimization is: Don't.&lt;/h3&gt;
&lt;p&gt;The point of this rule is to discourage optimization for optimization's sake, since the process comes at a price.&lt;/p&gt;
&lt;p&gt;A highly optimized script will be easier for the browser to parse and process, but usually with a burden for humans who will find it harder to follow and maintain. Whenever you do decide that some optimization is necessary, set some goals beforehand so that you don't get carried away by the process and overdo it.&lt;/p&gt;
&lt;p&gt;The goal in optimizing this widget will be to have the &lt;code&gt;main()&lt;/code&gt; function run in less than 33 milliseconds as it's supposed to, which will match the frame rate of the playing video files (&lt;code&gt;sintel.mp4&lt;/code&gt; and &lt;code&gt;sintel.webm&lt;/code&gt;). These files were encoded at a playback speed of 30fps (thirty frames per second), which translates to about 0.33 seconds or 33 milliseconds per frame ( 1 second ÷ 30 frames ).&lt;/p&gt;
&lt;p&gt;Since JavaScript draws a new animation frame to the canvas every time the &lt;code&gt;main()&lt;/code&gt; function is called, the goal of our optimization process will be to make this function take 33 milliseconds or less each time it runs. This function repeatedly calls itself using a &lt;code&gt;setTimeout()&lt;/code&gt; Javascript timer as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameDuration&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;33&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// set the animation's target speed in milliseconds	
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paused&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;ended&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #d28445"&gt;false&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setTimeout&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameDuration&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;The second rule: Don't yet.&lt;/h3&gt;
&lt;p&gt;This rule stresses the point that optimization should always be done at the end of the development process when you've already fleshed out some complete, working code. The optimization police will let us go on this one, since the widget's script is a perfect example of complete, working program that's ready for the process.&lt;/p&gt;
&lt;h3&gt;The third rule: Don't yet, and profile first.&lt;/h3&gt;
&lt;p&gt;This rule is about understanding your program in terms of runtime performance. Profiling helps you know rather than guess which functions or areas of the script take up the most time or are used most often, so that you can focus on those in the optimization process. It is critical enough to make leading browsers ship with inbuilt JavaScript profilers, or have extensions that provide this service.&lt;/p&gt;
&lt;p&gt;I ran the widget under the profiler in &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;, and below is a screenshot of the results.&lt;/p&gt;
&lt;div&gt;
&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step2.jpg" alt loading="lazy" width="595px" height="320px" class="resized-image resized-image-desktop" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step2.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step2.jpg" alt loading="lazy" width="595px" height="320px" class="resized-image resized-image-tablet" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step2.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=360/active/uploads/legacy/tuts/453_optimiseCanvas/source/step2.jpg" alt loading="lazy" width="380px" height="208px" class="resized-image resized-image-mobile" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=720/active/uploads/legacy/tuts/453_optimiseCanvas/source/step2.jpg 2x"&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 4: Set Some Performance Metrics&lt;/h2&gt;
&lt;p&gt;As you ran the widget, I'm sure you found all the Sintel stuff okay, and were absolutely blown away by the item on the lower right corner of the canvas, the one with a beautiful graph and shiny text.&lt;/p&gt;
&lt;div&gt;&lt;img src="https://cdn.tutsplus.com/active/uploads/legacy/tuts/453_optimiseCanvas/source/step4.jpg" alt loading="lazy" width="307px" height="228px"&gt;&lt;/div&gt;
&lt;p&gt;It's not just a pretty face; that box also delivers some real-time performance statistics on the running program. Its actually a simple, bare-bones Javascript profiler. That's right! Yo, I heard you like profiling, so I put a profiler in your movie, so that you can profile it while you watch.&lt;/p&gt;
&lt;p&gt;The graph tracks the &lt;em&gt;Render Time&lt;/em&gt;, calculated by measuring how long each run of &lt;code&gt;main()&lt;/code&gt; takes in milliseconds. Since this is the function that draws each frame of the animation, it's effectively the animation's frame rate. Each vertical blue line on the graph illustrates the time taken by one frame. The red horizontal line is the target speed, which we set at 33ms to match the video file frame rates. Just below the graph, the speed of the last call to &lt;code&gt;main()&lt;/code&gt; is given in milliseconds.&lt;/p&gt;
&lt;p&gt;The profiler is also a handy browser rendering speed test. At the moment, the average render time in Firefox is 55ms, 90ms in IE 9, 41ms in Chrome, 148ms in Opera and 63ms in Safari. All the browsers were running on Windows XP, except for IE 9 which was profiled on Windows Vista.&lt;/p&gt;
&lt;p&gt;The next metric below that is &lt;em&gt;Canvas FPS&lt;/em&gt; (canvas frames per second), obtained by counting how many times &lt;code&gt;main()&lt;/code&gt; is called per second. The profiler displays the latest Canvas FPS rate when the video is still playing, and when it ends it shows the average speed of all calls to &lt;code&gt;main()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The last metric is &lt;em&gt;Browser FPS&lt;/em&gt;, which measures how many the browser repaints the current window every second. This one is only available if you view the widget in Firefox, as it depends on a feature currently only available in that browser called &lt;code&gt;window.mozPaintCount.&lt;/code&gt;, a JavaScript property that keeps track of how many times the browser window has been repainted since the webpage first loaded.&lt;/p&gt;
&lt;p&gt;The repaints usually occur when an event or action that changes the look of a page occurs, like when you scroll down the page or mouse-over a link. It's effectively the browser's real frame rate, which is determined by how busy the current webpage is.&lt;/p&gt;
&lt;p&gt;To gauge what effect the un-optimized canvas animation had on &lt;code&gt;mozPaintCount,&lt;/code&gt; I removed the canvas tag and all the JavaScript, so as to track the browser frame rate when playing just the video. My tests were done in Firebug's console, using the function below:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setInterval&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;function&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;console&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;log&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lastPaintCount&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozPaintCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt; &lt;span style="color: #90a959"&gt;1000&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The results: The browser frame rate was between 30 and 32 FPS when the video was playing, and dropped to 0-1 FPS when the video ended. This means that Firefox was adjusting its window repaint frequency to match that of the playing video, encoded at 30fps. When the test was run with the un-optimized canvas animation and video playing together, it slowed down to 16fps, as the browser was now struggling to run all the JavaScript and still repaint its window on time, making both the video playback and canvas animations sluggish.&lt;/p&gt;
&lt;p&gt;We'll now start tweaking our program, and as we do so, we'll keep track of the Render Time, Canvas FPS and Browser FPS to measure the effects of our changes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Step 5: Use &lt;code&gt;requestAnimationFrame()&lt;/code&gt;
&lt;/h2&gt;
&lt;p&gt;The last two JavaScript snippets above make use of the &lt;code&gt;setTimeout()&lt;/code&gt; and &lt;code&gt;setInterval()&lt;/code&gt; timer functions. To use these functions, you specify a time interval in milliseconds and the callback function you want executed after the time elapses. The difference between the two is that &lt;code&gt;setTimeout()&lt;/code&gt; will call your function just once, while &lt;code&gt;setInterval()&lt;/code&gt; calls it repeatedly.&lt;/p&gt;
&lt;p&gt;While these functions have always been indispensable tools in the JavaScript animator's kit, they do have a few flaws:&lt;/p&gt;
&lt;p&gt;First, the time interval set is not always reliable. If the program is still in the middle of executing something else when the interval elapses, the callback function will be executed later than originally set, once the browser is no longer busy. In the &lt;code&gt;main()&lt;/code&gt; function, we set the interval to 33 milliseconds - but as the profiler reveals, the function is actually called every 148 milliseconds in Opera.&lt;/p&gt;
&lt;p&gt;Second, there's an issue with browser repaints. If we had a callback function that generated 20 animation frames per second while the browser repainted its window only 12 times a second, 8 calls to that function will be wasted as the user will never get to see the results.&lt;/p&gt;
&lt;p&gt;Finally, the browser has no way of knowing that the function being called is animating elements in the document. This means that if those elements scroll out of view, or the user clicks on another tab, the callback will still get executed repeatedly, wasting CPU cycles.&lt;/p&gt;
&lt;p&gt;Using &lt;code&gt;requestAnimationFrame()&lt;/code&gt; solves most of these problems, and it can be used instead of the timer functions in HTML5 animations. Instead of specifying a time interval, &lt;code&gt;requestAnimationFrame()&lt;/code&gt; synchronizes the function calls with browser window repaints. This results in more fluid, consistent animation as no frames are dropped, and the browser can make further internal optimizations knowing an animation is in progress.&lt;/p&gt;
&lt;p&gt;To replace &lt;code&gt;setTimeout()&lt;/code&gt; with &lt;code&gt;requestAnimationFrame&lt;/code&gt; in our widget, we first add the following line at the top of our script:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;requestAnimationFrame&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;requestAnimationFrame&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;						&lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mozRequestAnimationFrame&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;						&lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;webkitRequestAnimationFrame&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;						&lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;msRequestAnimationFrame&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;						&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setTimeout&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;As the specification is still quite new, some browsers or browser versions have their own experimental implementations, this line makes sure that the function name points to the right method if it is available, and falls back to &lt;code&gt;setTimeout()&lt;/code&gt; if not. Then in the &lt;code&gt;main()&lt;/code&gt; function, we change this line:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setTimeout&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameDuration&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;...to:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;requestAnimationFrame&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;canvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The first parameter takes the callback function, which in this case is the &lt;code&gt;main()&lt;/code&gt; function. The second parameter is optional, and specifies the DOM element that contains the animation. It is supposed to be used by to compute additional optimizations.&lt;/p&gt;
&lt;p&gt;Note that the &lt;code&gt;getStats()&lt;/code&gt; function also uses a &lt;code&gt;setTimeout(),&lt;/code&gt; but we leave that one in place since this particular function has nothing to do with animating the scene. &lt;code&gt;requestAnimationFrame()&lt;/code&gt; was created specifically for animations, so if your callback function is not doing animation, you can still use &lt;code&gt;setTimeout()&lt;/code&gt; or &lt;code&gt;setInterval().&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Step 6: Use the Page Visibility API&lt;/h2&gt;
&lt;p&gt;In the last step we made &lt;code&gt;requestAnimationFrame&lt;/code&gt; power the canvas animation, and now we have a new problem. If we start running the widget, then minimize the browser window or switch to a new tab, the widget's window repaint rate throttles down to save power. This also slows down the canvas animation since it is now synchronized with the repaint rate - which would be perfect if the video did not keep playing on to the end.&lt;/p&gt;
&lt;p&gt;We need a way to detect when the page is not being viewed so that we can pause the playing video; this is where the Page Visibility API comes to the rescue.&lt;/p&gt;
&lt;p&gt;The API contains a set of properties, functions and events we can use to detect if a webpage is in view or hidden. We can then add code that adjusts our program's behavior accordingly. We will make use of this API to pause the widget's playing video whenever the page is inactive.&lt;/p&gt;
&lt;p&gt;We start by adding a new event listener to our script:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;visibilitychange&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;onVisibilityChange&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d28445"&gt;false&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Next comes the event handler function:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;// Adjusts the program behavior, based on whether the webpage is active or hidden
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;onVisibilityChange&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hidden&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paused&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pause&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #aa759f"&gt;else&lt;/span&gt;  &lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paused&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;play&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 7: For Custom Shapes, Draw the Whole Path At Once&lt;/h2&gt;
&lt;p&gt;Paths are used to create and draw custom shapes and outlines on the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; element, which will at all times have one active path.&lt;/p&gt;
&lt;p&gt;A path holds a list of sub-paths, and each sub-path is made up of canvas co-ordinate points linked together by either a line or a curve. All the path making and drawing functions are properties of the canvas's &lt;code&gt;context&lt;/code&gt; object, and can be classified into two groups.&lt;/p&gt;
&lt;p&gt;There are the subpath-making functions, used to define a subpath and include &lt;code&gt;lineTo()&lt;/code&gt;, &lt;code&gt;quadraticCurveTo()&lt;/code&gt;, &lt;code&gt;bezierCurveTo()&lt;/code&gt;, and &lt;code&gt;arc()&lt;/code&gt;. Then we have &lt;code&gt;stroke()&lt;/code&gt; and &lt;code&gt;fill()&lt;/code&gt;, the path/subpath drawing functions. Using &lt;code&gt;stroke()&lt;/code&gt; will produce an outline, while &lt;code&gt;fill()&lt;/code&gt; generates a shape filled by either a color, gradient or pattern.&lt;/p&gt;
&lt;p&gt;When drawing shapes and outline on the canvas, it is more efficient to create the whole path first, then just &lt;code&gt;stroke()&lt;/code&gt; or &lt;code&gt;fill()&lt;/code&gt; it once, rather than defining and drawing each supbath at a time. Taking the profiler's graph described in Step 4 as an example, each single vertical blue line is a subpath, while all of them together make up the whole current path.&lt;/p&gt;
&lt;div&gt;&lt;img src="https://cdn.tutsplus.com/active/uploads/legacy/tuts/453_optimiseCanvas/source/step4.jpg" alt loading="lazy" width="307px" height="228px"&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;stroke()&lt;/code&gt; method is currently being called within a loop that defines each subpath:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;beginPath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imax&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// define the subpaths starting point
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;graphScale&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;	&lt;span style="color: #949494"&gt;// set the subpath as a line, and define its endpoint	
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;stroke&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; &lt;span style="color: #949494"&gt;// draw the subpath to the canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This graph can be drawn much more efficiently by first defining all the subpaths, then just drawing the whole current path at once, as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;beginPath&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;for&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;imax&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt;				
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;moveTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// define the subpaths starting point
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineTo&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;graphScale&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;	&lt;span style="color: #949494"&gt;// set the subpath as a line, and define its endpoint
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;stroke&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; &lt;span style="color: #949494"&gt;// draw the whole current path to the mainCanvas.&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 8: Use an Off-Screen Canvas To Build the Scene&lt;/h2&gt;
&lt;p&gt;This optimization technique is related to the one in the previous step, in that they are both based on the same principle of minimizing webpage repaints.&lt;/p&gt;
&lt;p&gt;Whenever something happens that changes a document's look or content, the browser has to schedule a repaint operation soon after that to update the interface. Repaints can be an expensive operation in terms of CPU cycles and power, especially for dense pages with a lot of elements and animation going on. If you are building up a complex animation scene by adding up many items one at a time to the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;, every new addition may just trigger a whole repaint.&lt;/p&gt;
&lt;p&gt;It is better and much faster to build the scene on an off screen (in memory) &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;, and once done, paint the whole scene just once to the onscreen, visible &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Just below the code that gets reference to the widget's &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; and its context, we'll add five new lines that create an off-screen canvas DOM object and match its dimensions with that of the original, visible &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// points to the on-screen, original HTML canvas element
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// the drawing context of the on-screen canvas element 
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;canvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// creates a new off-screen canvas element
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osContext&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;//the drawing context of the off-screen canvas element
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// match the off-screen canvas dimensions with that of #mainCanvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We'll then do as search and replace in all the drawing functions for all references to "mainCanvas" and change that to "osCanvas". References to "mainContext" will be replaced with "osContext". Everything will now be drawn to the new off-screen canvas, instead of the original &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Finally, we add one more line to &lt;code&gt;main()&lt;/code&gt; that paints what's currently on the off-screen &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; into our original &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;// As the scripts main function, it controls the pace of the animation
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;requestAnimationFrame&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;main&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainCanvas&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;paused&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;currentTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;59&lt;/span&gt;  &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;now&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Date&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;().&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getTime&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;speedLog&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;now&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameStartTime&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;now&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;video&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;readyState&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;frameCount&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//clear the offscreen canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawBackground&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawFilm&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawDescription&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawStats&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawBlade&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawTitle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;mainContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// copy the off-screen canvas graphics to the on-screen canvas
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 9: Cache Paths As Bitmap Images Whenever Possible&lt;/h2&gt;
&lt;p&gt;For many kinds of graphics, using &lt;code&gt;drawImage()&lt;/code&gt; will be much faster than constructing the same image on canvas using paths. If you find that a large potion of your script is spent repeatedly drawing the same shapes and outlines over and over again, you may save the browser some work by caching the resulting graphic as a bitmap image, then painting it just once to the canvas whenever required using &lt;code&gt;drawImage()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There are two ways of doing this.&lt;/p&gt;
&lt;p&gt;The first is by creating an external image file as a JPG, GIF or PNG image, then loading it dynamically using JavaScript and copying it to your canvas. The one drawback of this method is the extra files your program will have to download from the network, but depending on the type of graphic or what your application does, this could actually be a good solution. The animation widget uses this method to load the spinning blade graphic, which would have been impossible to recreate using just the canvas path drawing functions.&lt;/p&gt;
&lt;div&gt;
&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step9.jpg" alt loading="lazy" width="595px" height="320px" class="resized-image resized-image-desktop" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step9.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step9.jpg" alt loading="lazy" width="595px" height="320px" class="resized-image resized-image-tablet" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step9.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=360/active/uploads/legacy/tuts/453_optimiseCanvas/source/step9.jpg" alt loading="lazy" width="380px" height="208px" class="resized-image resized-image-mobile" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=720/active/uploads/legacy/tuts/453_optimiseCanvas/source/step9.jpg 2x"&gt;
&lt;/div&gt;
&lt;p&gt;The second method involves just drawing the graphic once to an off-screen canvas rather than loading an external image. We will use this method to cache the title of the animation widget. We first create a variable to reference the new off-screen canvas element to be created. Its default value is set to &lt;code&gt;false&lt;/code&gt;, so that we can tell whether or not an image cache has been created, and saved once the script starts running:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d28445"&gt;false&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// points to an off-screen canvas used to cache the animation scene's title&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We then edit the &lt;code&gt;drawTitle()&lt;/code&gt; function to first check whether the &lt;code&gt;titleCache&lt;/code&gt; canvas image has been created. If it hasn't, it creates an off-screen image and stores a reference to it in &lt;code&gt;titleCache&lt;/code&gt;:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;// renders the canvas title
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawTitle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(){&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;==&lt;/span&gt; &lt;span style="color: #d28445"&gt;false&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #949494"&gt;// create and save the title image
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;canvas&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;25&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d28445"&gt;var&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;context&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;2d&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;			
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;context&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;black&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;context&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillRect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;368&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;25&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;context&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;white&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;context&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;bold 21px Georgia&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;context&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fillText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;SINTEL&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;		
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 10: Clear the Canvas With &lt;code&gt;clearRect()&lt;/code&gt;
&lt;/h2&gt;
&lt;p&gt;The first step in drawing a new animation frame is to clear the canvas of the current one. This can be done by either resetting the width of the canvas element, or using the &lt;code&gt;clearRect()&lt;/code&gt; function.&lt;/p&gt;
&lt;p&gt;Resetting the width has a side effect of also clearing the current canvas &lt;em&gt;context&lt;/em&gt; back to its default state, which can slow things down. Using &lt;code&gt;clearRect()&lt;/code&gt; is always the faster and better way to clear the canvas.&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;main()&lt;/code&gt; function, we'll change this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;//clear the off-screen canvas&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;...to this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;clearRect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;//clear the offscreen canvas&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 11: Implement Layers&lt;/h2&gt;
&lt;p&gt;If you've worked with image or video editing software like Gimp or Photoshop before, then you're already familiar with the concept of layers, where an image is composed by stacking many images on top of one another, and each can be selected and edited separately.&lt;/p&gt;
&lt;p&gt;Applied to a canvas animation scene, each layer will be a separate canvas element, placed on top of each other using CSS to create the illusion of a single element. As an optimization technique, it works best when there is a clear distinction between foreground and background elements of a scene, with most of the action taking place in the foreground. The background can then be drawn on a canvas element that does not change much between animation frames, and the foreground on another more dynamic canvas element above it. This way, the whole scene doesn't have to be redrawn again for each animation frame.&lt;/p&gt;
&lt;p&gt;Unfortunately, the animation widget is a good example of a scene where we cannot usefully apply this technique, since both the foreground and background elements are highly animated.&lt;/p&gt;
&lt;div&gt;
&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=550/active/uploads/legacy/tuts/453_optimiseCanvas/source/step11.jpg" alt loading="lazy" width="570px" height="248px" class="resized-image resized-image-desktop" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1100/active/uploads/legacy/tuts/453_optimiseCanvas/source/step11.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=550/active/uploads/legacy/tuts/453_optimiseCanvas/source/step11.jpg" alt loading="lazy" width="570px" height="248px" class="resized-image resized-image-tablet" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1100/active/uploads/legacy/tuts/453_optimiseCanvas/source/step11.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=360/active/uploads/legacy/tuts/453_optimiseCanvas/source/step11.jpg" alt loading="lazy" width="380px" height="169px" class="resized-image resized-image-mobile" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=720/active/uploads/legacy/tuts/453_optimiseCanvas/source/step11.jpg 2x"&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 12: Update Only The Changing Areas of an Animation Scene&lt;/h2&gt;
&lt;p&gt;This is another optimization technique that depends heavily on the animation's scene composition. It can be used when the scene animation is concentrated around a particular rectangular region on the canvas. We could then clear and redraw just redraw that region.&lt;/p&gt;
&lt;p&gt;For example, the Sintel title remains unchanged throughout most of the animation, so we could leave that area intact when clearing the canvas for the next animation frame.&lt;/p&gt;
&lt;div&gt;
&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=376/active/uploads/legacy/tuts/453_optimiseCanvas/source/step12.jpg" alt loading="lazy" width="396px" height="235px" class="resized-image resized-image-desktop" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=752/active/uploads/legacy/tuts/453_optimiseCanvas/source/step12.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=376/active/uploads/legacy/tuts/453_optimiseCanvas/source/step12.jpg" alt loading="lazy" width="396px" height="235px" class="resized-image resized-image-tablet" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=752/active/uploads/legacy/tuts/453_optimiseCanvas/source/step12.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=360/active/uploads/legacy/tuts/453_optimiseCanvas/source/step12.jpg" alt loading="lazy" width="380px" height="226px" class="resized-image resized-image-mobile" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=720/active/uploads/legacy/tuts/453_optimiseCanvas/source/step12.jpg 2x"&gt;
&lt;/div&gt;
&lt;p&gt;To implement this technique, we replace the line that calls the title drawing function in &lt;code&gt;main()&lt;/code&gt; with the following block:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #aa759f"&gt;if&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;titleCache&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;==&lt;/span&gt; &lt;span style="color: #d28445"&gt;false&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;){&lt;/span&gt; &lt;span style="color: #949494"&gt;// If titleCache is false, the animation's title hasn't been drawn yet
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;drawTitle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; &lt;span style="color: #949494"&gt;// we draw the title. This function will now be called just once, when the program starts
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;rect&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;25&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;osCanvas&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt; &lt;span style="color: #949494"&gt;// this creates a path covering the area outside by the title
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;		&lt;span style="color: #d0d0d0;background-color: #151515"&gt;osContext&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;clip&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt; &lt;span style="color: #949494"&gt;// we use the path to create a clipping region, that ignores the title's region
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 13: Minimize Sub-Pixel Rendering&lt;/h2&gt;
&lt;p&gt;Sub-pixel rendering or anti-aliasing happens when the browser automatically applies graphic effects to remove jagged edges. It results in smoother looking images and animations, and is automatically activated whenever you specify fractional co-ordinates rather than whole number when drawing to the canvas.&lt;/p&gt;
&lt;p&gt;Right now there is no standard on exactly how it should be done, so subpixel rendering is a bit inconsistent across browsers in terms of the rendered output. It also slows down rendering speeds as the browser has to do some calculations to generate the effect. As canvas anti-aliasing cannot be directly turned off, the only way to get around it is by always using whole numbers in your drawing co-ordinates.&lt;/p&gt;
&lt;p&gt;We will use &lt;code&gt;Math.floor()&lt;/code&gt; to ensure whole numbers in our script whenever applicable. For example, the following line in &lt;code&gt;drawFilm()&lt;/code&gt;:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchInterval&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// the x co-ordinate&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;...is rewritten as:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;	&lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchX&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sample&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;j&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;punchInterval&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// the x co-ordinate&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;Step 14: Measure the Results&lt;/h2&gt;
&lt;p&gt;We've looked at quite a few canvas animation optimization techniques, and it now time to review the results.&lt;/p&gt;
&lt;div&gt;
&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step14.jpg" alt loading="lazy" width="595px" height="199px" class="resized-image resized-image-desktop" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step14.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=575/active/uploads/legacy/tuts/453_optimiseCanvas/source/step14.jpg" alt loading="lazy" width="595px" height="199px" class="resized-image resized-image-tablet" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=1150/active/uploads/legacy/tuts/453_optimiseCanvas/source/step14.jpg 2x"&gt;&lt;img src="https://cdn.tutsplus.com/cdn-cgi/image/width=360/active/uploads/legacy/tuts/453_optimiseCanvas/source/step14.jpg" alt loading="lazy" width="380px" height="132px" class="resized-image resized-image-mobile" srcset="https://cdn.tutsplus.com/cdn-cgi/image/width=720/active/uploads/legacy/tuts/453_optimiseCanvas/source/step14.jpg 2x"&gt;
&lt;/div&gt;
&lt;p&gt;This table shows the before and after average Render Times and Canvas FPS. We can see some significant improvements across all the browsers, though it's only Chrome that really comes close to achieving our original goal of a maximum 33ms Render Time. This means there is still much work to be done to get that target.&lt;/p&gt;
&lt;p&gt;We could proceed by applying more general JavaScript optimization techniques, and if that still fails, maybe consider toning down the animation by removing some bells and whistles. But we won't be looking at any of those other techniques today, as the focus here was on optimizations for &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; animation.&lt;/p&gt;
&lt;p&gt;The Canvas API is still quite new and growing every day, so keep experimenting, testing, exploring and sharing. Thanks for reading the tutorial.&lt;/p&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/10192/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/10192/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/10192/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/10192/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to create an SVG viewer in HTML, CSS, and JavaScript</title><link>https://webdesign.tutsplus.com/svg-viewer--cms-109195t</link><author>noemail@noemail.org (Esther Vaati)</author><pubDate>Sun, 15 Jun 2025 19:34:15 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109195</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i91s"&gt;
&lt;p&gt;Our SVG viewer will have the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;An editor that allows us to write, paste, and edit SVG code&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;A validation mechanism that checks if the SVG Code is valid&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;A preview area where we’ll see the SVG in real-time&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;An export feature that will allow us to export the SVG&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;So, by the end of this tutorial, we’ll have something like this:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/MYaKMYG?default-tab=result" width="850" height="800" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;The SVG editor will have a text area to add, edit, or paste the SVG code.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"editor"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;   &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"editor-header"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;SVG Code Editor&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;   &lt;span style="color: #f4bf75"&gt;&amp;lt;textarea&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"svgInput"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #6a9fb5"&gt;placeholder=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"Paste your SVG code here and watch the magic happen..."&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The preview area will have a preview container where the current SVG code will be injected for preview.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;   &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-header"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;SVG Preview&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;   &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-content"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"previewContainer"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;   &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-p95v-html-markup"&gt;HTML Markup&lt;/h2&gt;
&lt;p&gt;Okay, let’s start with the building blocks. The HTML markup will look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"main"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;SVG Preview Tool&lt;span style="color: #f4bf75"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Edit, preview, and export clean, scalable vector art&lt;span style="color: #f4bf75"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"editor"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"editor-header"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;SVG Code Editor&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;textarea&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"svgInput"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;placeholder=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"Paste your SVG code here and watch the magic happen..."&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-header"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;SVG Preview&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-content"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"previewContainer"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"exportBtn"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Export SVG&lt;span style="color: #f4bf75"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-8ulw-styling-with-css"&gt;Styling with CSS&lt;/h2&gt;
&lt;p&gt;As you saw from the final demo, we want the editor and the preview to appear side by side on large screens and stack vertically on small devices.  We'll achieve this layout using Flexbox and media queries.  &lt;/p&gt;
&lt;p&gt;Let's begin by applying some basic styles to the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt; elements as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;@import&lt;/span&gt; &lt;span style="color: #90a959"&gt;url("https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&amp;amp;display=swap")&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;box-sizing&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-box&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;min-height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;justify-content&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-family&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"DM Mono"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;monospace&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;header&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;420px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;40px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;h1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;30px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;700&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;header&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;p&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;18px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We'll apply the following styles to ensure all elements are stacked vertically. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.main&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1000px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;90vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;min-height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;700px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;calc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;100%&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;-&lt;/span&gt; &lt;span style="color: #90a959"&gt;84px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We also want the text editor and the preview container to fill the available height of their parent containers.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.editor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #90a959"&gt;#7287f2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.editor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hidden&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;linear-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;135deg&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;#667eea&lt;/span&gt; &lt;span style="color: #90a959"&gt;0%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;#764ba2&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.editor-header&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview-header&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;600&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;14px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;white&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;textarea&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #949494"&gt;/* width: 100%; */&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;13px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;resize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#2e3138&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;white&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow-y&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;textarea&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:focus&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;outline&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview-container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-46" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;46&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#f9fafb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-47" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;47&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow-y&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-48" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;48&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-49" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;49&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-50" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;50&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview-content&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-51" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;51&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-52" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;52&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-53" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;53&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hidden&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-54" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;54&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-55" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;55&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-56" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;56&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.svg-container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-57" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;57&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-58" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;58&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;justify-content&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-59" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;59&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hidden&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-60" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;60&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, let's style the export button, add styles for displaying error messages, and apply media queries for responsiveness. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.error-message&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#dc2626&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fef2f2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fca5a5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;6px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;13px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;button&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;40px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;linear-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;135deg&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;#667eea&lt;/span&gt; &lt;span style="color: #90a959"&gt;0%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;#764ba2&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;white&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt; &lt;span style="color: #90a959"&gt;30px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;150px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;@media&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;768px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.main&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.editor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.preview&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now the SVG  tool interface looks like this:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png" alt="Svg viewer Tool" loading="lazy" width="870px" height="641px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png" alt="Svg viewer Tool" loading="lazy" width="650px" height="480px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png" alt="Svg viewer Tool" loading="lazy" width="380px" height="283px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png 2x"&gt;&lt;/figure&gt;
&lt;h2 id="toc-ipes-javascript-functionality"&gt;JavaScript functionality&lt;/h2&gt;
&lt;p&gt;In this section, we'll perform some SVG code validation to ensure that any SVG code added to the editor is parsed before being displayed.&lt;/p&gt;
&lt;p&gt;We'll also add a sample SVG code in the editor and display it in the preview area by default.&lt;/p&gt;
&lt;p&gt;Let's start by getting the elements from the DOM and assigning them to variables for easy access.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgInput&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;svgInput&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;previewContainer&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;previewContainer&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;exportBtn&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;exportBtn&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-3hhf-svg-code-validation"&gt;SVG Code Validation&lt;/h3&gt;
&lt;p&gt;The next step is to ensure that the SVG code is valid before adding it for preview. Create a function called &lt;code&gt;loadSVG()&lt;/code&gt; that takes an SVG string as an argument. &lt;/p&gt;
&lt;p&gt;Inside this function, we will first check if the SVG string is empty. If its empty, we'll display an error message.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;previewContainer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerHTML&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;trim&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;())&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;showErrorMessage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Enter SVG code to see preview&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;The second form of validation will be done using the &lt;code&gt;DOMParser&lt;/code&gt; to ensure the SVG Code is well formatted XML code.&lt;/span&gt;&lt;/p&gt;
&lt;div class="callout-block"&gt;
&lt;span class="callout-icon callout-info"&gt;&lt;/span&gt;
&lt;div class="callout-message"&gt;
&lt;code&gt;DOMParser&lt;/code&gt; is an inbuilt interface in JavaScript that allows us to convert XML or HTML strings into a DOM Document object. Once the string is parsed into a DOM, you can query it using standard DOM methods like querySelector, etc. &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;To parse the XML, first create an instance of the &lt;code&gt;DOMParser&lt;/code&gt; API. Then, parse the SVG string using the &lt;code&gt;ParseFromString()&lt;/code&gt; method and set "image/svg+xml" as the MIME type.&lt;/span&gt;&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parser&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;DOMParser&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;doc&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parser&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFromString&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;image/svg+xml&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Check for errors by querying the &lt;code&gt;&amp;lt;parserror&amp;gt;&lt;/code&gt; element. If there are no errors, we will extract the &lt;code&gt;&amp;lt;svg&amp;gt;&lt;/code&gt; element and inject it into the preview.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;previewContainer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerHTML&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;trim&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;())&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;showErrorMessage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Enter SVG code to see preview&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;try&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parser&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;DOMParser&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;doc&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parser&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFromString&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;image/svg+xml&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parserError&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;doc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;querySelector&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;parsererror&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;parserError&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #aa759f"&gt;throw&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;XML parsing error: &lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parserError&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgElement&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;doc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;querySelector&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;svg&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #aa759f"&gt;throw&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;No valid SVG element found&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;container&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;className&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;svg-container&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;container&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerHTML&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;previewContainer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;container&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt; &lt;span style="color: #aa759f"&gt;catch &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;showErrorMessage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Invalid SVG code: &lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;message&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-5goh-add-event-listeners"&gt;Add event listeners&lt;/h3&gt;
&lt;p&gt;We now have a function that validates and displays the SVG code, so the next step is to ensure it runs before the SVG code in the input changes.&lt;/p&gt;
&lt;p&gt;Add two event listeners to the textarea element as shown below:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;function &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #aa759f"&gt;this&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;paste&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;function &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #aa759f"&gt;this&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The input event will be triggered whenever you type, delete, or change the contents of the  text area, while the paste event will be triggered when you paste the content to the text area.&lt;/p&gt;
&lt;h2 id="toc-mhnz-load-sample-svg"&gt;Load sample SVG and export SVG&lt;/h2&gt;
&lt;p&gt;The final step is to ensure that we have a default SVG when the tool opens. This is great to ensure the user sees how the tool works. &lt;/p&gt;
&lt;p&gt;Create a function called &lt;code&gt;loadDefaultSVG()&lt;/code&gt; which looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadDefaultSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleSvg&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&amp;lt;svg xmlns="https://www.w3.org/2000/svg" width="160" height="190" viewBox="0 0 60 60"&amp;gt;&amp;lt;defs&amp;gt;&amp;lt;style&amp;gt;.cls-1{fill:#87e64b;}&amp;lt;/style&amp;gt;&amp;lt;/defs&amp;gt;&amp;lt;circle class="cls-1" cx="25.56" cy="61.15" r="2.86"/&amp;gt;&amp;lt;path class="cls-1" d="M42,41.65l-16.13,1.73c-.3.03-.45-.34-.21-.53l15.78-12.29c1.02-.84,1.68-2.14,1.4-3.54-.28-2.14-2.05-3.54-4.29-3.26l-17.15,2.51c-.3.04-.46-.34-.22-.53l17-12.98c3.35-2.61,3.63-7.73.56-10.71-2.79-2.79-7.27-2.7-10.06.09L1.29,30.01c-1.02,1.12-1.49,2.61-1.21,4.19.47,2.52,2.98,4.19,5.5,3.73l14.77-3.01c.32-.07.49.36.22.54l-16.38,10.49c-2.05,1.3-2.98,3.63-2.33,5.96.65,3.07,3.73,4.84,6.71,4.1l24.49-6.03c.28-.07.48.25.3.47l-3.82,4.72c-1.02,1.3.65,3.07,2.05,2.05l12.58-10.34c2.24-1.86.75-5.5-2.14-5.22h-.03Z"/&amp;gt;&amp;lt;/svg&amp;gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleSvg&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;sampleSvg&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;window&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;load&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;loadDefaultSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;In the code above, we set a default SVG string as the value of the editor (in the textarea), then we call the &lt;code&gt;loadSVG()&lt;/code&gt; function which in turn renders the SVG in the preview area.&lt;/p&gt;
&lt;div class="callout-block"&gt;
&lt;span class="callout-icon callout-tip"&gt;&lt;/span&gt;
&lt;div class="callout-message"&gt;I’ve used the Envato “creative spark” for this example, but you can choose any default SVG you like&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="toc-72w8-export-svg"&gt;Export SVG&lt;/h3&gt;
&lt;p&gt;To export the SVG, we'll package it as an SVG file and trigger a download when the export button is clicked. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;exportSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blob&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Blob&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;([&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;svgInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;],&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;type&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;image/svg+xml&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;url&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;URL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createObjectURL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blob&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;a&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;a&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;a&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;href&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;url&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;a&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;download&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;svg-viewer.svg&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;body&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;a&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;a&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;click&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;body&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;removeChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;a&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;URL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;revokeObjectURL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;url&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;exportBtn&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;click&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;exportSVG&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-xok4-final-demo"&gt;Final demo&lt;/h2&gt;
&lt;p&gt;And we’re done! Here’s a reminder of the final codepen demo:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/MYaKMYG?default-tab=result" width="850" height="800" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;We built a fully functional SVG viewer using HTML, CSS, and JavaScript. This simple, yet powerful tool will allow you to preview and export your SVG graphics for use in your projects. &lt;/p&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109195/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109195/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109195/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109195/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to create a Liquid Glass effect with SVG filters</title><link>https://webdesign.tutsplus.com/liquid-glass-effect-svg-filters--cms-109200t</link><author>noemail@noemail.org (Esther Vaati)</author><pubDate>Fri, 27 Jun 2025 06:31:59 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109200</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ihy8"&gt;
&lt;p&gt;In June 2025 Apple &lt;a href="https://www.apple.com/newsroom/2025/06/apple-introduces-a-delightful-and-elegant-new-software-design/" target="_blank" rel="noopener"&gt;revealed its new visual language&lt;/a&gt;, along with the beta launch of iOS 26. Liquid Glass was the name given to their “new and expressive material”, bending light, and distorting UIs. It received a mixed response, and just weeks after its launch we’ve seen Apple &lt;a href="https://techcrunch.com/2025/07/07/ios-26-beta-3-dials-back-liquid-glass/" target="_blank" rel="noopener"&gt;dial down their glassy effects&lt;/a&gt; to some degree.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/30/posts/109200/image-upload/glass.jpg" alt="liquid glass" loading="lazy" width="870px" height="497px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/30/posts/109200/image-upload/glass.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109200/image-upload/glass.jpg" alt="liquid glass" loading="lazy" width="650px" height="373px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109200/image-upload/glass.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109200/image-upload/glass.jpg" alt="liquid glass" loading="lazy" width="380px" height="222px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109200/image-upload/glass.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;We’ve covered CSS glass effects on Tuts+ before, but today we’re going to do things a little differently. Let’s dive into SVG filters!&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/how-to-create-a-frosted-glass-effect-in-css--cms-32535"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;2 Ways to Create a CSS Frosted Glass Effect&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Adi Purdila&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;19 Apr 2023&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/glassmorphism-generator-tool--cms-109168"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109168/preview_image/glass.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109168/preview_image/glass.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109168/preview_image/glass.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109168/preview_image/glass.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109168/preview_image/glass.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109168/preview_image/glass.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a glassmorphism generator tool &lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Esther Vaati&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;27 May 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i018"&gt;
&lt;h2 id="toc-ipnm-what-is-an-svg-filter"&gt;What is an SVG filter?&lt;/h2&gt;
&lt;p&gt;CSS provides us with the &lt;code&gt;filter&lt;/code&gt; property that allows us to apply visual effects such as blur, brightness, contrast, saturation, and other effects to HTML elements. &lt;/p&gt;
&lt;p&gt;However, for more advanced, almost cinematic effects, SVG filters are a better choice. Unlike CSS filters, SVG filters are composed of modular building blocks known as &lt;em&gt;primitives&lt;/em&gt;. When these primitives are combined, they produce powerful visual effects which would not be possible with CSS alone.&lt;/p&gt;
&lt;p&gt;Some of the effects that can be applied using filters include custom blurs, water or ripple effects, realistic drop shadows, lighting effects, etc. &lt;/p&gt;
&lt;p&gt;SVG filters are created using the &lt;code&gt;&amp;lt;filter&amp;gt;&lt;/code&gt; element whose syntax looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;filter&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/filter&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Just like any other  SVG element, the &lt;code&gt;&amp;lt;filter&amp;gt;&lt;/code&gt; element accepts several attributes that control how it behaves and how much space it covers. These attributes determine factors such as position, size, and blur of the filter.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;svg&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;filter&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"myFilter"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;x=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;y=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;filterUnits=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"objectBoundingBox"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;primitiveUnits=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"userSpaceOnUse"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;&lt;code&gt;id&lt;/code&gt;: used to identify the filter.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;&lt;code&gt;x&lt;/code&gt; , &lt;code&gt;y&lt;/code&gt; are the positions of the filter relative to the target element.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;&lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt;: specify the size to be covered by the filter.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;&lt;code&gt;filterUnits&lt;/code&gt; is the coordinate system for x, y, width, and height.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;&lt;code&gt;primitiveUnits&lt;/code&gt; defines the coordinate system inside the filter primitives&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inside the &lt;code&gt;&amp;lt;filter&amp;gt;&lt;/code&gt; element is where you define the primitives. Primitives are also SVG elements and they include &lt;code&gt;&amp;lt;feGaussianBlur&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;feOffset&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;feColorMatrix&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;feDisplacementMap&amp;gt;&lt;/code&gt;, etc.&lt;/p&gt;
&lt;p&gt;In this tutorial, we’ll only focus on the &lt;code&gt;&amp;lt;feGaussianBlur&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;feDisplacementMap&amp;gt;&lt;/code&gt; filters. These two are commonly used together to create effects such as glass distortion, ripples, and frosted backgrounds.&lt;/p&gt;
&lt;p&gt;For example, to blur an element, we use the &lt;code&gt;&amp;lt;feGaussianBlur&amp;gt;&lt;/code&gt; primitive which looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;feGaussianBlur&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"SourceGraphic"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;stdDeviation=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"5"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;result=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;in&lt;/code&gt; attribute defines the input source of the filter primitive while the &lt;code&gt;stDeviation&lt;/code&gt; determines the strength of the blur. Once we define the SVG filter, we’ll apply it to an HTML element or another SVG by referencing its id using the &lt;code&gt;filter&lt;/code&gt; property.&lt;/p&gt;
&lt;h3 id="toc-imsi-in-action"&gt;In action&lt;/h3&gt;
&lt;p&gt;So for example, suppose we have a green SVG circle that looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;svg&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;circle&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;cx=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;cy=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;r=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"80"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;fill=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"green"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/xbwKqGm?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;If we needed to apply a blur to the SVG circle,  we would create a filter containing a &lt;code&gt;&amp;lt;feGaussianBlur&amp;gt;&lt;/code&gt; primitive, and then apply the filter to the circle as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;svg&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;filter&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;feGaussianBlur&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"SourceGraphic"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;stdDeviation=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"20"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/filter&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;circle&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;cx=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;cy=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;r=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"80"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;fill=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"green"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;filter=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"url(#blur)"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/wBKwJKo?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;SVG primitives typically have both an input(&lt;code&gt;in&lt;/code&gt;) as well as an output(&lt;code&gt;result&lt;/code&gt;). The output of one primitive is used as input of another primitive hence creating a chain of primitives for more advanced effects.&lt;/p&gt;
&lt;p&gt;In this code snippet, &lt;code&gt;in=sourceGraphic&lt;/code&gt; means that the blur will be applied to the original graphic, in this case, the green circle, while the &lt;code&gt;stdDeviation&lt;/code&gt; attribute controls the strength of the blur. The higher the value, the more intense and spread out the blur effect becomes.&lt;/p&gt;
&lt;h3 id="toc-poky-feimage-filter-element"&gt;feImage Filter Element&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;feImage&amp;gt;&lt;/code&gt; filter primitive is used to bring an external image or SVG fragment into the filter chain. It does not apply any effects, rather it loads an image from a URL or base64 data. &lt;/p&gt;
&lt;p&gt;The output is then used by other primitives like the &lt;code&gt;&amp;lt;feDisplacementMap&amp;gt;&lt;/code&gt; to create custom effects such as distortions, lighting, blending,  etc. &lt;/p&gt;
&lt;p&gt;&lt;span&gt;For example, to load an image URL into the &lt;code&gt;&amp;lt;feImage&amp;gt;&lt;/code&gt; filter primitive, we’ll have something like this:&lt;/span&gt;&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;feImage&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;href=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"https://example.com/image.png"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;x=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;y=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"100%"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;result=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"map"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-poky-feimage-filter-element"&gt;
&lt;code&gt;feDisplacementMap&lt;/code&gt; Filter Element&lt;/h3&gt;
&lt;p&gt;The  &lt;code&gt;&amp;lt;feDisplacementMap&amp;gt;&lt;/code&gt; filter primitive is responsible for creating distortion effects in SVG. It does this by distorting the color values using the pixels of a displacement map( loaded using the &lt;code&gt;&amp;lt;feImage &amp;gt;&lt;/code&gt; filter) to shift pixels of the original graphic.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;feDisplacementMap&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"disp"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;in2=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"map"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;scale=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.8"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;xChannelSelector=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"R"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;yChannelSelector=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"G"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/feDisplacementMap&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For example, in the code above, the &lt;code&gt;&amp;lt;feDisplacementMap&amp;gt;&lt;/code&gt; filter primitive takes 2 inputs where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;in="blur"&lt;/code&gt; is the output of the Gaussian blur&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;in2="map"&lt;/code&gt; is the displacement map image&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;xChannelSelector&lt;/code&gt; attribute specifies which color channel from the displacement image is used to displace pixels along the x-axis while the &lt;code&gt;yChannelSelector&lt;/code&gt; attribute specifies which color channel from the displacement image is used to displace pixels along the y-axis.&lt;/p&gt;
&lt;p&gt;These channels can either be R(Red), G(Green) B(Blue) and A(Alpha). The scale attributes determine the intensity of the distortion effect.&lt;/p&gt;
&lt;p&gt;Now that we know how SVG filters work and how to create them, we can create a liquid glass distortion effect and apply it to an HTML element.&lt;/p&gt;
&lt;h2 id="toc-2in2-create-glass-button-with-svg-filters"&gt;Create a Liquid Glass button with SVG filters&lt;/h2&gt;
&lt;p&gt;We’ll start with the HTML markup, a simple button and a span element.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"glass-button"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;CRYSTAL&lt;span style="color: #f4bf75"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-hiou-styling-with-css"&gt;Styling with CSS&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;To create a realistic glass button, we need three key ingredients:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;A background blur to blur whatever is behind the button and create a translucent frosted look. We will achieve this using the &lt;code&gt;feGaussian&lt;/code&gt; filter. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A background image will enhance the realism of the blur. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Transparency; we need to make the button partially see-through. Without the semi-transparent background, the button would be solid, hence hiding the blur effect. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let’s add a background image to the page.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;150vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;url("https://images.unsplash.com/photo-1683657535824-5b570c7a1749?q=80&amp;amp;w=764&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;ixlib=rb-4.1.0&amp;amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D")&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cover&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We’ll also add a simple keyframe animation that will change the background’s position over time, hence creating a smooth floating animation.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;150vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;url("https://images.unsplash.com/photo-1683657535824-5b570c7a1749?q=80&amp;amp;w=764&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;ixlib=rb-4.1.0&amp;amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D")&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cover&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;animation&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;floatBG&lt;/span&gt; &lt;span style="color: #90a959"&gt;15s&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;ease-in-out&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;infinite&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;@keyframes&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;floatBG&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #151515;background-color: #ac4142"&gt;100&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #151515;background-color: #ac4142"&gt;25&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;30%&lt;/span&gt; &lt;span style="color: #90a959"&gt;70%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;70%&lt;/span&gt; &lt;span style="color: #90a959"&gt;30%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #151515;background-color: #ac4142"&gt;75&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;40%&lt;/span&gt; &lt;span style="color: #90a959"&gt;60%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Add these styles to the button. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.glass-button&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fixed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;left&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;transform&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;translate&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;-50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;-50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;outline&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;350px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;180px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;999px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.glass-button&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;span&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-family&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"Orbitron"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;white&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;2.5rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;600&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-transform&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;uppercase&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;letter-spacing&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.1em&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We have positioned the button at the center using &lt;code&gt;fixed:position&lt;/code&gt; so it stays in place when the background animates. This will ensure the glass effect is visually enhanced.&lt;/p&gt;
&lt;p&gt;By default, the button has a solid background, we’ll replace it with a transparent gradient and a semi-transparent border to also enhance the glass illusion.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.glass-button&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fixed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;left&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;transform&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;translate&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;-50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;-50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;outline&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;350px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;180px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;999px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;linear-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #90a959"&gt;135deg&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #90a959"&gt;0%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.08&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.03&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;So far, the button looks like this:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png" loading="lazy" width="870px" height="490px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png" loading="lazy" width="650px" height="368px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png" loading="lazy" width="380px" height="219px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;We need to make it more &lt;em&gt;glassy&lt;/em&gt; by adding SVG filters. &lt;/p&gt;
&lt;h3 id="toc-5yus-glass-distortion-filter"&gt;Glass distortion &lt;/h3&gt;
&lt;p&gt;To create the glass distortion effect with SVGs, we’ll use a combination of blur, displacement, and a texture map. Let’s start by defining the &lt;code&gt;&amp;lt;filter&amp;gt;&lt;/code&gt; element where our primitives will be defined. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;svg&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;style=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"position: absolute; width: 0; height: 0;"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;filter&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"glassFilter"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/filter&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Next, we’ll add a Gaussian blur to the source graphic using the &lt;code&gt;&amp;lt;feGaussianBlur&amp;gt;&lt;/code&gt; primitive. We’ll also ensure it’s available for use in the next chaining process by storing its output in the result attribute. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;feGaussianBlur&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"SourceGraphic"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;stdDeviation=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.02"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;result=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;A good displacement map image should have high contrast and noticeable color variations. This is important because the distortion depends on the intensity of the color channels.&lt;/p&gt;
&lt;p&gt;To ensure the displacement image covers the whole filter area, we have defined x,y, width, and height. Depending on the size of the element the filter will be applied to, you will need to adjust these values to achieve the desired result.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;feImage&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;x=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"-50%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;y=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"-50%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;result=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"map"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;As you can see in the &lt;code&gt;&amp;lt;feImage&amp;gt;&lt;/code&gt; filter code above, we haven’t set the &lt;code&gt;href&lt;/code&gt; directly because the base64-encoded version of the image would be very long. Instead, we’ll use JavaScript to set the &lt;code&gt;href&lt;/code&gt; dynamically.&lt;/p&gt;
&lt;p&gt;Add this code in your JavaScript file &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;feImage&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;querySelector&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;feImage&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fetch&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;https://essykings.github.io/JavaScript/map.png&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;then&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;response&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;response&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blob&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;})&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;then&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blob&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;objURL&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;URL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createObjectURL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blob&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;feImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;setAttribute&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #90a959"&gt;href&lt;/span&gt;&lt;span style="color: #90a959"&gt;'&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;objURL&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here, we first select the &lt;code&gt;&amp;lt;feImage&amp;gt;&lt;/code&gt; element using &lt;code&gt;querySelector&lt;/code&gt;, then we fetch the image from a hosted URL, convert the response into a &lt;code&gt;Blob&lt;/code&gt; (a binary representation of the image), and then assign the objectURL as the &lt;code&gt;href&lt;/code&gt; value of the &lt;code&gt;&amp;lt;feImage&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We now have the blurred content and the image map, so let’s combine them using the &lt;code&gt;&amp;lt;feDisplacmentMap&amp;gt;&lt;/code&gt; filter to get the final glass distortion effect which will be added to the button.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;feDisplacementMap&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"disp"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in2=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"map"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;scale=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.8"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;xChannelSelector=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"R"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;yChannelSelector=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"G"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now, the final SVG filter looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table xml"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;svg&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;style=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"position: absolute; width: 0; height: 0"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;filter&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"glass"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;x=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"-50%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;y=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"-50%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;primitiveUnits=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"objectBoundingBox"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;feImage&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;x=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"-50%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;y=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"-50%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;width=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;height=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"200%"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;result=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"map"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;feGaussianBlur&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"SourceGraphic"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;stdDeviation=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.02"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;result=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;feDisplacementMap&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"disp"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;in2=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"map"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;scale=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.8"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;xChannelSelector=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"R"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;yChannelSelector=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"G"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/filter&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Apply the SVG glass distortion effect on the button using the backdrop-filter property.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;backdrop-filter&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;url&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;#glass&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, to enhance the interactivity of the glass button, let’s add a zoom effect on hover. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.glass-button&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:hover&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;transform&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;translate&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;-50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;-50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;scale&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;1.05&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-vsn6-final-result"&gt;Final result&lt;/h2&gt;
&lt;p&gt;Here is the final result of the glass button in action:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/VYvZpbY?default-tab=result" width="850" height="600" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h2 id="toc-3ufc-conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We have seen how powerful SVG filters can be, with just a few SVG filter primitives, we have created a  realistic glass distortion effect, similar to Apple’s Liquid Glass effect. Now you can use SVG filters to create visual styles directly in your browser. &lt;/p&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109200/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109200/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109200/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109200/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>Create a color contrast checker with HTML, CSS, and JavaScript</title><link>https://webdesign.tutsplus.com/color-contrast-checker--cms-109187t</link><author>noemail@noemail.org (Esther Vaati)</author><pubDate>Mon, 26 May 2025 20:57:29 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109187</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iufx"&gt;
&lt;p&gt;By “color contrast” we’re referring to the difference in brightness between foreground and background colors. In simpler terms, it defines how easy it is for the human eye to recognize text or images on a coloured background.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://www.w3.org/WAI/standards-guidelines/wcag/" target="_blank" rel="noopener"&gt;Web Content Accessibility Guidelines&lt;/a&gt; (WCAG) provide specific recommendations regarding color contrast for text to make web content accessible and visible to people with impaired vision.&lt;/p&gt;
&lt;p&gt;It recommends a minimum contrast ratio of &lt;strong&gt;4.5:1&lt;/strong&gt; for normal text. For larger text, the minimum recommended contrast ratio is &lt;strong&gt;3:1&lt;/strong&gt;. According to the WCAG,  larger text is defined as &lt;strong&gt;24px&lt;/strong&gt; or larger for normal-weight fonts and &lt;strong&gt;18.66px&lt;/strong&gt; or larger for bold text. &lt;/p&gt;
&lt;p&gt;For example, if you have a dark background with dark-colored text, the text will not be easily readable, as seen below.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109187/image-upload/color_contrast.png" loading="lazy" width="870px" height="370px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109187/image-upload/color_contrast.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109187/image-upload/color_contrast.png" loading="lazy" width="650px" height="279px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109187/image-upload/color_contrast.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109187/image-upload/color_contrast.png" loading="lazy" width="380px" height="168px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109187/image-upload/color_contrast.png 2x"&gt;&lt;/figure&gt;
&lt;h2 id="toc-u4ui-how-is-contrast-ratio-calculated"&gt;How is contrast ratio calculated?&lt;/h2&gt;
&lt;p&gt;The contrast ratio between two colors is calculated using the following formula.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table shell"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;contrast ratio &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;L1 + 0.05&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; /&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt; L2+0.05&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;L1&lt;/code&gt; is the relative luminance of the lighter color, and &lt;code&gt;L2&lt;/code&gt; is the relative luminance of the darker color. While higher contrast is generally recommended to meet accessibility standards, moderate contrast is the best as it reduces eye strain. &lt;/p&gt;
&lt;p&gt;Luminance, on the other hand, is the perceived brightness of a color, and it's calculated based on RGB values of that color as shown below:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table plaintext"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;R0 = R/255
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;G0 = G/255
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;B0 = B/255
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Once we obtain these values, we linearise each component as follows:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;r&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;R0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.03928&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;R0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;12.92&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;R0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.055&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;1.055&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;2.4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;g&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;G0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.03928&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;G0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;12.92&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;G0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.055&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;1.055&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;2.4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;b&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;B0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.03928&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;B0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;12.92&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;B0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.055&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;1.055&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;2.4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, we compute the relative luminance like so:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table plaintext"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;Luminance = 0.2126 * R0+0.07152* G0+0.0722*B0
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;Now that we know how to calculate the contrast ratio, let’s build our own color contrast tool!&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="toc-vd8v-heres-what-were-working-towards"&gt;&lt;span&gt;Here’s what we’re working towards&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/MYwxWwZ?default-tab=result" width="850" height="500" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h2 id="toc-1zxq-html-structure"&gt;HTML Structure&lt;/h2&gt;
&lt;p&gt;The HTML structure will have the following elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Color pickers for selecting the foreground and background colors&lt;/li&gt;
&lt;li&gt;A display area to indicate whether the selected color combination meets the WCAG guidelines.&lt;/li&gt;
&lt;li&gt;A preview area that displays sample text to visually demonstrate readability.  &lt;/li&gt;
&lt;li&gt;A paragraph displaying the contrast ratio of the selected colors. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The code for the HTML markup will look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Color Contrast Checker&lt;span style="color: #f4bf75"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color-pickers"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color-picker"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text-color"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Text Color:&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text-color"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"#000000"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text-color-hex"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"#000000"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;p&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text-color-error"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"error-message"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color-picker"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"bg-color"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Background Color:&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"bg-color"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"#FFFFFF"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"bg-color-hex"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"#FFFFFF"&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;p&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"bg-color-error"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"error-message"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"output"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"results"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"results-item"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;WCAG AA&lt;span style="color: #f4bf75"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Normal Text: &lt;span style="color: #f4bf75"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"normal_text_aa"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Pass&lt;span style="color: #f4bf75"&gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Large Text: &lt;span style="color: #f4bf75"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"large_text_aa"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Pass&lt;span style="color: #f4bf75"&gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"results-item"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;WCAG AAA&lt;span style="color: #f4bf75"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Normal Text: &lt;span style="color: #f4bf75"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"normal_text_aaa"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Pass&lt;span style="color: #f4bf75"&gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Large Text: &lt;span style="color: #f4bf75"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"large_text_aaa"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Pass&lt;span style="color: #f4bf75"&gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;This is a preview text&lt;span style="color: #f4bf75"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"ratio"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Contrast Ratio: &lt;span style="color: #f4bf75"&gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"contrast-ratio"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"error"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;p&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"error-message"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-sxei-styling-with-css"&gt;Styling with CSS&lt;/h2&gt;
&lt;p&gt;We'll start by adding some basic styles to the body, the enclosing container, and the title.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fff&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;800px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;h1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;32px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#333&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Align the color picker elements using Flexbox to ensure child elements (i.e. the input and label) are stacked vertically.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.color-pickers&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;justify-content&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.color-picker&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;160px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Style the inputs and labels as shown below:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;label&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;600&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.7&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;input&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;type&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;40px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.05&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;input&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;type&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.05&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-transform&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;uppercase&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The display area will indicate whether the selected colors have passed the minimum contrast ratio requirement. If they fail, we will show a &lt;em&gt;fail&lt;/em&gt; message, otherwise a &lt;em&gt;pass&lt;/em&gt; message will be displayed.&lt;/p&gt;
&lt;p&gt; Here are the styles for the display area.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.results&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;justify-content&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.results-item&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;15px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;min-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;130px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.05&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.results-item&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;h3&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;10px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#333&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.results-item&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;p&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;5px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.pass&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#38a169&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bold&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.fail&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.error-message&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e53e3e&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bold&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Add these styles to the preview and contrast ratio elements .&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;justify-content&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;min-height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.05&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;600px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.ratio&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;italic&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#333&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We'll also have  styles for error messages.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.error&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e53e3e&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.error-message&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Our simple interface now looks like this:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109187/image-upload/color_tool.png" loading="lazy" width="870px" height="675px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109187/image-upload/color_tool.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109187/image-upload/color_tool.png" loading="lazy" width="650px" height="505px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109187/image-upload/color_tool.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109187/image-upload/color_tool.png" loading="lazy" width="380px" height="297px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109187/image-upload/color_tool.png 2x"&gt;&lt;/figure&gt;
&lt;h2 id="toc-rn01-color-contrast-functionality-with-javascript"&gt;Color contrast functionality with JavaScript&lt;/h2&gt;
&lt;p&gt;To get accurate color contrast ratios, we'll use the WCAG contrast checker API, which provides an easy way to check the contrast between any two colors. The color contrast ratio is obtained by providing the foreground and background color values to the API, as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table shell"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;https://webaim.org/resources/contrastchecker/?fcolor&lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;0000FF&amp;amp;bcolor&lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;FFFFFF&amp;amp;api
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here we are using black for the text and white for the background.&lt;/p&gt;
&lt;p&gt;The output is a JSON object that looks something like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table shell"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"ratio"&lt;/span&gt;: &lt;span style="color: #90a959"&gt;"8.59"&lt;/span&gt;,
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"AA"&lt;/span&gt;: &lt;span style="color: #90a959"&gt;"pass"&lt;/span&gt;,
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"AALarge"&lt;/span&gt;: &lt;span style="color: #90a959"&gt;"pass"&lt;/span&gt;,
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"AAA"&lt;/span&gt;: &lt;span style="color: #90a959"&gt;"pass"&lt;/span&gt;,
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"AAALarge"&lt;/span&gt;: &lt;span style="color: #90a959"&gt;"pass"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;A ratio of &lt;strong&gt;8.59&lt;/strong&gt; means the two colors pass the minimum color contrast guidelines. The &lt;em&gt;pass&lt;/em&gt; status means the colors also pass the WCAG requirements for both normal text (AA) and large text (AA). &lt;/p&gt;
&lt;p&gt;The pass on AAA means the contrast ratio passes the most strict compliance level. &lt;/p&gt;
&lt;p&gt;Select all the elements we'll be working with. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorInput&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;text-color&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorInput&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;bg-color&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorHex&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;text-color-hex&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorHex&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;bg-color-hex&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorError&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;text-color-error&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorError&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;bg-color-error&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;normal_text_aa&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;normal_text_aa&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;large_text_aa&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;large_text_aa&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;normal_text_aaa&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;normal_text_aaa&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;large_text_aaa&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;large_text_aaa&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;preview&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;contrastRatio&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;contrast-ratio&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Next, we'll  get the currently selected color values from each of the color picker inputs. Create a function called &lt;code&gt;updateColors&lt;/code&gt; which looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateColors&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This function gets the current values and applies them to the preview. The selected background color is used as the preview's background while the selected foreground color is applied to the text.&lt;/p&gt;
&lt;p&gt;Invoke the &lt;code&gt;updateColors&lt;/code&gt; function to ensure the preview visually reflects how the text appears on the chosen background. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateColors&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-tpyh-color-validation"&gt;Color validation&lt;/h2&gt;
&lt;p&gt;Before calculating the contrast ratio of the selected colors, we'll first need to validate and sync the color values. This will ensure that when a color is selected using the color picker, the corresponding HEX input value is updated and vice versa. &lt;/p&gt;
&lt;p&gt;To do that, we'll create two functions, one for validating the foreground and another for validating the background color. &lt;/p&gt;
&lt;p&gt;Create a function called  &lt;code&gt;updateTextColorFromHex&lt;/code&gt; .&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateTextColorFromHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Get the current hex value from the text color input.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Check if the value provided starts with the # symbol, if it doesn't, append the symbol at the start of the value. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;charAt&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;!==&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;#&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;#&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Perform another validation to ensure the provided HEX value is a valid and existing color. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;isValidHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;))&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorError&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;incorrect color&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #aa759f"&gt;return&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;If the hex value of the color provided is invalid, show a message and exit the function. If it's a valid color, clear the error message and sync the input value and the color picker to ensure the text input and the color input both show the same color.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorError&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorError&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;block&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexValue&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The helper &lt;code&gt;isValidHex&lt;/code&gt; function uses a regular expression to test the input value and it looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;isValidHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #75b5aa"&gt;/^#&lt;/span&gt;&lt;span style="color: #8f5536"&gt;([&lt;/span&gt;&lt;span style="color: #75b5aa"&gt;A-Fa-f0-9&lt;/span&gt;&lt;span style="color: #8f5536"&gt;]{6}&lt;/span&gt;&lt;span style="color: #75b5aa"&gt;|&lt;/span&gt;&lt;span style="color: #8f5536"&gt;[&lt;/span&gt;&lt;span style="color: #75b5aa"&gt;A-Fa-f0-9&lt;/span&gt;&lt;span style="color: #8f5536"&gt;]{3})&lt;/span&gt;&lt;span style="color: #75b5aa"&gt;$/&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;test&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We'll perform a similar validation for the background color.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table plaintext"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  function updateBgColorFromHex() {
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    let hexValue = bgColorHex.value;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    if (hexValue.charAt(0) !== "#") {
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      hexValue = "#" + hexValue;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    }
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    if (!isValidHex(hexValue)) {
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      bgColorError.textContent = "incorrect color";
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      bgColorError.style.display = "block";
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      return;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    }
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    bgColorError.textContent = "";
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    bgColorInput.value = hexValue;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    bgColorHex.value = hexValue;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    updateColors()
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  }
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-xqli-event-listeners"&gt;Event listeners &lt;/h2&gt;
&lt;p&gt;It is also important to ensure that when the color or text input  change, the corresponding values are updated. We do this by adding input event listeners to the elements. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateTextColorFromHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateBgColorFromHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;function &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateColors&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;function &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorHex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateColors&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/introduction-to-javascript-event-listeners--cms-35236"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/35236/preview_image/click.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/35236/preview_image/click.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/35236/preview_image/click.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/35236/preview_image/click.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/35236/preview_image/click.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/35236/preview_image/click.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;An Introduction to JavaScript Event Listeners for Web Designers&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Anna Monus&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;25 Jul 2023&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2 id="toc-pqig-contract-ckecker"&gt;Contrast checker&lt;/h2&gt;
&lt;p&gt;The next step is to pass the current foreground and background hex color values to the API.&lt;/p&gt;
&lt;p&gt;Create a function called &lt;code&gt;getContrastRatio&lt;/code&gt;, which takes two arguments namely, &lt;code&gt;foreground&lt;/code&gt; and &lt;code&gt;background&lt;/code&gt;.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContrastRatio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;foreground&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;//logic goes here
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Since the API takes the values without the # symbol, we'll remove the # character using the &lt;code&gt;replace()&lt;/code&gt; method, as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fcolor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;foreground&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;replace&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;#&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bcolor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;replace&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;#&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here, we are replacing the # symbol with an empty string. For example, if the hex value is #FFFFFF, the output will be FFFFFF.&lt;/p&gt;
&lt;p&gt;Append the values to the API string.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;apiUrl&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`https://webaim.org/resources/contrastchecker/?
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;                fcolor=&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fcolor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;&amp;amp;bcolor=&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;bcolor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;&amp;amp;api`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Using &lt;code&gt;fetch()&lt;/code&gt;, make a network request to the WebAIMi API and handle any occurring errors gracefully.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fetch&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;apiUrl&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;then&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;response&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;!&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;response&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;ok&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #aa759f"&gt;throw&lt;/span&gt; &lt;span style="color: #aa759f"&gt;new&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;Error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Network response was not ok&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;response&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;json&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;})&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-3rok-update-the-results"&gt;Update the results&lt;/h3&gt;
&lt;p&gt;If the API response is successful, we'll get a JSON object containing the contrast ratio and the output of the contrast check, either a fail or a pass in this format.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;ratio&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;8.59&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;AA&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;AALarge&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;AAA&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;AAALarge&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AA - normal text&lt;/li&gt;
&lt;li&gt;AALarge - large text&lt;/li&gt;
&lt;li&gt;AAA - strict compliance for normal text&lt;/li&gt;
&lt;li&gt;AAALarge - strict compliance for large text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We'll then update the results to the page by appending them to the appropriate elements.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;normal_text_aa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AA&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;normal_text_aa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;className&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AA&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;large_text_aa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AALarge&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;large_text_aa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;className&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AALarge&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;normal_text_aaa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AAA&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;normal_text_aaa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;className&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AAA&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;large_text_aaa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AAALarge&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;large_text_aaa&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;className&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;AAALarge&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;===&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;pass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;fail&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here, each result is displayed as either a Pass or Fail, accompanied by styling that uses red for fail and green for pass.&lt;/p&gt;
&lt;p&gt;The final step is to update the &lt;code&gt;updateColors()&lt;/code&gt; function to ensure the selected colors are passed to the &lt;code&gt;getContrastRatio()&lt;/code&gt; function.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateColors&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColorInput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;getContrastRatio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;bgColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Don’t forget to update the contrast ratio by setting the ratio value as the text content.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;contrastRatio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFloat&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;data&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;ratio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-7cgz-the-final-demo"&gt;The final demo&lt;/h2&gt;
&lt;p&gt;Here is the final demo!&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/MYwxWwZ?default-tab=result" width="850" height="500" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h2 id="toc-ftbm-conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's a wrap for this tutorial! We have learned how to build a tool that checks contrast ratios to help adhere to WCAG guidelines. Hopefully, you now feel equipped to create more accessible and user-friendly designs.&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/building-an-inclusive-web-why-accessibility-matters--cms-29773"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;Building an Inclusive Web: Why Accessibility Matters&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Sami Keijonen&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;03 Dec 2017&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/accessibility-basics-designing-for-visual-impairment--cms-27634"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/27634/preview_image/pre.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/27634/preview_image/pre.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/27634/preview_image/pre.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/27634/preview_image/pre.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/27634/preview_image/pre.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/27634/preview_image/pre.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;Accessibility Basics: Designing for Visual Impairment
&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/19988/profileImage/graeme.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/19988/profileImage/graeme.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/19988/profileImage/graeme.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/19988/profileImage/graeme.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/19988/profileImage/graeme.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/19988/profileImage/graeme.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Graeme Fulton&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;13 Jun 2022&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/how-to-use-the-contrast-checker-in-chrome-devtools--cms-31504"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/31504/preview_image/pre.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/31504/preview_image/pre.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/31504/preview_image/pre.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/31504/preview_image/pre.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/31504/preview_image/pre.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/31504/preview_image/pre.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to Use the Contrast Checker in Chrome DevTools&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/2532/profileImage/kezz.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/2532/profileImage/kezz.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/2532/profileImage/kezz.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/2532/profileImage/kezz.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/2532/profileImage/kezz.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/2532/profileImage/kezz.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Kezz Bracey&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;22 Oct 2018&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109187/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109187/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109187/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109187/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to create a mesh gradient generator in HTML, CSS and JavaScript</title><link>https://webdesign.tutsplus.com/how-to-create-a-mesh-gradient-generator-with-html-css-and-javascript--cms-109183t</link><author>noemail@noemail.org (Esther Vaati)</author><pubDate>Wed, 14 May 2025 22:05:59 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109183</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ik7n"&gt;
&lt;h2 id="toc-zyvq-what-were-building"&gt;What we’re building&lt;/h2&gt;
&lt;p&gt;Here’s the gradient generator we’re going to build. Click the button at the bottom to generate random new mesh gradients! Once they’re generated, you can copy the CSS to recreate the gradients using the &lt;code&gt;background-image&lt;/code&gt; property in combination with &lt;span&gt;&lt;code&gt;radial-gradient&lt;/code&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/jEPPLxR?default-tab=result" width="850" height="700" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h2 id="toc-yn76-what-is-mesh-gradient"&gt;Wait, what’s a mesh gradient?&lt;/h2&gt;
&lt;p&gt;Good question. Mesh gradient is the name given to a gradient in which multiple colors blend smoothly across a canvas, creating dreamy, colorful patterns. Mesh gradients have been a popular design trope on the web for a while, often seen in website backgrounds, hero sections, and app splash screens.&lt;/p&gt;
&lt;p&gt;Stripe's&lt;a href="https://stripe.com/" target="_self"&gt; homepage&lt;/a&gt; is a classic example that uses mesh gradients to create a colorful and dynamic aesthetic.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/30/posts/109183/image-upload/stripe.jpg" alt="stripe's homepage" loading="lazy" width="870px" height="454px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/30/posts/109183/image-upload/stripe.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109183/image-upload/stripe.jpg" alt="stripe's homepage" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109183/image-upload/stripe.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109183/image-upload/stripe.jpg" alt="stripe's homepage" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109183/image-upload/stripe.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Now we’re up to speed, let’s get building!&lt;/p&gt;
&lt;h2 id="toc-je26-our-simple-html-markup"&gt;Our simple HTML markup&lt;/h2&gt;
&lt;p&gt;We'll start with a simple  HTML markup which will have the following elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A header title&lt;/li&gt;
&lt;li&gt;A preview box container to show random mesh gradients in real time.&lt;/li&gt;
&lt;li&gt;A button for generating new gradients.&lt;/li&gt;
&lt;li&gt;A code block element to display the CSS used to create each mesh gradient.&lt;/li&gt;
&lt;li&gt;A button to copy the generated CSS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is the HTML.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Mesh Gradient Generator&lt;span style="color: #f4bf75"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"generateBtn"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"button"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Generate New Mesh&lt;span style="color: #f4bf75"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"cssCode"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"css-code"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"copyButton"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"copy-button"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Copy CSS&lt;span style="color: #f4bf75"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-yg4i-styling-the-mesh-tool-with-css"&gt;Styling the mesh tool with CSS&lt;/h2&gt;
&lt;p&gt;Now let's make the interface more colorful. We'll use some basic styles for all the elements and also set up a default mesh gradient in the preview element.&lt;/p&gt;
&lt;p&gt;Add these styles to your CSS file.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;justify-content&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;min-height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fefefe&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;h1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#333&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;2rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;800px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.button&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;6px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#000&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #90a959"&gt;#c1c5ce&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fff&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.css-code&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-family&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;monospace&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;white-space&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pre-wrap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#f5f5f5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;14px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.copy-button&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-46" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;46&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-47" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;47&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;14px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-48" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;48&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-49" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;49&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fff&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-50" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;50&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-51" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;51&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#005CE6&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-52" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;52&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-53" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;53&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.copy-button&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:hover&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-54" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;54&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#1a4e9d&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-55" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;55&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-cj4f-styling-the-mesh-tool-with-css"&gt;How Radial Gradients Work&lt;/h3&gt;
&lt;p&gt;The magic effect of mesh gradients comes from CSS radial gradients. So what exactly is a radial gradient? In CSS, a radial gradient generates a smooth transition between two or more colors, starting from a specific point and radiating outward towards another color or even transparency. &lt;/p&gt;
&lt;p&gt;Here is an example of a radial gradient consisting of 2 colors.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #f4bf75"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;40&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;20&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;#fc2ee7&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;#6&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;fa17d&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The values 40% 20% represent the center of the gradient being positioned 40% from the left and 20% from the top of the enclosing element. The radial gradient above will look like this:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/azOOyRB?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Let's add two more radial gradients to our box. The CSS for the background of the box will now look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;40&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;20&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;#FC2EE7&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;60&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;70&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;80&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;#6&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;FA17D&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;60&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;20&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;70&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;#2&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;EFCDB&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;60&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;80&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;30&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;#FFA62E&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;60&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here is the output of layering 3 radial gradients:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/LEVVjqj?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the background looks richer and vibrant because we are using multiple colors and placing them at random positions on the canvas.&lt;/p&gt;
&lt;p&gt;We'll layer several of these radial gradients at different positions, using a variety of unique colors at each position to create rich and colorful mesh gradients. &lt;/p&gt;
&lt;h3 id="toc-wm7l-add-a-default-gradient-to-the-preview"&gt;Add a default gradient to the preview&lt;/h3&gt;
&lt;p&gt;We'll use the same layering technique to add a default mesh gradient to the preview element. For the preview, we'll use  7 radial gradients. You can use any number of gradients, but ensure each gradient has unique positions and unique colors.&lt;/p&gt;
&lt;p&gt;Update the styles for the preview container to look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;background-image&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;30&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;15&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;102&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;204&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;75&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;102&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;204&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;65&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;233&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;102&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;85&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;55&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;102&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;153&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;10&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;90&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;153&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;51&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;90&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;95&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;153&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;102&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;radial-gradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;at&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;15&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;rgb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;204&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;102&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;0&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;transparent&lt;/span&gt; &lt;span style="color: #151515;background-color: #ac4142"&gt;50&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;%);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here we have defined multiple &lt;code&gt;radial-gradients()&lt;/code&gt; layers each positioned at different  x and y coordinates. Each gradient starts with a unique color at the center and fades out to transparency .&lt;/p&gt;
&lt;p&gt;After combining the radial gradients, we achieve a colorful mesh gradient which looks like this: &lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109183/image-upload/default_image.png" loading="lazy" width="870px" height="479px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109183/image-upload/default_image.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109183/image-upload/default_image.png" loading="lazy" width="650px" height="360px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109183/image-upload/default_image.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109183/image-upload/default_image.png" loading="lazy" width="380px" height="214px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109183/image-upload/default_image.png 2x"&gt;&lt;/figure&gt;
&lt;h2 id="toc-r1tm-adding-the-magic-with-javascript"&gt;Generating random gradients &lt;/h2&gt;
&lt;p&gt;It's time to create randomised mesh gradients. We want to ensure that every time you click the &lt;strong&gt;generate&lt;/strong&gt; button, a new mesh gradient is generated and updated in the preview.&lt;/p&gt;
&lt;p&gt;We'll also show a code block containing the exact CSS styles used to create the current mesh gradient.  &lt;/p&gt;
&lt;p&gt;Let's first get the elements:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;preview&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateBtn&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;generateBtn&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssCode&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;cssCode&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyButton&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;copyButton&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-cp4b-create-random-colors-and-positions"&gt;Generate random colors and X, Y coordinates&lt;/h3&gt;
&lt;p&gt;To apply radial gradients to any element, we first need to determine the x and y coordinates where each radial gradient will be applied. To do that, we'll generate random x and y coordinates on the canvas, ensuring that the radial gradients are randomly distributed across the entire element. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generatePoints&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;100&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;100&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;% &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;y&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;%`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;generatePoints()&lt;/code&gt; function will generate random x, y coordinates for each gradient. In CSS radial gradients, these coordinates are defined using percentages. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0% 0% will place the gradient at the top-left corner of the element&lt;/li&gt;
&lt;li&gt;100% 100%  will place the gradient at the bottom-right center of the element&lt;/li&gt;
&lt;li&gt;50% 50 % will place the gradient at the center of the element. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We'll create a similar function for generating random colors.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;r&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;256&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;g&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;256&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;b&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;256&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #90a959"&gt;`rgb(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;r&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;, &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;g&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;, &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;b&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;)`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now that we have our points and colors, we'll use them to determine where each radial gradient will be placed.&lt;/p&gt;
&lt;p&gt;Create a function called &lt;code&gt;generateRandomGradient()&lt;/code&gt;.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomGradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;To add variety and enhance the richness of our mesh gradients, we'll use &lt;code&gt;Math.random()&lt;/code&gt; and &lt;code&gt; Math.floor()&lt;/code&gt; to create between 5 and 8 radial gradients.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;points&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt;&lt;span style="color: #90a959"&gt;4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt;&lt;span style="color: #90a959"&gt;5&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Create an empty gradients array to contain the radial gradients .&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradients&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now we'll use a &lt;code&gt;for&lt;/code&gt; loop to create radial gradients based on the number of points. For each iteration, the loop will generate a random position, a random color, and create a radial gradient using the position and color. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #aa759f"&gt;for &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;points&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generatePoints&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradients&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;`radial-gradient(at &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;, &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt; 0px, transparent 50% )`&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, we combine the radial gradients into one string and set the string as the background of the preview element.&lt;/p&gt;
&lt;p&gt;This will update the preview with the new mesh gradient.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;generateRandomGradient()&lt;/code&gt; function now looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomGradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;points&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;floor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;random&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #90a959"&gt;4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradients&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #aa759f"&gt;for &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;points&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;i&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;++&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generatePoints&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradients&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;push&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #90a959"&gt;`radial-gradient(at &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;, &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt; 0px, transparent 50% )`&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gradients&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;join&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;, &lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;To ensure a new mesh gradient is generated when the generate button is clicked, we'll hook the button to the &lt;code&gt;generateRandomGradient&lt;/code&gt; function. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;We do this by adding a click event listener like this:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateBtn&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;click&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomGradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now, when you click the generate button, a new colorful mesh gradient will be generated.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;h3 id="toc-eg1d-update-and-copy-generated-css"&gt;Update and Copy Generated CSS &lt;/h3&gt;
&lt;p&gt;We also want to show a code block containing the CSS code for the current mesh gradient and update it every time a new mesh gradient is generated. &lt;/p&gt;
&lt;p&gt;To do this, we will create a new function called &lt;code&gt;updateCSS()&lt;/code&gt;, which looks like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateDefaultCss&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;computedStyle&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;getComputedStyle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;computedStyle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;computedStyle&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;console&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;log&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerText&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`.mesh-gradient {
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;background-image: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundImage&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;;
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;background-color: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;;
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;}`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;In this function, we use &lt;code&gt;getComputedStyle()&lt;/code&gt; to read the current styles of the preview box. &lt;code&gt;getComputedStyle()&lt;/code&gt; is a method used to get any CSS property currently applied to an HTML element.&lt;/p&gt;
&lt;p&gt;In our case, we use it to get the background color (&lt;code&gt;backGroundColor&lt;/code&gt;) and the background image (&lt;code&gt;backgroundImage&lt;/code&gt;) and update the values on the code block element. &lt;/p&gt;
&lt;p&gt;We also need to ensure this function runs every time a new mesh gradient is generated. Update the &lt;code&gt;generateRandomGradient&lt;/code&gt; as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateRandomGradient&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #949494"&gt;// the rest of the code 
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updateDefaultCss&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The final step is to ensure that when the &lt;strong&gt;Copy CSS&lt;/strong&gt; button is clicked, the values are copied to the clipboard.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyButton&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;click&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;navigator&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;clipboard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;writeText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssCode&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alert&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;CSS Code Copied!&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-83a1-final-demo"&gt;Final Demo&lt;/h2&gt;
&lt;p&gt;Here is the final demo!&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/jEPPLxR?default-tab=result" width="850" height="700" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;

&lt;h2 id="toc-9x6g-conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's a wrap for this tutorial. We've learned how to use radial gradients to create beautiful and colorful mesh gradients with CSS!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109183/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109183/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109183/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109183/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to edit text in Lottie images</title><link>https://design.tutsplus.com/tutorials/how-to-edit-text-in-lottie-images--cms-109194</link><author>noemail@noemail.org (Andrei Marius)</author><pubDate>Thu, 29 May 2025 19:00:42 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109194</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" id="idhj" class="content-block-wysi content-block"&gt;
&lt;p&gt;In the following tutorial, I'll show you how to edit text in Lottie images. We have a tutorial on &lt;a href="https://design.tutsplus.com/tutorials/how-to-create-a-text-animation-lottie--cms-109140" target="_blank" rel="noopener"&gt;how to create a Lottie text animation&lt;/a&gt;, and here we'll cover the alternative that you have, how to access and modify the text, and how to export your updated animations.&lt;/p&gt;
&lt;h2 id="toc-u43v-how-to-edit-text-in-lottie-images-using-an-after-effects-source-file"&gt;
&lt;span class="sectionnum"&gt;1.&lt;/span&gt; How to edit text in Lottie images using an After Effects source file&lt;/h2&gt;
&lt;p&gt;Changing text in a &lt;a href="https://design.tutsplus.com/c/graphic-design/s/animated-graphics" target="_blank" rel="noopener"&gt;Lottie animation&lt;/a&gt; isn't as straightforward as editing a regular image. To edit text in a Lottie animation, you will need access to the source file.&lt;/p&gt;
&lt;h3 id="toc-slnw-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;If you have access to the original &lt;a href="https://photography.tutsplus.com/video/compatible-with/adobe-after-effects" target="_blank" rel="noopener"&gt;After Effects&lt;/a&gt; file, open it and locate the text in your timeline. &lt;strong&gt;Double-click&lt;/strong&gt; it, and as long as the text is not turned into vector shapes, you should be able to edit it.&lt;/p&gt;
&lt;p&gt;Of course, once you make the changes, you'll need to save a new version of your Lottie animation with the updated text.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109194/image-upload/EditTextLottie1.jpg" alt="edit text in lottie images using the After Effects source file" loading="lazy" id="it05" width="870px" height="639px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109194/image-upload/EditTextLottie1.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109194/image-upload/EditTextLottie1.jpg" alt="edit text in lottie images using the After Effects source file" loading="lazy" id="it05" width="650px" height="479px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109194/image-upload/EditTextLottie1.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109194/image-upload/EditTextLottie1.jpg" alt="edit text in lottie images using the After Effects source file" loading="lazy" id="it05" width="380px" height="282px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109194/image-upload/EditTextLottie1.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-d4p9-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;If the original text was converted  to vector shapes, you won’t be able to edit it as text, only the shapes that make up the text. &lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109194/image-upload/EditTextLottie2.jpg" alt="text converted into vector shapes can't be edited at text in a lottie animation" loading="lazy" width="870px" height="1134px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109194/image-upload/EditTextLottie2.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109194/image-upload/EditTextLottie2.jpg" alt="text converted into vector shapes can't be edited at text in a lottie animation" loading="lazy" width="650px" height="846px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109194/image-upload/EditTextLottie2.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109194/image-upload/EditTextLottie2.jpg" alt="text converted into vector shapes can't be edited at text in a lottie animation" loading="lazy" width="380px" height="492px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109194/image-upload/EditTextLottie2.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="i3xf" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-ibwh-how-to-edit-text-in-lottie-images-using-a-figma-source-file"&gt;
&lt;span class="sectionnum"&gt;2.&lt;/span&gt; How to edit text in Lottie images using a Figma source file&lt;/h2&gt;
&lt;p&gt;If you have access to the original Figma file, open it and select the text.&lt;/p&gt;
&lt;p&gt;Just like in After Effects, you can &lt;strong&gt;double-click&lt;/strong&gt; to edit the text, as long as it hasn’t been turned into vector shapes. Again, be sure to save a new version of your Lottie animation with the updated text after making the changes.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109194/image-upload/EditTextLottie3.jpg" alt="edit text in lottie images using the Figma source file" loading="lazy" width="870px" height="1120px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109194/image-upload/EditTextLottie3.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109194/image-upload/EditTextLottie3.jpg" alt="edit text in lottie images using the Figma source file" loading="lazy" width="650px" height="835px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109194/image-upload/EditTextLottie3.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109194/image-upload/EditTextLottie3.jpg" alt="edit text in lottie images using the Figma source file" loading="lazy" width="380px" height="486px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109194/image-upload/EditTextLottie3.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="iuk4i" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-51en-how-to-edit-text-in-lottie-images-using-the-lottie-editor"&gt;
&lt;span class="sectionnum"&gt;3.&lt;/span&gt; How to edit text in Lottie images using the Lottie Editor&lt;/h2&gt;
&lt;p&gt;In theory, you should be able to edit text in a Lottie animation using the Lottie Editor, but from my experience I wouldn’t rely on this option as it comes with various limitations and bugs.&lt;/p&gt;
&lt;p&gt;Things might improve in the future, but for now, it's not a dependable solution.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109194/image-upload/EditTextLottie4.jpg" alt="edit text in lottie images using the Lottie Editor" loading="lazy" width="870px" height="505px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109194/image-upload/EditTextLottie4.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109194/image-upload/EditTextLottie4.jpg" alt="edit text in lottie images using the Lottie Editor" loading="lazy" width="650px" height="379px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109194/image-upload/EditTextLottie4.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109194/image-upload/EditTextLottie4.jpg" alt="edit text in lottie images using the Lottie Editor" loading="lazy" width="380px" height="225px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109194/image-upload/EditTextLottie4.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="iun47" class="content-block-wysi content-block"&gt;
&lt;div class="callout-block"&gt;
&lt;span class="callout-icon callout-tip"&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div class="callout-head"&gt;tip&lt;/div&gt;
&lt;div class="callout-message"&gt;Always keep the source files, and avoid converting text to vector shapes if you think you’ll need to edit it later.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="toc-3a0y-congrats-youre-done"&gt;Congrats! You're done&lt;/h2&gt;
&lt;p&gt;I hope you've enjoyed this tutorial and can apply these techniques in your future Lottie animations. You can find some great sources of inspiration at &lt;a href="https://elements.envato.com/" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;Envato&lt;/a&gt;, with interesting solutions to improve your Lottie animations.&lt;/p&gt;
&lt;h2 id="toc-h4j7-want-to-learn-more"&gt;Want to Learn More?&lt;/h2&gt;
&lt;p&gt;At Envato Tuts+, we have loads of tutorials on &lt;a href="https://design.tutsplus.com/articles/everything-you-need-to-know-about-lottie-animations--cms-109142" target="_blank" rel="noopener"&gt;everything you need to know about Lottie animations&lt;/a&gt;. Take a look!&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-text-animation-lottie--cms-109140"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a Lottie text animation&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Andrei Marius&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;07 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/everything-you-need-to-know-about-lottie-animations--cms-109142"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;Everything you need to know about Lottie animations&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Jonathan Lam&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;25 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-an-animated-lottie-logo--cms-109175"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create an animated Lottie logo&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2824/profiles/21349/profileImage/pfp.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2824/profiles/21349/profileImage/pfp.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2824/profiles/21349/profileImage/pfp.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2824/profiles/21349/profileImage/pfp.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/profiles/21349/profileImage/pfp.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/profiles/21349/profileImage/pfp.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Drew MacDonald&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;12 May 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-lottie-animation--cms-109162"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a Lottie animation&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Yulia Sokolova&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;18 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109194/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109194/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109194/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109194/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to create a Lottie loading animation</title><link>https://design.tutsplus.com/tutorials/how-to-create-a-lottie-loading-animation--cms-109191</link><author>noemail@noemail.org (Andrei Marius)</author><pubDate>Wed, 28 May 2025 15:57:41 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109191</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" id="i08u" class="content-block-wysi content-block"&gt;
&lt;p&gt;Ready to learn how to create a Lottie loading animation using &lt;a href="https://webdesign.tutsplus.com/compatible-with/figma" target="_blank" rel="noopener"&gt;Figma&lt;/a&gt;? We’ll walk through designing the &lt;a href="https://design.tutsplus.com/c/graphic-design/s/animated-graphics" target="_blank" rel="noopener"&gt;animated graphic&lt;/a&gt;, prototyping it, and exporting it using the LottieFiles plugin. All you need is a free Figma account. &lt;span&gt;If you're starting, here's &lt;a href="https://design.tutsplus.com/articles/everything-you-need-to-know-about-lottie-animations--cms-109142" target="_blank" rel="noopener"&gt;everything you need to know about Lottie animations&lt;/a&gt;, and if you're ready to get inspired, let's dive in.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/qEddwXN?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div data-content-block-type="TableOfContents" class="content-block content-block-tableofcontents"&gt;&lt;ul class="visual-toc-list toc-ordered-list visual-toc__regular-theme div-container visual-toc-list__overflow visual-toc-list__unequal-split" start="0"&gt;


&lt;li class="toc-item-title"&gt;&lt;a href="#toc-6ni8-how-to-create-a-simple-frame"&gt;&lt;span class="visual-toc__heading-title content-container"&gt;How to create a simple frame&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="toc-item-title"&gt;&lt;a href="#toc-mcjk-how-to-create-the-main-component-of-the-lottie-loader-animation"&gt;&lt;span class="visual-toc__heading-title content-container"&gt;How to create the main component of the Lottie loader animation​&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="toc-item-title"&gt;&lt;a href="#toc-0t5b-how-to-add-the-variants-of-the-lottie-loading-animation"&gt;&lt;span class="visual-toc__heading-title content-container"&gt;How to add variants of the Lottie loading animation&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="toc-item-title"&gt;&lt;a href="#toc-j8a8-how-to-prototype-your-lottie-loading-animation"&gt;&lt;span class="visual-toc__heading-title content-container"&gt;How to prototype your Lottie loading animation&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="toc-item-title"&gt;&lt;a href="#toc-xybg-how-to-create-the-lottie-loading-animation"&gt;&lt;span class="visual-toc__heading-title content-container"&gt;How to create the Lottie loading animation&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="toc-item-title"&gt;&lt;a href="#toc-ahrv-how-to-preview-and-save-the-loading-animation-as-lottie"&gt;&lt;span class="visual-toc__heading-title content-container"&gt;How to preview and save the loading animation as Lottie&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div data-content-block-type="Wysi" id="iuzf9" class="content-block-content-block-wysi content-block"&gt;
&lt;h2 id="toc-6ni8-how-to-create-a-simple-frame"&gt;
&lt;span class="sectionnum"&gt;1.&lt;/span&gt; How to create a simple frame&lt;/h2&gt;
&lt;p&gt;Start with the &lt;strong&gt;Frame Tool (F)&lt;/strong&gt; and use it to create an &lt;strong&gt;850 x 600&lt;/strong&gt; frame. Add a &lt;strong&gt;Fill&lt;/strong&gt; for this frame and set its color to &lt;code&gt;#5300C0&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation1.jpg" alt="figma create a frame" loading="lazy" width="870px" height="678px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation1.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation1.jpg" alt="figma create a frame" loading="lazy" width="650px" height="508px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation1.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation1.jpg" alt="figma create a frame" loading="lazy" width="380px" height="299px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation1.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="io02a" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-mcjk-how-to-create-the-main-component-of-the-lottie-loader-animation"&gt;
&lt;span class="sectionnum"&gt;2.&lt;/span&gt; How to create the main component of the Lottie loader animation​&lt;/h2&gt;
&lt;h3 id="toc-zuga-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Using the same tool, create a &lt;strong&gt;540 x 110 px&lt;/strong&gt; frame. Add a &lt;strong&gt;Fill&lt;/strong&gt; for this second frame and use a dark grey. The color is not important as we'll remove it a few steps later.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation2.jpg" alt="add frame" loading="lazy" id="izjb4" width="870px" height="501px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation2.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation2.jpg" alt="add frame" loading="lazy" id="izjb4" width="650px" height="377px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation2.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation2.jpg" alt="add frame" loading="lazy" id="izjb4" width="380px" height="224px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation2.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="i18l" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-oxae-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Keep focusing on your second frame and pick the&lt;strong&gt; Ellipse Tool (O)&lt;/strong&gt;. Use it to create an 80 px circle, make it white (&lt;code&gt;#FFFFFF&lt;/code&gt;), and place it exactly as shown in the second image. With the circle selected, you can hold down the &lt;strong&gt;Alt&lt;/strong&gt; key to check out the spacing between the edges of your circle and the edges of the frame.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation3.jpg" alt="create circle ellipse tool" loading="lazy" width="870px" height="874px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation3.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation3.jpg" alt="create circle ellipse tool" loading="lazy" width="650px" height="653px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation3.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation3.jpg" alt="create circle ellipse tool" loading="lazy" width="380px" height="382px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation3.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="i88rj" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-mmwy-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Select your circle using the &lt;strong&gt;Move Tool (V)&lt;/strong&gt;, hold down the &lt;strong&gt;Alt&lt;/strong&gt; and &lt;strong&gt;Shift&lt;/strong&gt; keys, and then simply drag a copy of the circle to the right. Leave a &lt;strong&gt;60 px&lt;/strong&gt; gap between your two circles. Once you're done, keep the new circle selected and press &lt;strong&gt;Control-D&lt;/strong&gt; twice. This will add another two copies of the circle, as shown in the following images.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation4.jpg" alt="multiply circle" loading="lazy" width="870px" height="992px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation4.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation4.jpg" alt="multiply circle" loading="lazy" width="650px" height="740px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation4.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation4.jpg" alt="multiply circle" loading="lazy" width="380px" height="432px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation4.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="isdtj" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-vzwx-step-4"&gt;Step 4&lt;/h3&gt;
&lt;p&gt;As promised, select your second frame and remove the &lt;strong&gt;Fill&lt;/strong&gt; color.&lt;/p&gt;
&lt;p&gt;Select this frame along with your white circles and turn them into a compound path (&lt;strong&gt;Control-Alt-K&lt;/strong&gt;). As good practice, you can rename it "Loading Animation".&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation5.jpg" alt="turn frame into component" loading="lazy" width="870px" height="1013px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation5.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation5.jpg" alt="turn frame into component" loading="lazy" width="650px" height="756px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation5.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation5.jpg" alt="turn frame into component" loading="lazy" width="380px" height="441px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation5.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="i7yx9" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-0t5b-how-to-add-the-variants-of-the-lottie-loading-animation"&gt;
&lt;span class="sectionnum"&gt;3.&lt;/span&gt; How to add variants of the Lottie loading animation&lt;/h2&gt;
&lt;h3 id="toc-xid1-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Make sure that your main component is selected, and add four variants. To make things a bit less congested, increase the spacing between these variants to about &lt;strong&gt;50&lt;/strong&gt;. To quickly adjust the frame of your component set, just click the &lt;strong&gt;Resize to Fit&lt;/strong&gt; button (&lt;strong&gt;Control-Alt-Shift-R&lt;/strong&gt;).&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation6.jpg" alt="add component variants" loading="lazy" width="870px" height="1210px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation6.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation6.jpg" alt="add component variants" loading="lazy" width="650px" height="902px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation6.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation6.jpg" alt="add component variants" loading="lazy" width="380px" height="524px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation6.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="ivha8" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-obgf-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Now it's time to adjust the variants that will make your Lottie load animation. Pick the &lt;strong&gt;Move Tool (V)&lt;/strong&gt;, hold down the &lt;strong&gt;Control&lt;/strong&gt; key, and click the first circle from your second variant to select it.&lt;/p&gt;
&lt;p&gt;First, replace the white with &lt;code&gt;#F4BC00&lt;/code&gt;. Hover your cursor over the top edge of the circle until it turns into a double-sided arrow, and then click and drag to make it &lt;strong&gt;100 px &lt;/strong&gt;wide. Finally, move this yellow circle &lt;strong&gt;10 px&lt;/strong&gt; up. You can do it manually, or by setting the &lt;strong&gt;Y Position&lt;/strong&gt; to &lt;strong&gt;0&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation8.jpg" alt="adjust component variant" loading="lazy" width="870px" height="1168px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation8.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation8.jpg" alt="adjust component variant" loading="lazy" width="650px" height="871px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation8.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation8.jpg" alt="adjust component variant" loading="lazy" width="380px" height="506px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation8.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="ivg61" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-4ccq-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Move to the third variant and select the second circle. Make it &lt;strong&gt;100 px&lt;/strong&gt; wide, replace the white with &lt;code&gt;#E88900&lt;/code&gt;, and don't forget to move it &lt;strong&gt;10 px&lt;/strong&gt; up.&lt;/p&gt;
&lt;p&gt;Continue with the next variant and select the third circle. Again, make it &lt;strong&gt;100 px&lt;/strong&gt; wide, replace the white with &lt;code&gt;#F55A53&lt;/code&gt;, and don't forget to move it &lt;strong&gt;10 px&lt;/strong&gt; up.&lt;/p&gt;
&lt;p&gt;Finally, select the fourth circle from the last variant. Make it &lt;strong&gt;100 px&lt;/strong&gt; wide, replace the white with &lt;code&gt;#D5001C&lt;/code&gt;, and remember to move it &lt;strong&gt;10 px&lt;/strong&gt; up.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation9.jpg" alt="edit component variants" id="iy6fk" loading="lazy" width="870px" height="1142px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation9.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation9.jpg" alt="edit component variants" id="iy6fk" loading="lazy" width="650px" height="852px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation9.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation9.jpg" alt="edit component variants" id="iy6fk" loading="lazy" width="380px" height="495px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation9.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="i5f8w" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-j8a8-how-to-prototype-your-lottie-loading-animation"&gt;
&lt;span class="sectionnum"&gt;4.&lt;/span&gt; How to prototype your Lottie loading animation&lt;/h2&gt;
&lt;h3 id="toc-sj5s-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Now that your design is complete, it's time to prototype it. So switch from &lt;strong&gt;Design&lt;/strong&gt; mode to &lt;strong&gt;Prototype&lt;/strong&gt; mode.&lt;/p&gt;
&lt;p&gt;Start with the Default variant. Select it and simply drag a connection with the next variant. Don't bother to set up the &lt;strong&gt;Interaction&lt;/strong&gt; settings for now.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation10.jpg" alt="add interaction in prototype mode" loading="lazy" width="870px" height="520px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation10.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation10.jpg" alt="add interaction in prototype mode" loading="lazy" width="650px" height="391px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation10.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation10.jpg" alt="add interaction in prototype mode" loading="lazy" width="380px" height="232px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation10.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-r6ku-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Continue to add interactions between each consecutive pair of variants—second to third, third to fourth, fourth to fifth—and then from the fifth back to the default one.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation11.jpg" alt="add more interacations between component variants" loading="lazy" width="870px" height="1140px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation11.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation11.jpg" alt="add more interacations between component variants" loading="lazy" width="650px" height="850px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation11.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation11.jpg" alt="add more interacations between component variants" loading="lazy" width="380px" height="494px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation11.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="ix37o" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-ptki-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Select one of the interactions and press&lt;strong&gt; Control-A&lt;/strong&gt; to quickly select them all.&lt;/p&gt;
&lt;p&gt;Change the &lt;strong&gt;Trigger&lt;/strong&gt; to &lt;strong&gt;After delay&lt;/strong&gt; and lower the &lt;strong&gt;Delay&lt;/strong&gt; to &lt;strong&gt;1ms&lt;/strong&gt;. Choose &lt;strong&gt;Smart Animate&lt;/strong&gt; for the &lt;strong&gt;Animation&lt;/strong&gt; and &lt;strong&gt;Ease in and out&lt;/strong&gt; for the &lt;strong&gt;Curve&lt;/strong&gt;, and then lower the &lt;strong&gt;Duration&lt;/strong&gt; to about &lt;strong&gt;300ms&lt;/strong&gt;, but feel free to play with this value.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation12.jpg" alt="set up interaction settings" loading="lazy" width="870px" height="1139px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation12.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation12.jpg" alt="set up interaction settings" loading="lazy" width="650px" height="849px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation12.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation12.jpg" alt="set up interaction settings" loading="lazy" width="380px" height="494px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation12.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="ivuyu" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-xybg-how-to-create-the-lottie-loading-animation"&gt;
&lt;span class="sectionnum"&gt;5.&lt;/span&gt; How to create the Lottie loading animation&lt;/h2&gt;
&lt;h3 id="toc-gtia-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Go into your &lt;strong&gt;Assets&lt;/strong&gt; and search for the Loading Animation. Simply drag it inside your purple frame.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation13.jpg" alt="insert component" loading="lazy" width="870px" height="620px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation13.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation13.jpg" alt="insert component" loading="lazy" width="650px" height="465px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation13.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation13.jpg" alt="insert component" loading="lazy" width="380px" height="274px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation13.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="ip4ql" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-fui2-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Make sure that you're still in &lt;strong&gt;Prototype&lt;/strong&gt; mode and add a &lt;strong&gt;Flow&lt;/strong&gt; for your purple frame. You'll understand in a few moments how this &lt;strong&gt;Flow&lt;/strong&gt; helps us export the Lottie loading animation.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation14.jpg" alt="add a flow" loading="lazy" width="870px" height="620px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation14.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation14.jpg" alt="add a flow" loading="lazy" width="650px" height="465px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation14.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation14.jpg" alt="add a flow" loading="lazy" width="380px" height="274px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation14.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="ioceh" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-ahrv-how-to-preview-and-save-the-loading-animation-as-lottie"&gt;
&lt;span class="sectionnum"&gt;6.&lt;/span&gt; How to preview and save the loading animation as Lottie&lt;/h2&gt;
&lt;h3 id="toc-hwvr-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;In order to save your Figma animation as a Lottie loading animation, you will need the &lt;strong&gt;LottieFiles&lt;/strong&gt; plugin.&lt;/p&gt;
&lt;p&gt;Press &lt;strong&gt;Control - /&lt;/strong&gt; to open the &lt;strong&gt;Quick Actions&lt;/strong&gt; menu. Select the &lt;strong&gt;Plugins &amp;amp; widgets&lt;/strong&gt; section and search for the &lt;strong&gt;LottieFiles&lt;/strong&gt; plugin.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation15.jpg" alt="search for a plugin in Figma" loading="lazy" width="870px" height="662px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation15.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation15.jpg" alt="search for a plugin in Figma" loading="lazy" width="650px" height="496px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation15.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation15.jpg" alt="search for a plugin in Figma" loading="lazy" width="380px" height="292px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation15.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" class="content-block-wysi content-block"&gt;&lt;p&gt;Click the &lt;strong&gt;Run&lt;/strong&gt; button to add the &lt;strong&gt;LottieFiles&lt;/strong&gt; plugin to Figma. &lt;/p&gt;&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation16.jpg" alt="add LottieFiles plugin in Figma" loading="lazy" width="870px" height="970px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation16.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation16.jpg" alt="add LottieFiles plugin in Figma" loading="lazy" width="650px" height="724px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation16.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation16.jpg" alt="add LottieFiles plugin in Figma" loading="lazy" width="380px" height="422px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation16.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="icr5f" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-rvnh-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;First, you'll need to set up an account at &lt;a href="https://lottiefiles.com/" target="_self"&gt;LottieFiles&lt;/a&gt;. Once you're done, you can open the&lt;strong&gt; LottieFiles&lt;/strong&gt; plugin and select the preferred &lt;strong&gt;Flow&lt;/strong&gt; from the dropdown menu. In this case, there's only one, so you won't have much trouble finding it, but for a larger design, it's a good practice to name your flows.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation17.jpg" alt="select flow using LottieFiles plugin in Figma" loading="lazy" width="870px" height="940px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation17.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation17.jpg" alt="select flow using LottieFiles plugin in Figma" loading="lazy" width="650px" height="702px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation17.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation17.jpg" alt="select flow using LottieFiles plugin in Figma" loading="lazy" width="380px" height="410px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation17.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="iljhi" class="content-block-wysi content-block"&gt;
&lt;h3 id="toc-t698-step-4"&gt;Step 4&lt;/h3&gt;
&lt;p&gt;Once selected, you'll get a nice preview of your Lottie loader animation. Clicking the &lt;strong&gt;Save to&lt;/strong&gt; button will save the animation in your &lt;strong&gt;Projects&lt;/strong&gt; folder at lottiefiles.com.&lt;/p&gt;
&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation18.jpg" alt="preview lottie loading animation using LottieFiles plugin in Figma" loading="lazy" width="870px" height="940px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation18.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation18.jpg" alt="preview lottie loading animation using LottieFiles plugin in Figma" loading="lazy" width="650px" height="702px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation18.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation18.jpg" alt="preview lottie loading animation using LottieFiles plugin in Figma" loading="lazy" width="380px" height="410px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation18.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="i8j0c" class="content-block-wysi content-block"&gt;&lt;p&gt;Unless you're a millionaire who can afford countless subscriptions, be aware that there's a limit of 10 animations before you have to pay to save your Lottie animations. Don't make the same mistake that I made, and be sure that the animation you choose to save is the final version. And no, deleting a saved animation won't reset the limit. &lt;/p&gt;&lt;/div&gt;&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/158/posts/109191/image-upload/LoadingAnimation19.jpg" alt="Lottie Files subscription plan limitations" loading="lazy" width="870px" height="665px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/158/posts/109191/image-upload/LoadingAnimation19.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109191/image-upload/LoadingAnimation19.jpg" alt="Lottie Files subscription plan limitations" loading="lazy" width="650px" height="498px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109191/image-upload/LoadingAnimation19.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109191/image-upload/LoadingAnimation19.jpg" alt="Lottie Files subscription plan limitations" loading="lazy" width="380px" height="293px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109191/image-upload/LoadingAnimation19.jpg 2x"&gt;&lt;/figure&gt;&lt;div data-content-block-type="Wysi" id="iz6kf" class="content-block-wysi content-block"&gt;
&lt;h2 id="toc-t42k-congratulations-youre-done"&gt;Congrats! You're done!&lt;/h2&gt;
&lt;p&gt;Here is how your Lottie loading animation should look. I hope you've enjoyed this tutorial and can apply these techniques in your future projects.&lt;/p&gt;
&lt;p&gt;Feel free to adjust this final Lottie loader animation and make it your own. You can find some great sources of inspiration at &lt;a href="https://elements.envato.com/" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;Envato&lt;/a&gt;, with interesting solutions to create your loading animation for Lottie.&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/qEddwXN?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h2 id="toc-e81k-want-to-learn-more"&gt;Want to learn more?&lt;/h2&gt;
&lt;p&gt;We have loads of &lt;a href="https://design.tutsplus.com/c/graphic-design/s/animated-graphics" target="_blank" rel="noopener"&gt;animated graphic&lt;/a&gt; tutorials on Envato Tuts+, from beginner to intermediate level. Take a look!&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-text-animation-lottie--cms-109140"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a Lottie text animation&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Andrei Marius&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;07 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-an-animated-lottie-logo--cms-109175"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/preview_image/Roast_Bee_Animation_0_00_02_03_.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create an animated Lottie logo&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2824/profiles/21349/profileImage/pfp.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2824/profiles/21349/profileImage/pfp.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2824/profiles/21349/profileImage/pfp.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2824/profiles/21349/profileImage/pfp.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/profiles/21349/profileImage/pfp.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/profiles/21349/profileImage/pfp.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Drew MacDonald&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;12 May 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/everything-you-need-to-know-about-lottie-animations--cms-109142"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109142/preview_image/lottie_preview.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;Everything you need to know about Lottie animations&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Jonathan Lam&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;25 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-lottie-animation--cms-109162"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a Lottie animation&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Yulia Sokolova&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;18 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109191/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109191/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109191/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109191/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>Build your own Typographic Scale tool with JavaScript</title><link>https://webdesign.tutsplus.com/typographic-scale-tool--cms-109156t</link><author>noemail@noemail.org (Esther Vaati)</author><pubDate>Fri, 21 Mar 2025 07:15:44 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109156</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iful"&gt;
&lt;p&gt;The tool will have the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ability to select a font base size&lt;/li&gt;
&lt;li&gt;Ability to choose different fonts from commonly used Google Fonts&lt;/li&gt;
&lt;li&gt;Ability to adjust the font weight&lt;/li&gt;
&lt;li&gt;A live preview for visualizing the typography scaling&lt;/li&gt;
&lt;li&gt;Ability to generate and copy CSS variables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="toc-fw7t-what-exactly-are-we-building"&gt;So.. what exactly are we building?&lt;/h2&gt;
&lt;p&gt;Here’s a demo to show what we’re working towards:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/vEOOJEg?default-tab=result" width="850" height="700" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i738"&gt;
&lt;h2 id="toc-hii4-setting-up-the-html-structure"&gt;Setting up the HTML Structure&lt;/h2&gt;
&lt;p&gt;Let's start by setting up the structure in HTML.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;h1Typography&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;Generator&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;Tool&lt;/span&gt;&lt;span style="color: #151515;background-color: #ac4142"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #6a9fb5"&gt;h1&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Create a harmonious type scale for your website&lt;span style="color: #f4bf75"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"main"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"form-group"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"base-size"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Base Font Size (px)&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"number"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"base-size"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"16"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #6a9fb5"&gt;min=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"8"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #6a9fb5"&gt;max=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"32"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #6a9fb5"&gt;step=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"form-group"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"font-family"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Font Family&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;select&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"font-family"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;""&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;disabled&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;selected&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Select a font&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"form-group"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"font-weight"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Font Weight&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;select&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"font-weight"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"300"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Light&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"400"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;selected&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Regular&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"500"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Medium&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"600"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Semi-Bold&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"700"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Bold&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"form-group"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"scale-ratio"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Scale Ratio&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;select&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"scale-ratio"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.067"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Minor Second (1.067)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.125 "&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Major Second (1.125)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.2"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Minor Third (1.2)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.25 "&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;selected&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Major Third (1.25)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.333"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Perfect Fourth (1.333)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.414"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Augmented Fourth (1.414)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.5"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Perfect Fifth (1.5)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;            &lt;span style="color: #f4bf75"&gt;&amp;lt;option&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1.618"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Golden Ratio (1.618)&lt;span style="color: #f4bf75"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-46" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;46&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-47" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;47&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-48" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;48&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"css-output"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-49" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;49&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"text"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-50" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;50&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"css-output"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-51" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;51&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #6a9fb5"&gt;style=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"display: none"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-52" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;52&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-53" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;53&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-54" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;54&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-55" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;55&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"top"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-56" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;56&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Preview&lt;span style="color: #f4bf75"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-57" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;57&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          &lt;span style="color: #f4bf75"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"copy-css"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"copy-css"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Copy CSS&lt;span style="color: #f4bf75"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-58" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;58&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-59" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;59&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-60" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;60&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-61" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;61&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;From the HTML structure, you can see we have several select inputs for choosing options such as font family, font weight, and the scale ratio.&lt;/p&gt;
&lt;p&gt;We also have a preview container to display the generated type scale in real-time and a button for copying the generated CSS variables.&lt;/p&gt;
&lt;h2 id="toc-qezg-styling-the-tool"&gt;Styling with CSS&lt;/h2&gt;
&lt;p&gt;Our type scale tool consists of 2 sections: the upper section containing the controls, and the bottom section which has the preview container.&lt;/p&gt;
&lt;p&gt;Let's add some basic styling for the body, header, and container.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-family&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"inter"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#f8fafc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#1e293b&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;line-height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1.65&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1200px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;white&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;40px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;box-shadow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #90a959"&gt;2px&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;header&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-align&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #f4bf75"&gt;h1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;2rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;700&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;header&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;p&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;To ensure the inputs are responsive, add &lt;code&gt;flex:wrap&lt;/code&gt; to the controls section. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.controls&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-wrap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;wrap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;40px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;32px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e5e7eb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Next, style the input and select elements.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;input&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;select&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e5e7eb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;6px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.75rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-family&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"Inter"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#1e293b&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;input&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:focus&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;select&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:focus&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;outline&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#8a8a9081&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Apply the following styles to the preview container to ensure it's scrollable on small screens.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview-container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow-x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;white-space&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;nowrap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;white&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;6px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;box-shadow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #90a959"&gt;2px&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;From the final result, you can see we have labels in px and rem, as well as a paragraph for displaying each font level. All these elements will be contained within a div with the class &lt;code&gt;scale-item.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Style the item as follows:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.scale-item&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseline&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.scale-item&lt;/span&gt; &lt;span style="color: #f4bf75"&gt;p&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.scale-label&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;80px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.75rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#64748b&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-shrink&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, the &lt;strong&gt;Copy CSS&lt;/strong&gt; button will have the following styles.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.copy-css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;absolute&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;right&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e9ecef&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;6px&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;6px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.8rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.copy-css&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:hover&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#dcdcdc&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.css-output&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacity&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id="toc-dhni-generating-typescales-with-javascript"&gt;Generating Typographic Scales with JavaScript&lt;/h2&gt;
&lt;p&gt;We’ll start by getting the input and select elements. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;base-size&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontFamily&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;font-family&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontWeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;font-weight&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;scaleRatio&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-ratio&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We’ll also get the preview container and the &lt;strong&gt;Copy CSS&lt;/strong&gt; button:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;preview&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyCSS&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;copy-css&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Create an array of the most popular fonts and set them as options in the font family select input. Add the array as shown below.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;googleFonts&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Inter&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Roboto&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Open Sans&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Lato&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Montserrat&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Poppins&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Source Sans Pro&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Raleway&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Playfair Display&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Merriweather&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Ubuntu&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Nunito&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;DM Sans&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Work Sans&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Titillium Web&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Fira Sans&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Rubik&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Lora&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Barlow&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Hind&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Cabin&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;IBM Plex Sans&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Quicksand&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Karla&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;PT Sans&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Heebo&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Mulish&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Overpass&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Jost&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Manrope&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Spectral&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Space Grotesk&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;DM Mono&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Courier Prime&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Inconsolata&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Let's populate the font family select input with our fonts array.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;populateFonts&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;googleFonts&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;forEach&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;option&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;option&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;option&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;option&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontFamily&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;option&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;populateFonts&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here we are looping through the fonts array, creating an option elements for each font and setting its value and text content to the font name. Finally the option element is added to the font family select element.&lt;/p&gt;
&lt;p&gt;Set the first font in the array as the default on the input.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;applyFont&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;googleFonts&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;To ensure the correct font and all its weights are loaded directly from Google Fonts, create a function called &lt;code&gt;applyFont()&lt;/code&gt; and add the currently selected font as a stylesheet link in the page header. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;applyFont&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;existingLink&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;querySelector&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;link[href*='fonts.googleapis.com']&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;if &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;existingLink&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;existingLink&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remove&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;link&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;link&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;link&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;href&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`https://fonts.googleapis.com/css2?family=&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;:wght@100;200;300;400;500;600;700;800;900&amp;amp;display=swap`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;link&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;rel&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;stylesheet&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;head&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;link&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-nkrx-levels-in-typescale"&gt;Levels in typographic scales&lt;/h3&gt;
&lt;p&gt;In typographic scale systems, levels are used to define the different steps or sizes within the scale. Each level corresponds to a specific role in web design.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;Higher levels are used for headings, for example, &lt;code&gt;h1&lt;/code&gt; and &lt;code&gt;h2&lt;/code&gt; and so on&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;The base level is mostly used for the body&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;Lower levels are mostly used for captions, foot notes, etc. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each higher level is calculated by multiplying the base size by the scale ratio.&lt;/p&gt;
&lt;p&gt;A scale ratio determines how each level increases relative to the base. Common scale ratios include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;1.25 (Minor Third)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;1.33 (Perfect Fourth)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;1.414 (Augmented Fourth)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;1.5 (Perfect Fifth)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;1.618 (Golden Ratio)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, suppose you want to use a scale ratio of 1.25 and  your base font is 16px:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Level 1 will be 16px * 1.25 = 20px&lt;/li&gt;
&lt;li&gt;Level 2 will be 20px * 1.25  =  25px and so on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For levels below the base, we use negative level numbers (i.e. Level -1,  Level -2, etc.  ) .These are calculated by dividing the base size by the scale ratio.&lt;/p&gt;
&lt;p&gt;For example, keeping your base size at 16px, if you want 2 levels below the base, it will look like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Level-1 = 16px / 1.25 = 12.8px&lt;/li&gt;
&lt;li&gt;Level-2 = 12.8 /1.25 = 10.24px&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-omug-the-levels-array"&gt;The levels array&lt;/h3&gt;
&lt;p&gt;Now that we have understood how to use levels and scale ratios to generate fonts, let's define our levels array.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;FONT_SIZES&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;h1&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;h2&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;h3&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;3&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;h4&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;h5&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;body&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;small&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;},&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;];&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Create a function called &lt;code&gt;calculateSize()&lt;/code&gt; which will calculate the font size based on the base size, the selected scale ratio, and the expected level.&lt;/p&gt;
&lt;p&gt;Here is the formula:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table plaintext"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;size = baseSize * (scaleRatio ^ level)
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;where :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;baseSize&lt;/code&gt; is the starting font size&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scaleRatio&lt;/code&gt; is the multiplier scale&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;level&lt;/code&gt; &lt;span&gt;represents&lt;/span&gt; the step in the scale&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The function will look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;calculateSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFloat&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;scaleRatio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;toFixed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Then, create another function which will return font sizes in rems :&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;calculateSizeInRem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #aa759f"&gt;return &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;calculateSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;/&lt;/span&gt; &lt;span style="color: #90a959"&gt;16&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;toFixed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;rem&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now we need to update the preview section with sample text showing how each level looks. &lt;/p&gt;
&lt;h3 id="toc-hd9r-updating-the-preview-pane"&gt;Updating the Preview pane&lt;/h3&gt;
&lt;p&gt;For each sample text, we will do the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;Display the font size both in px and rem&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-align:-webkit-match-parent"&gt;Show a sample text that uses the currently selected size, font family, and font weight.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is the function that does that.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerHTML&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFloat&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontFamily&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;weight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontWeight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;FONT_SIZES&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;forEach&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(({&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;})&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;size&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;calculateSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;remSize&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;calculateSizeInRem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;classList&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;add&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-item&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;classList&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;add&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-label&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;classList&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;add&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-label&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;p&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSize&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontFamily&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;, sans-serif&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontWeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;1.15&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;1.65&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Every project has its own distinct requirements. &lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Let's break down the code.&lt;/p&gt;
&lt;p&gt;First, we clear the preview container to ensure the previous sample text is removed before a new sample is rendered.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;innerHTML&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;""&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;Next, we get the values from the inputs.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;code&gt;baseSize.value&lt;/code&gt; - The current base font size in pixels&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;code&gt;fontFamily.value&lt;/code&gt; - The selected font family from the dropdown.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;code&gt;fontWeight.value&lt;/code&gt; -  The chosen font-weight &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then we loop over the &lt;code&gt;FONT_SIZES&lt;/code&gt; array and iterate over each typography item. For each item,  calculate the font size based on the selected &lt;code&gt;scaleRatio&lt;/code&gt; and current &lt;code&gt;baseSize&lt;/code&gt;.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;FONT_SIZES&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;forEach&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(({&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;name&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;})&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt; &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Then we create preview elements for each size. Each item will have :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A container for the scale item&lt;/li&gt;
&lt;li&gt;2 labels showing  the size in px and rem&lt;/li&gt;
&lt;li&gt;A paragraph to display the sample text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here, we applied the predefined styles to the elements.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;classList&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;add&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-item&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;div&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;classList&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;add&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-label&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;classList&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;add&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;scale-label&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;createElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;p&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here we applied the generated text sizes to the preview.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSize&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontFamily&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;, sans-serif&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontWeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;lineHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;?&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;1.15&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;1.65&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Every project has its own distinct requirements.&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, we append &lt;code&gt;remLabel&lt;/code&gt;, &lt;code&gt;pxLabel&lt;/code&gt;, and the preview text to each scale item container and add it to the preview section.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;remLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pxLabel&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;text&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;preview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;appendChild&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;item&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Invoke the &lt;code&gt;updatePreview()&lt;/code&gt; function so the changes are effected .&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Whenever you change any value such as the base, scale ratio, or weight, these changes should be updated in real-time. This is done by adding event listeners to each input so that any change automatically triggers the &lt;code&gt;updatePreview()&lt;/code&gt; function &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontFamily&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;change&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;scaleRatio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;change&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontWeight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;figure class="post_image"&gt;&lt;/figure&gt;
&lt;h3 id="toc-e5p2-generate-and-copy-css"&gt;Generate CSS Variables&lt;/h3&gt;
&lt;p&gt;The last feature is the ability to automatically generate CSS variables for the calculated font sizes. This makes it easy to copy and use them in your projects.&lt;/p&gt;
&lt;p&gt;The final format of the CSS variables will look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;:root&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt; 
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;   &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-h1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;48.83px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-h2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;39.06px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-h3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;31.25px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-h4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;25px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-h5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-body&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;--font-size-small&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;12.8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;To achieve this format, we will build a css string that begins with the opening of a &lt;code&gt;:root&lt;/code&gt; block. The &lt;code&gt;:root&lt;/code&gt; is a pseudo-class selector commonly used to define global CSS variables that can be used throughout the entire stylesheet.&lt;/p&gt;
&lt;p&gt;Let's build the string:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;let&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`:root { \n\n `&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Get the current values for the base size and scale ratios from the inputs.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFloat&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;baseSize&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;||&lt;/span&gt; &lt;span style="color: #90a959"&gt;16&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFloat&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;scaleRatio&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Create a helper function called &lt;code&gt;poweredBy()&lt;/code&gt;  which will calculate the font sizes. .&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;scale&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseFloat&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;*&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;Math&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;pow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;scale&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;level&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;toFixed&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;));&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Create an object called fontSizes for holding the sizes for different levels&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;h1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;h2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;h3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;h4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;h5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;body&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #6a9fb5"&gt;small&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;poweredBy&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;base&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;SCALE_RATIO&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;-&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;};&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now, add each calculated value as a CSS variable to the css string and close the :root block.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-heading1: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;h1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-heading2: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;h2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-heading3: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;h3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-heading4: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;h4&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-heading5: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;h5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-body: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;body&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`  --font-size-small: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;fontSizes&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;small&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px;\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`}\n\n`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Finally, add the generated CSS string to the css output element to ensure it's available for easy copying to the clipboard.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;css-output&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-5ait-copy-generated-css"&gt;Copy Generated CSS&lt;/h3&gt;
&lt;p&gt;Copying text to a clipboard on a web page is done using the &lt;code&gt;navigator.clipboard.writeText() &lt;/code&gt;method which will look like this:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyToClipboard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssText&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateCSS&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;navigator&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;clipboard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;writeText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;).&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;then&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alert&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;CSS copied to clipboard!&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We also need to ensure the &lt;code&gt;copyCSS()&lt;/code&gt; function is attached to the click event of the copy CSS button. Additionally, it's important to ensure the default CSS values are generated after the DOM is fully loaded.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyCSS&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;click&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyToClipboard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;DOMContentLoaded&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;generateCSS&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here is the final demo:&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/vEOOJEg?default-tab=result" width="850" height="700" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h2 id="toc-efhh-conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's a wrap for the typograhic scale generator! You can build on this by customizing it further--for example, instead of using a paragraph for the preview, you can add a card or have a hero section that changes based on the generated typescale values.&lt;/p&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109156/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109156/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109156/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109156/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to use Lottie animations</title><link>https://design.tutsplus.com/articles/how-to-use-lottie-animations--cms-109157</link><author>noemail@noemail.org (Jonathan Lam)</author><pubDate>Mon, 7 Apr 2025 10:10:03 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109157</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ix3n"&gt;
&lt;p&gt;I love it when an interface feels alive! Like when a playful hover effect reacts or fun little icon animation in apps. That’s where Lottie animations come in. They let you add smooth, scalable motion to websites, apps, videos, and more, without being limited by the larger file sizes of GIFs or videos.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_12.jpg" alt="lottie animation factory" loading="lazy" width="870px" height="530px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_12.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_12.jpg" alt="lottie animation factory" loading="lazy" width="650px" height="398px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_12.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_12.jpg" alt="lottie animation factory" loading="lazy" width="380px" height="236px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_12.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;In this guide, I’ll walk you through &lt;a href="https://design.tutsplus.com/articles/everything-you-need-to-know-about-lottie-animations--cms-109142" target="_blank" rel="noopener"&gt;how to use Lottie animations&lt;/a&gt; like a pro, even if you’re starting from scratch. We’ll cover where they work best, how to integrate them smoothly, and tips for keeping animations subtle and effective. By the end, you’ll know exactly how to make your projects feel more dynamic and polished with zero extra bloat.&lt;/p&gt;
&lt;h2 id="toc-ha4b-what-youll-learn-in-this-article"&gt;What you'll learn in this article&lt;/h2&gt;
&lt;p&gt;You can add &lt;a href="https://design.tutsplus.com/c/graphic-design/s/animated-graphics" target="_blank" rel="noopener"&gt;Lottie animations&lt;/a&gt; to all sorts of things, like a website, mobile app, or video project, but it really matters where and how they are applied. Topics we cover will include:&lt;/p&gt;
&lt;div id="toc-jss1-1-where-lottie-animations-work-best-websites-apps-ui-prototypes-videos-etc-you-name-it-lottie-can-add-motion-without-the-worrying-about-file-size2-how-to-integrate-them-smoothly-the-smartest-ways-to-add-lottie-animations-to-your-projects-without-slowing-things-down3-tips-for-using-animations-effectively-subtle-motion-enhances-design-but-too-much-can-make-your-project-look-messy4-where-to-find-free-lottie-animations-there-are-plenty-of-great-resources-for-high-quality-ready-to-use-animations-well-show-you-the-best-ones" class="flex max-w-full flex-col flex-grow"&gt;
&lt;div id="toc-3am8-1-where-lottie-animations-work-best-websites-apps-ui-prototypes-videos-etc-you-name-it-lottie-can-add-motion-without-the-worrying-about-file-size2-how-to-integrate-them-smoothly-the-smartest-ways-to-add-lottie-animations-to-your-projects-without-slowing-things-down3-tips-for-using-animations-effectively-subtle-motion-enhances-design-but-too-much-can-make-your-project-look-messy4-where-to-find-free-lottie-animations-there-are-plenty-of-great-resources-for-high-quality-ready-to-use-animations-well-show-you-the-best-ones" class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 whitespace-normal break-words text-start [.text-message+&amp;amp;]:mt-5"&gt;
&lt;div id="toc-0au9-1-where-lottie-animations-work-best-websites-apps-ui-prototypes-videos-etc-you-name-it-lottie-can-add-motion-without-the-worrying-about-file-size2-how-to-integrate-them-smoothly-the-smartest-ways-to-add-lottie-animations-to-your-projects-without-slowing-things-down3-tips-for-using-animations-effectively-subtle-motion-enhances-design-but-too-much-can-make-your-project-look-messy4-where-to-find-free-lottie-animations-there-are-plenty-of-great-resources-for-high-quality-ready-to-use-animations-well-show-you-the-best-ones" class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]"&gt;
&lt;div id="toc-9byp-1-where-lottie-animations-work-best-websites-apps-ui-prototypes-videos-etc-you-name-it-lottie-can-add-motion-without-the-worrying-about-file-size2-how-to-integrate-them-smoothly-the-smartest-ways-to-add-lottie-animations-to-your-projects-without-slowing-things-down3-tips-for-using-animations-effectively-subtle-motion-enhances-design-but-too-much-can-make-your-project-look-messy4-where-to-find-free-lottie-animations-there-are-plenty-of-great-resources-for-high-quality-ready-to-use-animations-well-show-you-the-best-ones" class="markdown prose w-full break-words dark:prose-invert dark"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is a Lottie animation file? &lt;/strong&gt;Learn the ins and outs of what Lottie is and what makes it tick.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where Lottie animations work best:&lt;/strong&gt; &lt;a href="https://webdesign.tutsplus.com/coming-soon-page-with-lottie-animations--cms-36914t" target="_blank" rel="noopener"&gt;Websites&lt;/a&gt;, apps, UI prototypes, videos, etc. You name it, Lottie can add motion without worrying about file size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to integrate them smoothly:&lt;/strong&gt; The smartest ways to add Lottie animations to your projects without slowing things down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tips for using animations effectively:&lt;/strong&gt; Subtle motion enhances design, but too much can make your project look messy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where to find free Lottiefiles animations:&lt;/strong&gt; There are plenty of great resources for high-quality, ready-to-use animations. &lt;/li&gt;
&lt;li&gt;We'll show you the best &lt;a href="https://photography.tutsplus.com/articles/top-lottie-animation-templates-after-effects--cms-38508" target="_blank" rel="noopener"&gt;Lottie animations and templates&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Fan of video tutorials? Then check out this video from the &lt;/span&gt;&lt;a href="https://www.youtube.com/@envatotuts" target="_blank" rel="noopener"&gt;Envato Tuts+ YouTube channel&lt;/a&gt; &lt;span&gt;to follow along:&lt;/span&gt;&lt;/p&gt;
&lt;figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=Nesm2FTWo9s&amp;amp;t=0"&gt;
            &lt;iframe src="https://www.youtube.com/embed/Nesm2FTWo9s?rel=0&amp;amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"&gt;&lt;/iframe&gt;
          &lt;/figure&gt;
&lt;h2 id="toc-hea2-what-are-lotties"&gt;
&lt;span class="sectionnum"&gt;1.&lt;/span&gt; What is a Lottie animation file?&lt;/h2&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/Lottie_vs_Gif.gif" alt="what is a lottie file" loading="lazy" width="870px" height="395px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/Lottie_vs_Gif.gif 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/Lottie_vs_Gif.gif" alt="what is a lottie file" loading="lazy" width="650px" height="298px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/Lottie_vs_Gif.gif 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/Lottie_vs_Gif.gif" alt="what is a lottie file" loading="lazy" width="380px" height="179px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/Lottie_vs_Gif.gif 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lotties are super lightweight, high-quality animations that work&lt;em&gt; &lt;/em&gt;everywhere (websites, apps, etc.) without killing load times or pixelating when resized. They're kind of like GIFs, but better. So what is a Lottie animation exactly?&lt;/p&gt;
&lt;div class="callout-block"&gt;
&lt;span class="callout-icon callout-do"&gt;&lt;/span&gt;
&lt;div class="callout-message"&gt;They are vector-based and use JSON (which basically means code-based), making them scalable, interactive, and ridiculously efficient. So unlike GIFs and SVG animations, they don't sacrifice quality for performance. &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="toc-ha4b-what-youll-learn-in-this-article"&gt;
&lt;span class="sectionnum"&gt;2. &lt;/span&gt;Why use Lottie animations?&lt;/h2&gt;
&lt;h3 id="toc-i4o1-lightweight-and-fast"&gt;Lightweight and fast&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_07.jpg" alt="lightweight JSON file" loading="lazy" width="870px" height="377px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_07.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_07.jpg" alt="lightweight JSON file" loading="lazy" width="650px" height="285px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_07.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_07.jpg" alt="lightweight JSON file" loading="lazy" width="380px" height="171px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_07.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://webdesign.tutsplus.com/tutorials/how-to-create-a-lottie-animation--cms-109162" target="_blank" rel="noopener"&gt;Lottie animations&lt;/a&gt; are vector-based and stored as JSON files, making them much smaller than GIFs or video files. This means they load almost instantly, keeping your websites and apps running smoothly, without slowing things down.&lt;/p&gt;
&lt;h3 id="toc-k2ti-scalable-without-losing-quality"&gt;Scalable without losing quality&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_06.jpg" alt="scalable lottie files" loading="lazy" width="870px" height="377px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_06.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_06.jpg" alt="scalable lottie files" loading="lazy" width="650px" height="285px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_06.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_06.jpg" alt="scalable lottie files" loading="lazy" width="380px" height="171px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_06.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Because Lottie uses vectors, animations stay crisp at any size. For example, if you’re using them for a tiny UI icon or a full-screen animation, you'll get no pixelation, no quality loss—just smooth motion.&lt;/p&gt;
&lt;h3 id="toc-lhpv-works-across-multiple-platforms"&gt;Works across multiple platforms&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_08.jpg" alt="works across multiple platform " loading="lazy" width="870px" height="306px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_08.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_08.jpg" alt="works across multiple platform " loading="lazy" width="650px" height="232px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_08.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_08.jpg" alt="works across multiple platform " loading="lazy" width="380px" height="141px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_08.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;You can find them everywhere nowadays! Creatives are using Lottie animations in mobile apps, UI design tools, video editing software, and even social media content.&lt;/p&gt;
&lt;h3 id="toc-3dr5-supports-interactivity"&gt;Supports interactivity&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_09.jpg" alt="supports interactivity" loading="lazy" width="870px" height="306px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_09.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_09.jpg" alt="supports interactivity" loading="lazy" width="650px" height="232px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_09.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_09.jpg" alt="supports interactivity" loading="lazy" width="380px" height="141px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_09.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lottie animations can react to the actions of the user, such as scrolling, clicking, or hovering. Unlike videos or GIFs, they enhance UI elements and make them feel more alive and engaging.&lt;/p&gt;
&lt;h2 id="toc-o7gr-where-and-how-to-use-lottie-animations"&gt;
&lt;span class="sectionnum"&gt;3.&lt;/span&gt; Where and how to use Lottie animations&lt;/h2&gt;
&lt;h3 id="toc-iodi-websites-web-apps"&gt;1. Websites &amp;amp; web apps&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/lottie_07.jpg" alt="using lottie files in websites and web apps" loading="lazy" width="870px" height="455px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/lottie_07.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/lottie_07.jpg" alt="using lottie files in websites and web apps" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/lottie_07.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/lottie_07.jpg" alt="using lottie files in websites and web apps" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/lottie_07.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;A well-placed animation can make a website feel polished and dynamic, but too much movement can be distracting. Lottie animations (for a &lt;a href="https://webdesign.tutsplus.com/coming-soon-page-with-lottie-animations--cms-36914t" target="_blank" rel="noopener"&gt;'coming soon' website&lt;/a&gt;, for example) are perfect for adding subtle motion without affecting performance.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://elements.envato.com/learn/microinteractions-ux" target="_self" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;Micro-interactions&lt;/a&gt;:&lt;/strong&gt; Animated buttons, hover effects, loading spinners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hero animations: &lt;/strong&gt;Eye-catching visuals for landing pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scroll-based effects: &lt;/strong&gt;Animations that appear as users scroll.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data visualization:&lt;/strong&gt; Animated charts or infographics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-vmz8-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep it subtle:&lt;/strong&gt; A smooth hover effect is great, but too much animation can feel overwhelming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize for performance:&lt;/strong&gt; Use Lottie’s lightweight format, but test it across devices to ensure smooth playback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it interactive:&lt;/strong&gt; Use JavaScript to trigger animations based on user actions like clicks or scrolling.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-e0i3-mobile-apps-ios-android"&gt;2. Mobile apps (iOS &amp;amp; Android)&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/lottie_08.jpg" alt="using lottie animations in mobile apps" loading="lazy" width="870px" height="455px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/lottie_08.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/lottie_08.jpg" alt="using lottie animations in mobile apps" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/lottie_08.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/lottie_08.jpg" alt="using lottie animations in mobile apps" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/lottie_08.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Animations in mobile apps can make interactions feel smoother and more intuitive. Lottie lets you add motion without the performance issues of GIFs or video files, making it a favorite among app designers and developers.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding animations:&lt;/strong&gt; Animated tutorials or welcome screens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loading indicators:&lt;/strong&gt; A fun alternative to the classic spinning wheel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Success/error states:&lt;/strong&gt; Animated checkmarks or warnings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI feedback:&lt;/strong&gt; Smooth transitions between screens.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep animations short:&lt;/strong&gt; Quick, engaging animations make an app feel responsive, but long animations can slow things down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Lottie’s mobile SDKs:&lt;/strong&gt; Implement animations natively in iOS (Swift) and Android (Kotlin/Java) without impacting performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trigger animations based on user input:&lt;/strong&gt; Make animations part of the experience, not just decoration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-cviy-social-media-digital-marketing"&gt;3. Social media &amp;amp; digital marketing&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_01.jpg" alt="using lottie files for social media" loading="lazy" width="870px" height="571px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_01.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_01.jpg" alt="using lottie files for social media" loading="lazy" width="650px" height="428px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_01.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_01.jpg" alt="using lottie files for social media" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_01.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Social media moves fast, and animations can help grab attention in an endless scroll of static images. Lottie makes it easy to create lightweight, high-quality motion graphics for marketing and social media content.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Animated Instagram Stories &amp;amp; Reels:&lt;/strong&gt; Motion graphics that stand out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive banner ads:&lt;/strong&gt; Engaging HTML5 animations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GIF-style animations:&lt;/strong&gt; Shareable motion graphics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use tools like LottieFiles:&lt;/strong&gt; Easily add Lottie animations to social media posts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convert Lottie files to GIF or MP4:&lt;/strong&gt; Make animations easy to share on any platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep it mobile-friendly:&lt;/strong&gt; Social animations should be fast, lightweight, and loop seamlessly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-9tfh-video-editing-motion-graphics"&gt;4. Video editing &amp;amp; motion graphics&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_02.jpg" alt="video editing with lottie files" loading="lazy" width="870px" height="515px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_02.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_02.jpg" alt="video editing with lottie files" loading="lazy" width="650px" height="387px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_02.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_02.jpg" alt="video editing with lottie files" loading="lazy" width="380px" height="230px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_02.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;If you create videos, you probably know how heavy animation files can get. Lottie offers a lightweight solution for adding motion graphics to video projects without unnecessary bloat.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://photography.tutsplus.com/articles/top-lottie-animation-templates-after-effects--cms-38508" target="_blank" rel="noopener"&gt;Animated lower thirds&lt;/a&gt;:&lt;/strong&gt; Titles and captions for videos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logo animations:&lt;/strong&gt; Clean, lightweight motion graphics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engaging call to action:&lt;/strong&gt; Eye-catching prompts for likes, shares, and subscriptions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use Lottie in &lt;a href="https://photography.tutsplus.com/video/compatible-with/adobe-after-effects" target="_blank" rel="noopener"&gt;After Effects&lt;/a&gt; or &lt;a href="https://photography.tutsplus.com/video/compatible-with/adobe-premiere-pro" target="_blank" rel="noopener"&gt;Premiere Pro&lt;/a&gt;:&lt;/strong&gt; Integrate animations directly into motion graphics projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overlay Lottie animations on footage:&lt;/strong&gt; Add seamless motion graphics without rendering heavy effects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize for different platforms:&lt;/strong&gt; Keep animations simple for fast-loading social media clips.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-3gdh-uiux-prototypes"&gt;5. UI/UX design animation prototypes&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_03.jpg" alt="creating ui/ux prototypes with lottie files" loading="lazy" width="870px" height="515px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_03.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_03.jpg" alt="creating ui/ux prototypes with lottie files" loading="lazy" width="650px" height="387px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_03.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_03.jpg" alt="creating ui/ux prototypes with lottie files" loading="lazy" width="380px" height="230px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_03.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;UX design animation prototypes are all about bringing ideas to life, and Lotties helps designers create realistic interactions without coding. Whether you’re testing a hover effect or demonstrating a page transition, Lottie animations make your prototypes feel more polished.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Animated UI elements:&lt;/strong&gt; Buttons, icons, and menus that react to touch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transitions:&lt;/strong&gt; Simulating movement between app screens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micro-interactions:&lt;/strong&gt; Testing hover and click effects in prototypes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use Lottie in design tools:&lt;/strong&gt; Drag and drop animations into &lt;strong&gt;&lt;a href="https://webdesign.tutsplus.com/compatible-with/figma" target="_blank" rel="noopener"&gt;Figma&lt;/a&gt; or &lt;a href="https://webdesign.tutsplus.com/compatible-with/sketch" target="_blank" rel="noopener"&gt;Sketch&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test user reactions:&lt;/strong&gt; Use animations to guide user flows and improve usability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep it consistent:&lt;/strong&gt; Make sure animations match the brand’s motion style.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-1ldh-games"&gt;6. Games&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/lottie_09.jpg" alt="using lotties in video games" loading="lazy" width="870px" height="455px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/lottie_09.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/lottie_09.jpg" alt="using lotties in video games" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/lottie_09.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/lottie_09.jpg" alt="using lotties in video games" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/lottie_09.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lottie animations can also be used in game UI design, adding smooth, scalable animations without impacting performance. They work well for HUDs (heads-up displays), menus, and interactive elements.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HUD animations:&lt;/strong&gt; Animated health bars, experience points, and in-game notifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reward animations:&lt;/strong&gt; Confetti bursts, achievement unlocks, or in-game currency animations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI transitions:&lt;/strong&gt; Smooth effects for menus, popups, and loading screens.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integrate with game engines:&lt;/strong&gt; Lotties can be implemented in some game engines (like Unity) using third-party plugins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize for performance:&lt;/strong&gt; Test animations across different platforms to ensure smooth playback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhance UX without distraction:&lt;/strong&gt; Keep animations smooth and subtle so they don’t interrupt gameplay.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-ch5z-presentations-pitch-decks"&gt;7. Presentations &amp;amp; pitch decks&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_04.jpg" alt="presentations and pitch decks using lottie files" loading="lazy" width="870px" height="515px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_04.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_04.jpg" alt="presentations and pitch decks using lottie files" loading="lazy" width="650px" height="387px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_04.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_04.jpg" alt="presentations and pitch decks using lottie files" loading="lazy" width="380px" height="230px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_04.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lottie animations can make slides more engaging, helping you tell a story visually without overwhelming your audience. Unlike GIFs or video files, Lottie animations keep file sizes small, making presentations smoother and easier to share.&lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data visualizations:&lt;/strong&gt; Animated charts, graphs, and infographics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emphasizing key points:&lt;/strong&gt; Animated icons or highlights that reinforce important concepts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animated slide transitions:&lt;/strong&gt; Subtle movements between slides for a more dynamic feel.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use animations to guide focus, not distract:&lt;/strong&gt; Keep movements minimal and purposeful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep it professional:&lt;/strong&gt; Avoid excessive movement that could look gimmicky in a formal setting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-kzxb-e-learning-platforms-educational-apps"&gt;8. E-learning platforms &amp;amp; educational apps&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_00.jpg" alt="using lottie files with educational apps like Duolingo" loading="lazy" width="870px" height="626px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_00.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_00.jpg" alt="using lottie files with educational apps like Duolingo" loading="lazy" width="650px" height="469px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_00.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_00.jpg" alt="using lottie files with educational apps like Duolingo" loading="lazy" width="380px" height="277px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_00.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lottie animations make online learning more engaging by adding dynamic visuals and characters to explain concepts, provide feedback, and guide users through lessons. You'll see some great Lottie animation examples in apps such as Duolingo. &lt;/p&gt;
&lt;h4 id="toc-pxxo-best-use-cases"&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concept explanations:&lt;/strong&gt; Animated diagrams and step-by-step guides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Course progress indicators:&lt;/strong&gt; Engaging visuals that show completion status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive quizzes:&lt;/strong&gt; Animated feedback for correct or incorrect answers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="toc-c9mc-how-to-use-them-effectively"&gt;How to use them effectively&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use animations to clarify, not complicate:&lt;/strong&gt; Keep educational visuals simple and easy to follow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize for mobile learning:&lt;/strong&gt; Ensure smooth playback on mobile devices and tablets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="toc-36ix-best-practices-for-using-lottie-animations-effectively"&gt;
&lt;span class="sectionnum"&gt;4.&lt;/span&gt; Best practices for using Lottie animations effectively&lt;/h2&gt;
&lt;h3 id="toc-ife6-keep-it-subtle"&gt;Keep it subtle and purposeful&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_17.jpg" alt="subtle and purposeful lottie files" loading="lazy" width="870px" height="522px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_17.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_17.jpg" alt="subtle and purposeful lottie files" loading="lazy" width="650px" height="392px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_17.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_17.jpg" alt="subtle and purposeful lottie files" loading="lazy" width="380px" height="233px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_17.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Not every button needs to bounce, and not every page transition needs a dramatic fade. A good animation should complement and not overshadow the actual user experience. Good Lottie animation examples can include loading animations that let users know the system is processing, or an animated success checkmark that confirms their action. If the animation doesn't add value to the experience, it's better left out.&lt;/p&gt;
&lt;h3 id="toc-eaif-optimize-for-performance"&gt;Optimize for performance&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/lottie_05.jpg" alt="lightweight lotties" loading="lazy" width="870px" height="410px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/lottie_05.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/lottie_05.jpg" alt="lightweight lotties" loading="lazy" width="650px" height="309px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/lottie_05.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/lottie_05.jpg" alt="lightweight lotties" loading="lazy" width="380px" height="185px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/lottie_05.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lottie animations are lightweight, but poor implementation can still cause slow load times or choppy playback. To counter this, try to compress and optimize your Lottie files by reducing unnecessary keyframes. And always test&lt;strong&gt; &lt;/strong&gt;your animations on different devices and screen sizes to make sure they run smoothly. &lt;/p&gt;
&lt;h3 id="toc-xuxz-maintain-a-consistent-motion-style"&gt;Maintain a consistent motion style&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_18.jpg" alt="duolingo animations" loading="lazy" width="870px" height="522px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_18.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_18.jpg" alt="duolingo animations" loading="lazy" width="650px" height="392px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_18.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_18.jpg" alt="duolingo animations" loading="lazy" width="380px" height="233px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_18.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Animations should feel like a natural part of your brand, not an afterthought. Good Lottie animation examples for a site with a smooth, minimalist UI should have subtle, elegant motion, while a playful brand might use bouncier, more energetic animations.&lt;/p&gt;
&lt;h3 id="toc-57hw-test-animations-in-context"&gt;Test animations in context&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/lottie_20.jpg" alt="test lottie animations" loading="lazy" width="870px" height="510px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/lottie_20.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/lottie_20.jpg" alt="test lottie animations" loading="lazy" width="650px" height="383px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/lottie_20.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/lottie_20.jpg" alt="test lottie animations" loading="lazy" width="380px" height="228px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/lottie_20.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Testing out how the animations feel in the context is essential when dealing with Lotties. Just because an animation looks good on its own doesn't mean it will work seamlessly within a web page or app. Test how it goes along with other items on the page, ensuring that it doesn't draw too much attention from the key content.&lt;/p&gt;
&lt;h3 id="toc-k4g7-keep-file-management-organized"&gt;Keep file management organized&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_20.jpg" alt="organise lottie files" loading="lazy" width="870px" height="522px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_20.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_20.jpg" alt="organise lottie files" loading="lazy" width="650px" height="392px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_20.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_20.jpg" alt="organise lottie files" loading="lazy" width="380px" height="233px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_20.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;If you’re using multiple Lottie animations in a project, staying organized is key. You should name your files correctly (no one wants to dig through a folder full of “animation_final_v3.json.”). If you're working in a team, use version control or cloud storage to prevent lost files and ensure everyone is working with the latest version.&lt;/p&gt;
&lt;h2 id="toc-h2tk-where-to-find-lottie-animations"&gt;
&lt;span class="sectionnum"&gt;5.&lt;/span&gt; Where to find Lottie animations&lt;/h2&gt;
&lt;h3&gt;
&lt;a href="https://elements.envato.com/video-templates/lottie" target="_blank" rel="noopener" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;Envato&lt;/a&gt; (Unlimited downloads for a subscription fee)&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;a href="https://elements.envato.com/" target="_blank" rel="noopener" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_13.jpg" alt="envato elements" loading="lazy" width="870px" height="498px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_13.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_13.jpg" alt="envato elements" loading="lazy" width="650px" height="374px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_13.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_13.jpg" alt="envato elements" loading="lazy" width="380px" height="222px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_13.jpg 2x"&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;You can get the best, high-quality, professionally designed animations right here using &lt;a href="https://elements.envato.com/video-templates/lottie" target="_blank" rel="noopener" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;Envato&lt;/a&gt;. There are &lt;a href="https://photography.tutsplus.com/articles/top-lottie-animation-templates-after-effects--cms-38508" target="_blank" rel="noopener"&gt;premium Lottie animations&lt;/a&gt; which are perfect for commercial projects, UI/UX designs animations, and motion graphics. And the best part? Unlimited downloads for a single subscription!&lt;/p&gt;
&lt;h3 id="toc-co8w-lottiefiles-the-best-all-in-one-platform"&gt;
&lt;a href="https://lottiefiles.com/featured-free-animations" target="_blank" rel="noopener"&gt;LottieFiles&lt;/a&gt; (The best all-in-one platform)&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;a href="https://lottiefiles.com/featured-free-animations" target="_blank" rel="noopener"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_14.jpg" alt="Lottiefiles" loading="lazy" width="870px" height="438px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_14.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_14.jpg" alt="Lottiefiles" loading="lazy" width="650px" height="330px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_14.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_14.jpg" alt="Lottiefiles" loading="lazy" width="380px" height="197px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_14.jpg 2x"&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://lottiefiles.com/featured-free-animations" target="_blank" rel="noopener"&gt;LottieFiles&lt;/a&gt; is also a great place to find, download, and customize Lottiefiles animations. If you need something quickly, just search for free animations, and you can even tweak them in the &lt;a href="https://photography.tutsplus.com/articles/how-to-customise-lottie-animations-free-editor--cms-38695" target="_blank" rel="noopener"&gt;LottieFiles animation Editor&lt;/a&gt;. Plus, it integrates with tools like Figma, Canva, Webflow, and After Effects, making it easy to add animations to your workflow.&lt;/p&gt;
&lt;h3 id="toc-x3ld-iconscout"&gt;
&lt;a href="https://iconscout.com/" target="_blank" rel="noopener"&gt;IconScout&lt;/a&gt; (A mix of free and premium animations)&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;a href="https://iconscout.com/" target="_blank" rel="noopener"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_15.jpg" alt="iconscout" loading="lazy" width="870px" height="438px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_15.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_15.jpg" alt="iconscout" loading="lazy" width="650px" height="330px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_15.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_15.jpg" alt="iconscout" loading="lazy" width="380px" height="197px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_15.jpg 2x"&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://iconscout.com/" target="_new" rel="noopener"&gt;IconScout&lt;/a&gt; is another solid source for Lottie animations, offering a mix of free and paid options. It also offers a whole bunch of other creative assets that are useful, such as 3D illustrations, vector icons, and AI tools.&lt;/p&gt;
&lt;h3 id="toc-nopz-icons8-lottie-high-quality-animated-icons"&gt;
&lt;a href="https://icons8.com/icons/set/popular--animated" target="_blank" rel="noopener"&gt;Icons8 Lottie&lt;/a&gt; (High-quality animated icons)&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;a href="https://icons8.com/icons/set/popular--animated" target="_blank" rel="noopener"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_16.jpg" loading="lazy" width="870px" height="438px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_16.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_16.jpg" loading="lazy" width="650px" height="330px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_16.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_16.jpg" loading="lazy" width="380px" height="197px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_16.jpg 2x"&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://icons8.com/icons/set/popular--animated" target="_blank" rel="noopener"&gt;Icons8&lt;/a&gt; is another great source, especially if you need animated icons for UI/UX design animations. It offers s&lt;span&gt;leek, modern designs which are p&lt;/span&gt;&lt;span style="text-align:-webkit-match-parent"&gt;erfect for websites, apps, and digital products.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="toc-h2tk-where-to-find-lottie-animations"&gt;
&lt;span class="sectionnum"&gt;6.&lt;/span&gt; Conclusion&lt;/h2&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/403/posts/109157/image-upload/how_to_lotties_11.jpg" alt="lottiefiles illustration" loading="lazy" width="870px" height="530px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/403/posts/109157/image-upload/how_to_lotties_11.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/109157/image-upload/how_to_lotties_11.jpg" alt="lottiefiles illustration" loading="lazy" width="650px" height="398px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/109157/image-upload/how_to_lotties_11.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/109157/image-upload/how_to_lotties_11.jpg" alt="lottiefiles illustration" loading="lazy" width="380px" height="236px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/109157/image-upload/how_to_lotties_11.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Lottie animations are a simple way to bring motion to websites, applications, gaming, and films, without heavy coding or slowing things down. With thousands of free animations available, it's easy to enhance engagement, improve the user experience, and create more polished designs, with zero animation skills required.&lt;/p&gt;
&lt;p&gt;The trick is to use them intentionally. A subtle but well-placed animation can elevate an otherwise plain design, while too much moving around can feel annoying. Keep your animations light, relevant, and accessible, and you'll get just the right touch of movement to make your projects really stand out.&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/coming-soon-page-with-lottie-animations--cms-36914"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/36914/preview_image/coming-soon.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/36914/preview_image/coming-soon.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/36914/preview_image/coming-soon.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/36914/preview_image/coming-soon.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/36914/preview_image/coming-soon.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/36914/preview_image/coming-soon.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to Build a Coming Soon Page With Lottie Animations&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;George Martsoukos&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;19 May 2021&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/how-to-customise-lottie-animations-free-editor--cms-38695"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to edit Lottie animations for free in your browser, After Effects not required&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Marie Gardiner&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;30 Aug 2024&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/add-adobe-after-effects-animations-to-a-web-page--cms-35093"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/35093/preview_image/lottie-thumb.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/35093/preview_image/lottie-thumb.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/35093/preview_image/lottie-thumb.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/35093/preview_image/lottie-thumb.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/35093/preview_image/lottie-thumb.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/35093/preview_image/lottie-thumb.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to Add Adobe After Effects Animations to a Web Page&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/780/profiles/19309/profileImage/george-web-avatar-400x400.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;George Martsoukos&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;03 Dec 2020&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/top-lottie-animation-templates-after-effects--cms-38508"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/posts/38508/preview_image/lottie-thumb.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/posts/38508/preview_image/lottie-thumb.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/posts/38508/preview_image/lottie-thumb.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/posts/38508/preview_image/lottie-thumb.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/38508/preview_image/lottie-thumb.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/38508/preview_image/lottie-thumb.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;10 Top Lottie Animation Templates for After Effects&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Marie Gardiner&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;14 Oct 2021&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109157/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109157/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109157/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109157/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>Core Web Vitals: How to optimize “Interaction to Next Paint” (INP)</title><link>https://webdesign.tutsplus.com/interaction-to-next-paint-inp--cms-108124a</link><author>noemail@noemail.org (Anna Monus)</author><pubDate>Wed, 2 Apr 2025 15:02:50 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-108124</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i423"&gt;
&lt;div&gt;
&lt;span&gt;Interaction to Next Paint &lt;/span&gt;&lt;span&gt;(INP),&lt;/span&gt;&lt;span&gt; one of Google's &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://webdesign.tutsplus.com/what-are-core-web-vitals--cms-106851a" target="_blank" rel="noreferrer nofollow noopener"&gt;Core Web Vitals&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, evaluates the overall responsiveness of a web page by quantifying how long a user needs to wait for visual feedback after interacting with it by clicking a button, typing into a form field, or tapping the screen on a mobile device.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;Optimizing INP on your key pages &lt;/span&gt;&lt;span&gt;&lt;em&gt;(such&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; as the home, About, and Contact pages)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; and page types &lt;/span&gt;&lt;span&gt;&lt;em&gt;(such&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; as blog posts, single product pages, and landing pages)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; is an essential task in modern web development and search engine optimization &lt;/span&gt;&lt;span&gt;(SEO).&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;This is because, first, Core Web Vitals are part of Google’s Page Experience Report, which means that your aggregated Interaction to Next Paint scores affect your rankings on SERPs &lt;/span&gt;&lt;span&gt;(search&lt;/span&gt;&lt;span&gt; engine results pages). &lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;Second, since INP is a key aspect of user experience &lt;/span&gt;&lt;span&gt;(UX),&lt;/span&gt;&lt;span&gt; optimizing it will likely reduce bounce rates and increase conversion rates on your website, as your pages will respond to user interactions faster and more intuitively. This is especially important if you have a highly interactive website or application, such as a single page app &lt;/span&gt;&lt;span&gt;(SPA)&lt;/span&gt;&lt;span&gt; or eCommerce site.&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ibll"&gt;
&lt;h2 id="toc-rou6-more-on-the-subject"&gt;More on the subject&lt;/h2&gt;
&lt;p&gt;There’s a lot to learn where Core Web Vitals are concerned. Let us give you a hand ✋&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/what-are-core-web-vitals--cms-106851"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/106851/preview_image/core_web_vitals.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/106851/preview_image/core_web_vitals.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/106851/preview_image/core_web_vitals.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/106851/preview_image/core_web_vitals.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/106851/preview_image/core_web_vitals.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/106851/preview_image/core_web_vitals.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;What Are Core Web Vitals? A Detailed Introduction to Google’s Web Performance Metrics&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Anna Monus&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;05 Jun 2023&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/what-is-largest-contentful-paint-lcp--cms-107183"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/107183/preview_image/lcp.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/107183/preview_image/lcp.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/107183/preview_image/lcp.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/107183/preview_image/lcp.png 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/107183/preview_image/lcp.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/107183/preview_image/lcp.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;Largest Contentful Paint: What It Is and How To Optimize It &lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Anna Monus&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;10 Nov 2023&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ibol"&gt;
&lt;h2 id="toc-8kr1-interaction-to-next-paint-in-brief"&gt;&lt;span&gt;What is Interaction to Next Paint?&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;span&gt;Interaction to Next Paint is an &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://web.dev/articles/vitals" target="_blank" rel="noreferrer nofollow noopener"&gt;industry-standard&lt;/a&gt;&lt;/span&gt;&lt;span&gt; user experience metric that estimates the real-world interactivity of a web page throughout its lifecycle.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;It reports the 98&lt;/span&gt;&lt;span&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/span&gt;&lt;span&gt; percentile of interaction response times on the page. INP captures the worst user experience while filtering out anomalies by excluding the slowest 2% of interactions. In practice, the 98&lt;/span&gt;&lt;span&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/span&gt;&lt;span&gt; percentile means the slowest interaction on most pages, except very busy or interactive ones that process at least 50 interactions per user.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Interaction to Next Paint tracks three types of interactions: clicking, tapping, and key pressing, but excludes hovering and scrolling.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;INP is a time value measured in milliseconds. It consists of three components:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;Blocking time&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;, during which ongoing processes on the main thread prevent the browser from responding to the user action. Part of this is &lt;/span&gt;&lt;span&gt;&lt;strong&gt;input delay&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;, which extends from when a user interacts with the page until the browser is able to start processing that interaction. If the main thread is idle, the input delay is minimal; if it’s busy, it lasts until the main thread becomes available.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;Processing time&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;, during which the browser executes the &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://webdesign.tutsplus.com/introduction-to-javascript-event-listeners--cms-35236t" target="_blank" rel="noreferrer nofollow noopener"&gt;event handlers&lt;/a&gt;&lt;/span&gt;&lt;span&gt; attached to the interaction.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;Presentation time&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;, during which the browser renders and paints the visual updates to the page.&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1999/posts/108124/image-upload/inp_breakup.png" alt="The break-up of the Interaction to Next Paint metric, diagram" loading="lazy" width="870px" height="322px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1999/posts/108124/image-upload/inp_breakup.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1999/posts/108124/image-upload/inp_breakup.png" alt="The break-up of the Interaction to Next Paint metric, diagram" loading="lazy" width="650px" height="244px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1999/posts/108124/image-upload/inp_breakup.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1999/posts/108124/image-upload/inp_breakup.png" alt="The break-up of the Interaction to Next Paint metric, diagram" loading="lazy" width="380px" height="148px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1999/posts/108124/image-upload/inp_breakup.png 2x"&gt;
&lt;figcaption&gt;&lt;em&gt;Image: INP breakdown from the &lt;a class="attrlink" href="https://web.dev/articles/inp" target="_blank" rel="noreferrer nofollow noopener"&gt;official documentation&lt;/a&gt;&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div&gt;
&lt;span&gt;For a good INP result, the page must provide visual feedback to the user for the slowest interaction&lt;/span&gt;&lt;span&gt;&lt;em&gt;(the&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; top 2% excluded)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; within 200 milliseconds. INP scores are measured for mobile and desktop devices separately: the mobile score affects your rankings in Google’s mobile search while the desktop score impacts your results in Google’s desktop search.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Results are classified on a traffic-light scale where:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;span&gt;Green &lt;/span&gt;&lt;strong&gt;&#129001;&lt;/strong&gt;&lt;span&gt; refers to a good INP score &lt;em&gt;(200 milliseconds or less)&lt;/em&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Yellow &lt;/span&gt;&lt;strong&gt;&#129000;&lt;/strong&gt;&lt;span&gt; means that INP needs improvement &lt;em&gt;(between 200 and 500 milliseconds)&lt;/em&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Red &lt;/span&gt;&lt;strong&gt;&#128997;&lt;/strong&gt;&lt;span&gt; refers to a poor INP score &lt;em&gt;(500 milliseconds or more)&lt;/em&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1999/posts/108124/image-upload/interaction_to_next_paint_traffic_light.png" alt="Interaction to Next Paint, passing and failing thresholds" loading="lazy" width="870px" height="241px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1999/posts/108124/image-upload/interaction_to_next_paint_traffic_light.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1999/posts/108124/image-upload/interaction_to_next_paint_traffic_light.png" alt="Interaction to Next Paint, passing and failing thresholds" loading="lazy" width="650px" height="184px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1999/posts/108124/image-upload/interaction_to_next_paint_traffic_light.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1999/posts/108124/image-upload/interaction_to_next_paint_traffic_light.png" alt="Interaction to Next Paint, passing and failing thresholds" loading="lazy" width="380px" height="114px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1999/posts/108124/image-upload/interaction_to_next_paint_traffic_light.png 2x"&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;figure class="post_image"&gt;
&lt;figcaption&gt;&lt;em&gt;Image: INP thresholds from the official documentation&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/figure&gt;
&lt;div&gt;
&lt;span&gt;It’s important to note that while the INP metric reports the 98&lt;/span&gt;&lt;span&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/span&gt;&lt;span&gt; percentile for an individual visit, Google evaluates your site's aggregated INP score at the 75&lt;/span&gt;&lt;span&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/span&gt;&lt;span&gt; percentile of all individual INP scores collected from real users of the Chrome browser over the last 28-day period. In practice, this means that a page will earn a &lt;/span&gt;&lt;span&gt;"good"&lt;/span&gt;&lt;span&gt; rating for INP in Google’s search engine algorithm if at least 75% of individual page visits to that page have an INP of 200 milliseconds or less.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;If no interaction happens on the page, Chrome won't report any INP data for that user.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="icsf"&gt;
&lt;div&gt;
&lt;h2 id="toc-m3tl-how-to-check-your-inp-scores"&gt;&lt;span&gt;How to Check Your INP Scores&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span&gt;As Interaction to Next Paint is a field value &lt;/span&gt;&lt;span&gt;&lt;em&gt;(measured&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; on real user visits)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, you won’t find the metric in the &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.chrome.com/docs/lighthouse/overview#devtools" target="_blank" rel="noreferrer nofollow noopener"&gt;Lighthouse report&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, which is the go-to web performance analysis tool for many developers, available from Chrome DevTools. This is because Lighthouse runs the tests in a simulated environment &lt;/span&gt;&lt;span&gt;&lt;em&gt;(i.e.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; your browsing environment)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, so it can only show metrics that are observable under lab conditions, such as &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://webdesign.tutsplus.com/what-is-largest-contentful-paint-lcp--cms-107183a" target="_blank" rel="noreferrer nofollow noopener"&gt;Largest Contentful Paint &lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://webdesign.tutsplus.com/what-is-largest-contentful-paint-lcp--cms-107183a" target="_blank" rel="noreferrer nofollow noopener"&gt;(LCP)&lt;/a&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;While the official INP documentation says that, in theory, INP can be measured in the lab, in practice, simulated INP scores are usually not the most accurate since it’s almost impossible to imitate the unpredictability and high variability of real user interactions in a lab environment.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;To see your mobile and desktop INP scores that Google uses in its search engine algorithm, you can use one of the following tools &lt;/span&gt;&lt;span&gt;&lt;em&gt;(all&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; get the data from the &lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://www.debugbear.com/blog/chrome-user-experience-report" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;em&gt;Chrome User Experience &lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://www.debugbear.com/blog/chrome-user-experience-report" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;em&gt;(CrUX)&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.chrome.com/docs/crux" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;em&gt; Report&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; that Google collects from real Chrome browser users)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;/div&gt;
&lt;ul class="listtype-bullet listindent1 list-bullet1"&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;GSC &lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;(Google&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt; Search Console)&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; – You can see &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://support.google.com/webmasters/answer/9205520?hl=en" target="_blank" rel="noreferrer nofollow noopener"&gt;grouped Core Web Vitals data&lt;/a&gt;&lt;/span&gt;&lt;span&gt; for your own domains, together with some recommendations.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;PSI &lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;(PageSpeed&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt; Insights)&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; – You can &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://pagespeed.web.dev/" target="_blank" rel="noreferrer nofollow noopener"&gt;run a PSI report&lt;/a&gt;&lt;/span&gt;&lt;span&gt; on any web page. The results page shows field data from the CrUX Report at the top of the report&lt;/span&gt;&lt;span&gt;&lt;em&gt;(this&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; is where you can see the INP scores)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; and lab data from a Lighthouse test&lt;/span&gt;&lt;span&gt;&lt;em&gt;(that&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; PSI runs in the background)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; at the bottom of the report.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;CrUX Dashboard&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; – You can use the &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.chrome.com/docs/crux/dashboard" target="_blank" rel="noreferrer nofollow noopener"&gt;default CrUX Dashboard&lt;/a&gt; &lt;/span&gt;&lt;span&gt;&lt;em&gt;(doesn’t&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; require any configuration)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; or &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.chrome.com/docs/crux/guides/looker-studio-dashboard" target="_blank" rel="noreferrer nofollow noopener"&gt;build a custom one on Looker Studio&lt;/a&gt;&lt;/span&gt;&lt;span&gt; to see the INP &lt;/span&gt;&lt;span&gt;&lt;em&gt;(or&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; any other Web Vital)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; results of any web page.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span&gt;In the screenshot below, you can see how the aggregated INP score of Envato Elements’ desktop homepage appears in PageSpeed Insights:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1999/posts/108124/image-upload/inp_example_psi.png" alt="Interaction to Next Pain example in PageSpeed Insights" loading="lazy" width="870px" height="625px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1999/posts/108124/image-upload/inp_example_psi.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1999/posts/108124/image-upload/inp_example_psi.png" alt="Interaction to Next Pain example in PageSpeed Insights" loading="lazy" width="650px" height="468px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1999/posts/108124/image-upload/inp_example_psi.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1999/posts/108124/image-upload/inp_example_psi.png" alt="Interaction to Next Pain example in PageSpeed Insights" loading="lazy" width="380px" height="276px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1999/posts/108124/image-upload/inp_example_psi.png 2x"&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iudb"&gt;
&lt;h2&gt;&lt;span&gt;8 best practices to optimize Interaction to Next Paint&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span&gt;Now, let’s see some actionable best practices that can help you improve Interaction to Next Paint on your website.&lt;/span&gt;&lt;/div&gt;
&lt;h3 id="toc-dlwv-add-a-viewport-meta-tag-to-improve-mobile-rendering"&gt;1. Reduce unused CSS and JavaScript&lt;/h3&gt;
&lt;div&gt;&lt;span&gt;When a user interacts with your page, the browser often needs to finish processing pending tasks on the main thread before it can respond to that interaction. If there’s unused CSS or JavaScript on the page, it creates unnecessary work for the main thread, which increases the blocking time component of INP.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;To detect unused code on the page, you can use the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Coverage&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab of Chrome DevTools &lt;/span&gt;&lt;span&gt;&lt;em&gt;(accessible&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; from the &lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;&lt;em&gt;More tools&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; option of the three-dots menu)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, which shows the ratio of used and unused bytes in each of your CSS and JavaScript files.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;If you click a URL in the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Coverage&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab, Chrome DevTools opens the file in the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab and highlights unused code in red so that you can identify which parts you can remove or refactor:&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1999/posts/108124/image-upload/chrome_devtools_coverage_tab.png" alt="Coverage tab in Chrome DevTools showing unused CSS and JavaScript" loading="lazy" width="870px" height="635px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1999/posts/108124/image-upload/chrome_devtools_coverage_tab.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1999/posts/108124/image-upload/chrome_devtools_coverage_tab.png" alt="Coverage tab in Chrome DevTools showing unused CSS and JavaScript" loading="lazy" width="650px" height="476px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1999/posts/108124/image-upload/chrome_devtools_coverage_tab.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1999/posts/108124/image-upload/chrome_devtools_coverage_tab.png" alt="Coverage tab in Chrome DevTools showing unused CSS and JavaScript" loading="lazy" width="380px" height="280px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1999/posts/108124/image-upload/chrome_devtools_coverage_tab.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;&lt;span&gt;While you can’t remove all unused code &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; if it belongs to a third-party resource, it’s used in another part of your site, or it would take too much work to remove)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, the overall goal is to reduce it as much as possible.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You can also use a module bundler, such as &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://webpack.js.org/" target="_blank" rel="noreferrer nofollow noopener"&gt;Webpack&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://parceljs.org/" target="_blank" rel="noreferrer nofollow noopener"&gt;Parcel&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, or &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://rollupjs.org/" target="_blank" rel="noreferrer nofollow noopener"&gt;Rollup&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, to implement code splitting so you can only load the code needed for the current page. Minifying and compressing your code files can further reduce parsing and execution time and main thread work.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id="toc-g0n6-reduce-the-dom-size"&gt;2. Reduce the DOM size&lt;/h3&gt;
&lt;div&gt;
&lt;span&gt;A large &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://javascript.info/dom-nodes" target="_blank" rel="noreferrer nofollow noopener"&gt;DOM&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://javascript.info/dom-nodes" target="_blank" rel="noreferrer nofollow noopener"&gt; (Document&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://javascript.info/dom-nodes" target="_blank" rel="noreferrer nofollow noopener"&gt; Object Model) tree&lt;/a&gt;&lt;/span&gt;&lt;span&gt; impacts all three components of INP in the following ways:&lt;/span&gt;
&lt;/div&gt;
&lt;ul class="listtype-bullet listindent1 list-bullet1"&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;Blocking time:&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; The browser has more work to do before it can start responding to user actions.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;Processing time:&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; The browser needs more time to run the callback when there are many HTML elements on the page &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; if your event handlers query the DOM using a method such as &lt;/em&gt;&lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;em&gt;querySelectorAll()&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt;&lt;em&gt;)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;strong&gt;Presentation time:&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; It takes more time for the browser to re-paint the screen after an interaction because there are more elements to style and display.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span&gt;You can improve Interaction to Next Paint by reducing the length and depth of the DOM tree by:&lt;/span&gt;&lt;/div&gt;
&lt;ul class="listtype-bullet listindent1 list-bullet1"&gt;
&lt;li&gt;&lt;span&gt;avoiding excessive nesting of HTML elements&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;using CSS techniques, such as &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements" target="_blank" rel="noreferrer nofollow noopener"&gt;pseudo-elements&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, for styling instead of adding a new HTML element&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;removing hidden elements that aren’t used &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; deprecated features that were hidden rather than removed, testing code, unused template fragments, etc.)&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;breaking up long pages into shorter pages&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;…etc.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-lu75-avoid-rendering-html-in-javascript"&gt;3. Avoid rendering HTML in JavaScript&lt;/h3&gt;
&lt;div&gt;
&lt;span&gt;If your page uses JavaScript to create and display content to the screen, interactions become slower than when the browser only needs to process and render static HTML. This is because the browser must run the JavaScript code to generate the DOM &lt;/span&gt;&lt;span&gt;&lt;em&gt;(which&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; is otherwise directly defined in the HTML)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;If you have a &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://webdesign.tutsplus.com/what-is-a-static-website--cms-108138a" target="_blank" rel="noreferrer nofollow noopener"&gt;static website&lt;/a&gt;&lt;/span&gt;&lt;span&gt; or use a content management system such as WordPress, you don’t need to worry about rendering HTML in JavaScript, as most &lt;/span&gt;&lt;span&gt;&lt;em&gt;(or&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; frequently all)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; of your HTML is generated on the server, and the browser receives it as a ready-to-use document.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;However, if you have an interactive JavaScript application &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; an SPA created with a UI framework such as React, Vue, or Angular)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, consider using &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://www.debugbear.com/blog/server-side-rendering" target="_blank" rel="noreferrer nofollow noopener"&gt;server-side rendering&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://www.debugbear.com/blog/server-side-renderinghttps://www.debugbear.com/blog/server-side-rendering" target="_blank" rel="noreferrer nofollow noopener"&gt; (SSR)&lt;/a&gt;&lt;/span&gt;&lt;span&gt; rather than processing client-side JavaScript in the browser to generate all HTML on the fly. &lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Plus, if there are complex JavaScript interactions in your SPA, break them up into smaller steps and provide visual feedback at each stage instead of rebuilding large sections at once in response to user interaction.&lt;/span&gt;&lt;/div&gt;
&lt;h3 id="toc-y70j-analyze-the-most-common-user-interactions"&gt;4. Analyze Common User Interactions&lt;/h3&gt;
&lt;div&gt;&lt;span&gt;To optimize Interaction to Next Paint on your website, you need to understand the most common interactions your users typically perform on your key pages — which are different from website to website. In other words, you need to follow the Know Thy Website principle, derived from the ancient Greek maxim.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;You can do so by using the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab in Chrome DevTools that Google specifically created to help developers catch web performance issues and analyze Web Vitals, such as Interaction to Next Paint.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;First, think about the three types of interactions INP records: clicking, tapping, and key pressing, and create some user flows &lt;/span&gt;&lt;span&gt;that typically occur on your key pages or page types &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; filling out forms, using navigation, typing into the search bar, etc.)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; either mentally or by writing them down. &lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Then:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;span&gt;Open the page you want to analyze in the Google Chrome browser in Incognito mode &lt;/span&gt;&lt;span&gt;&lt;em&gt;(which&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; deactivates your browser extensions)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Open Chrome DevTools by pressing the &lt;/span&gt;&lt;code&gt;&lt;span&gt;F12&lt;/span&gt;&lt;/code&gt;&lt;span&gt; key or right-clicking the page and selecting the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Inspect&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; option.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Navigate to the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; panel.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Click the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Record&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; or &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Record and reload&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; icon &lt;/span&gt;a&lt;span&gt;t the top of the panel to start recording.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start to interact with the page by performing some common user actions.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Stop the recording when you performed all the actions you wanted.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span&gt;For example, the screenshot below shows the recording of a common user flow I carried out on Envato Elements’ homepage — I typed “&lt;/span&gt;&lt;span&gt;wordpress&lt;/span&gt;&lt;span&gt; templates” into the search bar at the top of the page, then used the up and down keys to navigate through the dynamically loaded results in the dropdown of the search bar:&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1999/posts/108124/image-upload/chrome_devtools_performance_tab.png" alt="Performance tab in Chrome DevTools, with the Presentation delay component highlighted" loading="lazy" width="870px" height="730px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1999/posts/108124/image-upload/chrome_devtools_performance_tab.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1999/posts/108124/image-upload/chrome_devtools_performance_tab.png" alt="Performance tab in Chrome DevTools, with the Presentation delay component highlighted" loading="lazy" width="650px" height="546px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1999/posts/108124/image-upload/chrome_devtools_performance_tab.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1999/posts/108124/image-upload/chrome_devtools_performance_tab.png" alt="Performance tab in Chrome DevTools, with the Presentation delay component highlighted" loading="lazy" width="380px" height="321px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1999/posts/108124/image-upload/chrome_devtools_performance_tab.png 2x"&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;As you can see above, the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab shows the three phases of INP. When I clicked the longest component &lt;/span&gt;&lt;span&gt;&lt;em&gt;(i.e., &lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;&lt;em&gt;Presentation delay&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt;)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, DevTools highlighted it in the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Main&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; section &lt;/span&gt;&lt;span&gt;&lt;em&gt;(which&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; represents the main thread)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; and displayed a super useful call tree and event log that allowed me to analyze which events and calls caused the presentation delay.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;After recording a couple of common user flows, you can create a list of the key issues that increase Interaction to Next Paint on your website.&lt;/span&gt;&lt;/div&gt;
&lt;h3 id="toc-31n1-break-up-long-running-tasks"&gt;5. Break up long-running scripts&lt;/h3&gt;
&lt;div&gt;
&lt;span&gt;Once you’ve analyzed common user interactions in the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab of Chrome DevTools, focus on fixing the ones that took the most time to finish, as these are the interactions that have the most significant impact on your INP scores.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Optimize these long-running scripts by using one or more of the following techniques: &lt;/span&gt;&lt;/div&gt;
&lt;ul class="listtype-bullet listindent1 list-bullet1"&gt;
&lt;li&gt;
&lt;span&gt;Look into the call tree in the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab to see which functions are responsible for the long delay.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Check if there are any code redundancies &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; unnecessary style calculations, repeated DOM queries, inefficient event listeners, duplicate calculations or data processing, etc.)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; and remove them.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Chunk long-running processes by using techniques such as the &lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;a class="attrlink" href="https://code.tutsplus.com/timing-events-in-javascript-settimeout-and-setinterval--cms-93880a" target="_blank" rel="noreferrer nofollow noopener"&gt;setTimeout()&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt;&lt;a class="attrlink" href="https://code.tutsplus.com/timing-events-in-javascript-settimeout-and-setinterval--cms-93880a" target="_blank" rel="noreferrer nofollow noopener"&gt; method&lt;/a&gt;&lt;/span&gt;&lt;span&gt; with small delays or breaking tasks into smaller pieces with &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://code.tutsplus.com/using-async-and-await-in-javascript--cms-106733t" target="_blank" rel="noreferrer nofollow noopener"&gt;async/await functions&lt;/a&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Move CPU-intensive tasks off the main thread by using &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers" target="_blank" rel="noreferrer nofollow noopener"&gt;Web Workers&lt;/a&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="toc-i7ol-avoid-scripts-that-run-synchronously"&gt;6. Make your scripts asynchronous&lt;/h3&gt;
&lt;div&gt;&lt;span&gt;To optimize Interaction to Next Paint, avoid using synchronous JavaScript wherever possible, as it executes immediately and thus blocks the main thread when users are trying to interact with the page.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;Avoid using functions such as &lt;/span&gt;&lt;code&gt;&lt;span&gt;alert()&lt;/span&gt;&lt;/code&gt;&lt;span&gt;, &lt;/span&gt;&lt;code&gt;&lt;span&gt;confirm()&lt;/span&gt;&lt;/code&gt;&lt;span&gt;, and &lt;/span&gt;&lt;code&gt;&lt;span&gt;prompt()&lt;/span&gt;&lt;/code&gt;&lt;span&gt; that stop all JavaScript execution, along with &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest" target="_blank" rel="noreferrer nofollow noopener"&gt;synchronous AJAX requests&lt;/a&gt; &lt;/span&gt;&lt;span&gt;&lt;em&gt;(which&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; are strongly discouraged in modern web development anyway)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;You can also make JavaScript files non-render-blocking by adding the &lt;/span&gt;&lt;code&gt;&lt;span&gt;defer&lt;/span&gt;&lt;/code&gt;&lt;span&gt; or &lt;/span&gt;&lt;code&gt;&lt;span&gt;async&lt;/span&gt;&lt;/code&gt;&lt;span&gt; attribute to the &lt;/span&gt;&lt;code&gt;&lt;span&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt; tag:&lt;/span&gt;
&lt;/div&gt;
&lt;ul class="listtype-bullet listindent1 list-bullet1"&gt;
&lt;li&gt;
&lt;span&gt;Use &lt;/span&gt;&lt;code&gt;&lt;span&gt;async&lt;/span&gt;&lt;/code&gt;&lt;span&gt; for scripts that don’t depend on other scripts &lt;/span&gt;&lt;span&gt;&lt;em&gt;(e.g.,&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; third-party analytics or tracking scripts)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;, so they can load in parallel with the creation of the DOM tree. Note, however, that &lt;/span&gt;&lt;code&gt;&lt;span&gt;async&lt;/span&gt;&lt;/code&gt;&lt;span&gt; scripts execute as soon as they're downloaded, which can interrupt HTML parsing. On the other hand, they can execute before the entire page is parsed, which can be useful for certain tasks such as marketing tracking or frontend performance monitoring.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;Use &lt;/span&gt;&lt;code&gt;&lt;span&gt;defer&lt;/span&gt;&lt;/code&gt;&lt;span&gt; for scripts that depend on the DOM or need to run in a specific order, as deferred scripts execute after the browser parses the HTML and creates the DOM tree &lt;/span&gt;&lt;span&gt;&lt;em&gt;(but&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; still before the &lt;/em&gt;&lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;em&gt;DOMContentLoaded&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt;&lt;em&gt; event)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;&amp;lt;!-- Load scripts asynchronously --&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;script &lt;/span&gt;&lt;span style="color: #6a9fb5"&gt;async&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;src=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"analytics.js"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;&amp;lt;!-- Load scripts after HTML parsing but before DOMContentLoaded --&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;script &lt;/span&gt;&lt;span style="color: #6a9fb5"&gt;defer&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;src=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"app.js"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class="callout-block"&gt;
&lt;span class="callout-icon callout-do"&gt;&lt;/span&gt;
&lt;div class="callout-message"&gt;
&lt;span&gt;Note that &lt;/span&gt;&lt;code&gt;&lt;span&gt;async&lt;/span&gt;&lt;/code&gt;&lt;span&gt; and &lt;/span&gt;&lt;code&gt;&lt;span&gt;defer&lt;/span&gt;&lt;/code&gt;&lt;span&gt; scripts still execute on the main thread, similar to synchronous scripts. They improve Interaction to Next Paint by not blocking rendering during download and by executing at more optimal times during page loading.&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="toc-ybok-reduce-third-party-resources"&gt;7. Minimize the impact of third-party scripts&lt;/h3&gt;
&lt;div&gt;&lt;span&gt;To reduce Interaction to Next Paint on your website, review your third-party scripts and consider removing the ones you don't need that much. Or, you can replace them with more lightweight alternatives.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;If you still have third-party scripts on the page, consider self-hosting the critical ones so they can be loaded faster, as the browser doesn’t have to establish a connection to an external server.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;You can also preconnect to third-party servers that host your critical scripts using the &lt;/span&gt;&lt;code&gt;&lt;span&gt;preconnect&lt;/span&gt;&lt;/code&gt;&lt;span&gt; &lt;a class="attrlink" href="https://blog.logrocket.com/using-resource-hints-to-optimize-performance/" target="_blank" rel="noreferrer nofollow noopener"&gt;resource hint&lt;/a&gt;&lt;/span&gt;&lt;span&gt; in the following way:&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;link&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;rel=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preconnect"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;href=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"https://stackpath.bootstrapcdn.com"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;You need to add &lt;/span&gt;&lt;code&gt;&lt;span&gt;preconnect&lt;/span&gt;&lt;/code&gt;&lt;span&gt; to the &lt;/span&gt;&lt;code&gt;&lt;span&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt; section of the HTML document. It speeds up the download of resources from a third-party domain by performing the DNS lookup and establishing the TCP/TLS or QUIC connection before the browser would do so by default.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;For heavy third-party widgets, you can also consider &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.chrome.com/docs/lighthouse/performance/third-party-facades" target="_blank" rel="noreferrer nofollow noopener"&gt;using a facade&lt;/a&gt;&lt;/span&gt;&lt;span&gt; — a lightweight placeholder that you load initially and replace with the full widget only when necessary. Open-source facades exist for popular widgets and embeds, such as this &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://github.com/paulirish/lite-youtube-embed" target="_blank" rel="noreferrer nofollow noopener"&gt;Lite YouTube embed&lt;/a&gt;&lt;/span&gt;&lt;span&gt; by Paul Irish.&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="toc-ht8l-avoid-layout-thrashing"&gt;8. Avoid layout thrashing&lt;/h3&gt;
&lt;div&gt;
&lt;span&gt;Layout thrashing &lt;/span&gt;&lt;span&gt;&lt;em&gt;(a.k.a.&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; forced reflows)&lt;/em&gt;&lt;/span&gt;&lt;span&gt; happens when you repeatedly read and modify the DOM, which forces the browser to recalculate the layout multiple times, which directly increases the processing and presentation time components of INP.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;When writing JavaScript, avoid using properties and methods that force layout recalculation, such as &lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight" target="_blank" rel="noreferrer nofollow noopener"&gt;offsetHeight&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;code&gt;offsetWidth&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;code&gt;offsetTop&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect" target="_blank" rel="noreferrer nofollow noopener"&gt;getBoundingClientRect()&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;code&gt;getComputedStyle()&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, etc. For a comprehensive list of JavaScript properties and methods that can cause layout thrashing, check out &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a" target="_blank" rel="noreferrer nofollow noopener"&gt;this list on GitHub&lt;/a&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Here’s a very simple example of layout thrashing:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;/* Layout thrashing */&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;offsetWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Read
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;px&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Write
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;offsetHeight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Read (forces reflow)
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;px&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Write&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;You can prevent layout thrashing by batching your read and write operations in the following way:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #949494"&gt;/* Layout batching */&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;offsetWidth&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Read
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;offsetHeight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Read
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementWidth&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;px&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Write
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;element&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;elementHeight&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;20&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;+&lt;/span&gt; &lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;px&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt; &lt;span style="color: #949494"&gt;// Write&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;The &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; panel in Chrome DevTools can help you identify layout thrashing. &lt;/span&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;span&gt;If layout thrashing is happening on a page, the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; panel shows the function calls that caused the forced reflows in the &lt;/span&gt;&lt;span&gt;&lt;strong&gt;Forced reflows&lt;/strong&gt;&lt;/span&gt;&lt;span&gt; tab:&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1999/posts/108124/image-upload/forced_reflow_chrome_devtools.png" alt="An example of layout thrashing in the Performance panel of Chrome DevTools" loading="lazy" width="870px" height="672px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1999/posts/108124/image-upload/forced_reflow_chrome_devtools.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1999/posts/108124/image-upload/forced_reflow_chrome_devtools.png" alt="An example of layout thrashing in the Performance panel of Chrome DevTools" loading="lazy" width="650px" height="503px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1999/posts/108124/image-upload/forced_reflow_chrome_devtools.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1999/posts/108124/image-upload/forced_reflow_chrome_devtools.png" alt="An example of layout thrashing in the Performance panel of Chrome DevTools" loading="lazy" width="380px" height="296px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1999/posts/108124/image-upload/forced_reflow_chrome_devtools.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;&lt;span&gt;You can avoid layout thrashing by using a library such as &lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://github.com/wilsonpage/fastdom" target="_blank" rel="noreferrer nofollow noopener"&gt;FastDOM&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, which automatically batches read and write operations &lt;/span&gt;&lt;span&gt;&lt;em&gt;(the&lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt; screenshot above was created using FastDOM’s &lt;/em&gt;&lt;/span&gt;&lt;span&gt;&lt;a class="attrlink" href="https://wilsonpage.github.io/fastdom/examples/animation.html" target="_blank" rel="noreferrer nofollow noopener"&gt;&lt;em&gt;testing page for animations&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;em&gt;)&lt;/em&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i1ac"&gt;
&lt;h2 id="toc-ks0p-wrapping-up"&gt;Wrapping Up&lt;/h2&gt;
&lt;div&gt;&lt;span&gt;There are many code optimization techniques that can help you improve Interaction to Next Paint on your site. To make your pages snappy and responsive to user action, remove unused first-party and third-party code, find your specific issues by recording typical user flows in Chrome DevTools, and use JavaScript best practices such as reducing main thread work, minimizing DOM manipulations, making scripts asynchronous, and others.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Since INP optimization isn't a one-time task but an ongoing process, consider integrating it into your everyday development workflow.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Start by identifying your slowest interactions, implement the best practices discussed in this post, and test your key pages regularly to see the improvements and prevent performance degradation. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Using the right techniques, even complex, interaction-heavy websites and single page applications can achieve good INP scores on both desktop and mobile devices.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/108124/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/108124/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/108124/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/108124/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to create a glassmorphism generator tool </title><link>https://webdesign.tutsplus.com/glassmorphism-generator-tool--cms-109168t</link><author>noemail@noemail.org (Esther Vaati)</author><pubDate>Fri, 18 Apr 2025 08:44:10 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109168</guid><description>&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iurl"&gt;
&lt;p&gt;Glassmorphism is a pretty resilient design style (it’s been around a long while now!) achieved by a combination of background blur transparency, a semi-transparent border, and sometimes subtle border shadows.&lt;/p&gt;
&lt;h2 id="toc-mnvb-our-glassmorphism-generator"&gt;Our glassmorphism generator&lt;/h2&gt;
&lt;p&gt;Here’s what we’re going to build.&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/XJbJgZw?default-tab=result" width="850" height="800" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;h3 id="toc-r779-how-glassmorphism-works"&gt;How glassmorphism is created with CSS&lt;/h3&gt;
&lt;p&gt;With CSS we can apply a background blur and a transparent background to an element and then place it over a background (typically an image, a gradient, or another layered element) to create the illusion of frosted glass.&lt;/p&gt;
&lt;p&gt;As you can see from the demo, we are using an image as our background, and the card element on top features a transparent background, a blur effect, a border, and a subtle box shadow. All these properties, when combined, create the frosted glass effect.&lt;/p&gt;
&lt;p&gt;Let's get started!&lt;/p&gt;
&lt;h2 id="toc-yk4m-build-a-glassmorphism-generator"&gt;Build a Glassmorphism generator&lt;/h2&gt;
&lt;h3 id="toc-319j-html-structure"&gt;HTML Structure&lt;/h3&gt;
&lt;p&gt;The HTML structure will be minimal, with the following elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A preview section to display the glass morphism effect in real-time. &lt;/li&gt;
&lt;li&gt;A settings section for customizing the color, blur, and opacity values.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt; &lt;/code&gt;element to display the CSS for the current glass effect.  &lt;/li&gt;
&lt;li&gt;A button for copying the generated CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is all the HTML needed:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table html"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Glassmorphism Generator&lt;span style="color: #f4bf75"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;section&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-section"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"preview-container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"glass-card"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Glassmorphism Effect&lt;span style="color: #f4bf75"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;          This is how your glassmorphism element will look with the current settings.
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #f4bf75"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;section&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"settings-container"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"settings"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"colorPicker"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Color:&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"colorPicker"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color-picker"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"#3abb16"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"settings"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"opacity"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"slider-label"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Opacity:&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"range"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"opacity"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"slider"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;min=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;max=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"1"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;step=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.01"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.25"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"settings"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;for=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"slider-label"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Blur:&lt;span style="color: #f4bf75"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;&amp;lt;input&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;type=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"range"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"blur"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"slider"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;min=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-46" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;46&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;max=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"20"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-47" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;47&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;step=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"0.5"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-48" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;48&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #6a9fb5"&gt;value=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"10"&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-49" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;49&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #f4bf75"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-50" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;50&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-51" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;51&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-52" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;52&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-53" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;53&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;div&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"code-card"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-54" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;54&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #f4bf75"&gt;&amp;lt;pre&amp;gt;&amp;lt;code&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"output"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-55" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;55&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-56" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;56&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-57" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;57&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;id=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"copyCssButton"&lt;/span&gt; &lt;span style="color: #6a9fb5"&gt;class=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"copy-css"&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;&amp;gt;&lt;/span&gt;Copy CSS&lt;span style="color: #f4bf75"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-58" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;58&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class="callout-block"&gt;
&lt;span class="callout-icon callout-do"&gt;&lt;/span&gt;
&lt;div class="callout-message"&gt;The values you use on the form elements here will be applied to the glassmorphism card when it first loads&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="toc-gbku-styling-with-css"&gt;Styling with CSS&lt;/h3&gt;
&lt;p&gt;Let's start by using flex to align everything at the center. Here are the styles for the body and the main container.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;body&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;min-height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100vh&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-family&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;"DM Mono"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;monospace&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;main&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;max-width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;600px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;display&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;gap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;20px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;flex-direction&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;column&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;align-items&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The preview section has a background image and a card on top showing the frosted glass effect. Add these styles to the preview container. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.preview-container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#ffffff&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;320px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.5rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-image&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;url("image url here")&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cover&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-position&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;center&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-8f2g-the-default-glassmorphism-effect"&gt;The Default Glassmorphism effect&lt;/h3&gt;
&lt;p&gt;The first time you open the tool, we want a default frosted effect already applied to the glass card. As we mentioned, earlier, the frosted glass effect is achieved by a combination of 4 key CSS properties.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;span&gt;Transparent background&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; - makes the card partially see-through.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;span&gt;Backdrop blur&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; -This applies a blur to the background element. In our case, the background image will &lt;/span&gt;&lt;span&gt;be blurred&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;span&gt;Transparent Border&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; - Adds a subtle semi-transparent outline defining the card's edges.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;span&gt;Box shadow &lt;/span&gt;&lt;/strong&gt;&lt;span&gt;- Adds depth by using a soft shadow, making the card appear as though it's floating over the background image.&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In CSS, if you need to apply transparency to an element, you can use the &lt;code&gt;rgba()&lt;/code&gt; or the &lt;code&gt;hsla()&lt;/code&gt; color functions. These functions allow you to define a color with an alpha (transparency) value, where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0 means fully transparent&lt;/li&gt;
&lt;li&gt;1 means fully opaque. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The lower the alpha value, the more transparent the effect, which is important for creating a glass effect. &lt;/p&gt;
&lt;p&gt;Add the following properties to the glass card. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.glass-card&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;75%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;160px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4rem&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;254&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;&lt;span style="color: #90a959"&gt;245&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;&lt;span style="color: #90a959"&gt;238&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt;&lt;span style="color: #90a959"&gt;0.2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backdrop-filter&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;5px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;-webkit-backdrop-filter&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;5px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;10px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;1px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;solid&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;255&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.2&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;box-shadow&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt; &lt;span style="color: #90a959"&gt;30px&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;rgba&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here, we are applying  a transparent background, a blur, a border, and a box shadow using the RGBA color function. The backdrop blur is the secret weapon behind the frosted effect. It blurs everything behind the card, creating the signature glass effect. Without this value, the background would be plain transparent.&lt;/p&gt;
&lt;p&gt;The thin semitransparent white border gives the card a shiny edge, while the box shadow will make it appear like it's floating above the background. The default effect will now look like this:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/30/posts/109168/image-upload/glassmorphism_effect.jpg" alt="glassmorphism effect" loading="lazy" width="870px" height="514px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/30/posts/109168/image-upload/glassmorphism_effect.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109168/image-upload/glassmorphism_effect.jpg" alt="glassmorphism effect" loading="lazy" width="650px" height="386px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109168/image-upload/glassmorphism_effect.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109168/image-upload/glassmorphism_effect.jpg" alt="glassmorphism effect" loading="lazy" width="380px" height="229px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109168/image-upload/glassmorphism_effect.jpg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-714z-styling-the-other-elements"&gt;Styling the other elements&lt;/h3&gt;
&lt;figure class="post_image"&gt;&lt;/figure&gt;
&lt;p&gt;Let’s style the rest of the elements:&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table css"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #f4bf75"&gt;.settings-container&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;input&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;[&lt;/span&gt;&lt;span style="color: #f4bf75"&gt;type&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt;&lt;span style="color: #90a959"&gt;"color"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;]&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.slider&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;4px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e0e0e0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;2px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;appearance&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.settings&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-bottom&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;12px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-21" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;21&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-22" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;22&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.slider&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;::-webkit-slider-thumb&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-23" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;23&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;appearance&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-24" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;24&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-25" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;25&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-26" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;26&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#147ccb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-27" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;27&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-28" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;28&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-29" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;29&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-30" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;30&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.slider&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;::-moz-range-thumb&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-31" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;31&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-32" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;32&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-33" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;33&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#147ccb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-34" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;34&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;50%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-35" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;35&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-36" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;36&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-37" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;37&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-38" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;38&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.code-card&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-39" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;39&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;95%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-40" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;40&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#e0e0e0&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-41" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;41&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#021120&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-42" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;42&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;padding&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;16px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-43" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;43&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-44" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;44&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;overflow-x&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;auto&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-45" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;45&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-46" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;46&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-47" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;47&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;pre&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-48" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;48&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.875rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-49" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;49&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;white-space&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pre-wrap&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-50" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;50&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-51" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;51&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #f4bf75"&gt;.copy-css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-52" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;52&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;margin-top&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;24px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-53" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;53&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cursor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;pointer&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-54" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;54&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;text-transform&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;uppercase&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-55" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;55&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-56" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;56&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#fff&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-57" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;57&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-size&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;0.875rem&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-58" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;58&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;width&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;100%&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-59" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;59&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;height&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;45px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-60" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;60&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;background-color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;#167cbb&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-61" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;61&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border-radius&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;8px&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-62" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;62&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;font-weight&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #90a959"&gt;600&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-63" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;63&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;border&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;:&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;none&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-64" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;64&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-9wa6-javascript-functionality"&gt;Glassmorphism generation&lt;/h3&gt;
&lt;p&gt;In this part of the tutorial, we want to have a customization option where you can choose your own color, transparency, and blur values to create a unique glass effect. &lt;/p&gt;
&lt;p&gt;Let's start by getting all the elements &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;colorElement&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;colorPicker&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacityElement&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;opacity&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blurElement&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;blur&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssOutput&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;output&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyCssButton&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;getElementById&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;copyCssButton&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;glassCard&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;document&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;querySelector&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;.glass-card&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;When you select a color from the color picker element, its usually in the hex format, so we need to convert the selected color to the RGBA color format. To do that, let's create a function called &lt;code&gt;hextoRGB&lt;/code&gt;, which will take in the hex color and opacity values chosen by the user and returns the corresponding  RGBA format.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexToRGB&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacity&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;r&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseInt&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;slice&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;1&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt; &lt;span style="color: #90a959"&gt;16&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;g&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseInt&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;slice&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;3&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt; &lt;span style="color: #90a959"&gt;16&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;b&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;parseInt&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;hex&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;slice&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;5&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #90a959"&gt;7&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;),&lt;/span&gt; &lt;span style="color: #90a959"&gt;16&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #aa759f"&gt;return&lt;/span&gt; &lt;span style="color: #90a959"&gt;`rgba(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;r&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;,&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;g&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;,&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;b&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;,&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacity&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;)`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For example, if the selected color is  &lt;code&gt;#3498db&lt;/code&gt;, the corresponding color in  RGBA format will be: &lt;code&gt;rgba(52,152,219,0.6)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The next step is to update the glass card to reflect the selected color, blur, and opacity values. Create a function called &lt;code&gt;updatePreview()&lt;/code&gt; that gets the selected values and applies them as styles to the glass card. &lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;colorElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;transparency&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacityElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blurElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexToRGB&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;transparency&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;glassCard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;glassCard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backdropFilter&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`blur(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px)`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;In the code, the preview section will dynamically update the appearance based on the values from the inputs. &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&lt;span&gt;glassCard.style.backgroundColor = &lt;/span&gt;&lt;span&gt;backgroundColor&lt;/span&gt;&lt;/code&gt;:&lt;span&gt;updates the background color using an RGBA value.&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;code&gt;glassCard.style.backdropFilter = `blur(${blur}px)`;&lt;/code&gt;: applies a blur effect to the background behind the card, creating the frosted glass look. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also need to add &lt;a href="https://webdesign.tutsplus.com/introduction-to-javascript-event-listeners--cms-35236t" target="_self"&gt;event listeners&lt;/a&gt; to the inputs, to ensure any change in the values updates the preview.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;colorElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacityElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blurElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;input&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id="toc-k63k-generate-and-copy-css-values"&gt;Generate and copy CSS values&lt;/h3&gt;
&lt;p&gt;So far, we are able to create customized frosted glass effects, the next step is to generate the CSS used to achieve the glass effect and allow for easy copying as shown in the image below.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109168/image-upload/glass_CSS.png" loading="lazy" width="870px" height="427px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109168/image-upload/glass_CSS.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109168/image-upload/glass_CSS.png" loading="lazy" width="650px" height="322px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109168/image-upload/glass_CSS.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109168/image-upload/glass_CSS.png" loading="lazy" width="380px" height="192px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109168/image-upload/glass_CSS.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;In the &lt;code&gt;updatePreview ()&lt;/code&gt; function, create a CSS string using the currently selected color, blur, and opacity values and add the string as the text content of the CSS output element. Every time you change a value, the CSS will also change and update the preview.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d28445"&gt;function&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;updatePreview&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;colorElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;transparency&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;opacityElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;blurElement&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;value&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;hexToRGB&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;color&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;transparency&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;glassCard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;glassCard&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;style&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backdropFilter&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`blur(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px)`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d28445"&gt;const&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #90a959"&gt;`.card {
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-11" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;11&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;  background: &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;backgroundColor&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;;
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-12" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;12&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;  backdrop-filter: blur(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px);
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-13" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;13&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;  -webkit-backdrop-filter: blur(&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;blur&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;px);
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-14" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;14&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;  border-radius: 10px;
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-15" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;15&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;  border: 1px solid rgba(255, 255, 255, &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;${&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;transparency&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;&lt;span style="color: #90a959"&gt;);
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-16" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;16&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;  box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-17" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #90a959"&gt;}`&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-18" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;18&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-19" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;19&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0;background-color: #151515"&gt;output&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;css&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-20" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;20&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The last feature is to copy the CSS values, making it easy to copy the generated CSS values with just one click. Add an event listener to the copy CSS button.&lt;/p&gt;
&lt;div class="rouge-syntax-highlight"&gt;&lt;table class="rouge-line-table javascript"&gt;&lt;tbody&gt;
&lt;tr id="line-1" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;copyCssButton&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;addEventListener&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;click&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;,&lt;/span&gt; &lt;span style="color: #d0d0d0;background-color: #151515"&gt;function &lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-2" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;2&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;    &lt;span style="color: #d0d0d0;background-color: #151515"&gt;navigator&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;clipboard&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-3" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;3&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;writeText&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;cssOutput&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;textContent&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-4" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;4&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;then&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(()&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-5" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;5&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alert&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;Css copied&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-6" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;6&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;})&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-7" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;7&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;.&lt;/span&gt;&lt;span style="color: #aa759f"&gt;catch&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;((&lt;/span&gt;&lt;span style="color: #d0d0d0;background-color: #151515"&gt;error&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;)&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #d0d0d0"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-8" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;8&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;        &lt;span style="color: #d0d0d0;background-color: #151515"&gt;alert&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;(&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #90a959"&gt;error copying CSS&lt;/span&gt;&lt;span style="color: #90a959"&gt;"&lt;/span&gt;&lt;span style="color: #d0d0d0"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-9" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;9&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;      &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id="line-10" class="lineno"&gt;
&lt;td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"&gt;&lt;pre&gt;10&lt;/pre&gt;&lt;/td&gt;
&lt;td class="rouge-code"&gt;&lt;pre&gt;  &lt;span style="color: #d0d0d0"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here we are using the &lt;code&gt;navigator.clipboard&lt;/code&gt; API, a built-in browser tool that allows us to copy things to the clipboard. The &lt;code&gt;writeText()&lt;/code&gt; method is used to copy the contents of the CSS output element directly to the clipboard.&lt;/p&gt;
&lt;h2 id="toc-trel-our-final-glassmorphism-tool"&gt;Our final glassmorphism tool&lt;/h2&gt;
&lt;p&gt;Let’s remind ourselves of what we’ve built!&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://codepen.io/tutsplus/embed/XJbJgZw?default-tab=result" width="850" height="800" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy"&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/what-is-the-glassmorphism-web-design-trend--cms-93333"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/93333/preview_image/glassmorphism.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/93333/preview_image/glassmorphism.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/93333/preview_image/glassmorphism.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/93333/preview_image/glassmorphism.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/93333/preview_image/glassmorphism.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/93333/preview_image/glassmorphism.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;What is the Glassmorphism Web Design Trend?&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/21134/profileImage/hermione-wright.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/21134/profileImage/hermione-wright.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/21134/profileImage/hermione-wright.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/21134/profileImage/hermione-wright.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/21134/profileImage/hermione-wright.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/21134/profileImage/hermione-wright.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Hermione Wright&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;28 Nov 2022&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/how-to-create-a-frosted-glass-effect-in-css--cms-32535"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;2 Ways to Create a CSS Frosted Glass Effect&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Adi Purdila&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;19 Apr 2023&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="toc-6s4h-conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's a wrap for this tutorial. Adding a frosted glass effect to your designs can enhance the overall aesthetic and give your UI a modern touch. To improve on this tool you can add support for different backgrounds such as shapes and gradients.&lt;/p&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109168/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109168/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109168/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109168/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item><item><title>How to create an animated Lottie logo</title><link>https://design.tutsplus.com/tutorials/how-to-create-an-animated-lottie-logo--cms-109175</link><author>noemail@noemail.org (Drew MacDonald)</author><pubDate>Sat, 26 Apr 2025 17:28:13 GMT</pubDate><guid isPermaLink="false">tag:webdesign.tutsplus.com,2005:PostPresenter/cms-109175</guid><description>&lt;figure class="final-product final-product--image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/final_image/Final_Image_90.jpg" alt="Final product image" loading="lazy" width="870px" height="499px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/final_image/Final_Image_90.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/final_image/Final_Image_90.jpg" alt="Final product image" loading="lazy" width="650px" height="375px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/final_image/Final_Image_90.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/final_image/Final_Image_90.jpg" alt="Final product image" loading="lazy" width="380px" height="223px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/final_image/Final_Image_90.jpg 2x"&gt;&lt;!--googleoff: index--&gt;&lt;figcaption&gt;What You'll Be Creating&lt;/figcaption&gt;&lt;!--googleon: index--&gt;&lt;/figure&gt;&lt;style&gt;* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}&lt;/style&gt;&lt;div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ikr4"&gt;
&lt;p&gt;Virtually all video on the internet is comprised of thousands or millions of individual raster images, or frames. While compression greatly reduces the file sizes, each frame is still essentially a raster image that is resolution-dependent, and the video itself is frame-rate-dependent. You cannot make the video larger or add more frames after it is rendered.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://design.tutsplus.com/c/graphic-design/s/animated-graphics" target="_blank" rel="noopener"&gt;Lottie animated graphics&lt;/a&gt; attempt to bring the advantages of &lt;a href="https://design.tutsplus.com/c/drawingillustration/s/vectors" target="_blank" rel="noopener"&gt;vector graphics&lt;/a&gt; to animation. Lottie animations store vector data that is resolution-independent and allows vector shapes to be animated directly on a webpage or within an app. A Lottie animation is perfect for animated logos and elements that you want to stand out while keeping file sizes small.&lt;/p&gt;
&lt;p&gt;In this tutorial, you will be creating this &lt;a href="https://lottiefiles.com/free-animation/roast-bee-animation-NA5f3liyzn" target="_blank" rel="noopener"&gt;Lottie logo animation&lt;/a&gt;. &lt;/p&gt;
&lt;figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=v73CUpBDdAc&amp;amp;t=0"&gt;
            &lt;iframe src="https://www.youtube.com/embed/v73CUpBDdAc?rel=0&amp;amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"&gt;&lt;/iframe&gt;
          &lt;/figure&gt;
&lt;h2 id="toc-7wpa-what-youll-need"&gt;
&lt;span class="sectionnum"&gt;1.&lt;/span&gt; What you’ll need&lt;/h2&gt;
&lt;p&gt;For this tutorial, you will be using &lt;a href="https://design.tutsplus.com/compatible-with/adobe-illustrator" target="_blank" rel="noopener"&gt;Adobe Illustrator&lt;/a&gt; and &lt;a href="https://photography.tutsplus.com/video/compatible-with/adobe-after-effects" target="_blank" rel="noopener"&gt;Adobe After Effects&lt;/a&gt; to create an animated logo, so you’ll need to have those installed. In order to create Lottie animations, you will also need to have the Lottie extension installed in After Effects. Visit the &lt;a href="https://lottiefiles.com/plugins/after-effects"&gt;&lt;span&gt;Lottie Files for After Effects&lt;/span&gt;&lt;/a&gt; page and follow the instructions to install the latest version of the plugin. With the Lottie plugin installed, you will be ready to create a Lottie animation!&lt;/p&gt;
&lt;h2 id="toc-8atn-preparing-the-vector-file-in-adobe-illustrator"&gt;
&lt;span class="sectionnum"&gt;2.&lt;/span&gt; Prepare the vector file in Adobe Illustrator&lt;/h2&gt;
&lt;h3 id="toc-8fii-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Download the &lt;a href="https://elements.envato.com/roastbee-coffee-logo-9JCAYW4" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;&lt;span&gt;Roast Bee file from Envato&lt;/span&gt;&lt;/a&gt;, extract the compressed zip file, and locate the AI folder within. Open the &lt;strong&gt;Roastbee Logo.ai&lt;/strong&gt; file in Adobe Illustrator.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_7.png" alt="Opening the Roastbee Logo.ai" loading="lazy" width="870px" height="519px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_7.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_7.png" alt="Opening the Roastbee Logo.ai" loading="lazy" width="650px" height="390px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_7.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_7.png" alt="Opening the Roastbee Logo.ai" loading="lazy" width="380px" height="231px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_7.png 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-nviw-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Create a new AI file using the 1920x1080 film and television preset. Working in this size will ensure that we have an appropriately sized shape when we move it to After Effects, so that we don't need to refine it too much to make the animation work. Save it as &lt;strong&gt;Roastbee for Animation.ai&lt;/strong&gt;&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_18.jpg" alt="opening a new film &amp;amp; tv file" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_18.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_18.jpg" alt="opening a new film &amp;amp; tv file" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_18.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_18.jpg" alt="opening a new film &amp;amp; tv file" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_and_Finder_Workflow_Step_18.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Select the shape of the logo in the Roastbee Logo.ai file, copy it, and paste it into the new Roastbee for Animation.ai file you just created. Tweak the size and position to make sure it’s centered and completely contained within the artboard.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_14.jpg" alt="Roastbee logo placed in the new film and television file, Roastbee for Animation.ai" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_14.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_14.jpg" alt="Roastbee logo placed in the new film and television file, Roastbee for Animation.ai" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_14.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_14.jpg" alt="Roastbee logo placed in the new film and television file, Roastbee for Animation.ai" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_14.jpg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-56ac-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Most finalized logo files like this are &lt;strong&gt;outlined&lt;/strong&gt;, meaning that they are flattened shapes with a fill and no stroke. You will need to separate the wings from the flattened shape, but there are multiple ways to approach it. In this case, since the design lends itself to stroked vector lines and After Effects provides a lot more options to animate stroked vector lines, we will prepare it for that kind of workflow. Select the bee shape and go to &lt;strong&gt;Object &amp;gt; Path &amp;gt; Offset.&lt;/strong&gt; A negative offset of &lt;strong&gt;-24px &lt;/strong&gt;should move the vector lines to the center of the shape.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_16.png" alt="a negative offset will move the vector lines to the center of the shape" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_16.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_16.png" alt="a negative offset will move the vector lines to the center of the shape" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_16.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_16.png" alt="a negative offset will move the vector lines to the center of the shape" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_16.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to accept the offset. Illustrator will make a copy of the shape with the negative offset applied. Select everything except the new offset lines, change the fill color so that you can see the offset shapes on top of it, and lock it in the &lt;strong&gt;Layers&lt;/strong&gt; panel so that it cannot be accessed.&lt;/p&gt;
&lt;h3 id="toc-5kly-step-4"&gt;Step 4&lt;/h3&gt;
&lt;p&gt;Even though the vector lines are in the center of the shape, it is still an outlined shape with a fill. You will need to clean up the lines so that there is a single open-ended vector line for each shape.&lt;/p&gt;
&lt;p&gt;Think about which parts you want to animate separately. Use the &lt;strong&gt;Direct Selection Tool (A) &lt;/strong&gt;to select points where those lines connect with other parts of the design, then press the &lt;strong&gt;Cut&lt;/strong&gt; button on the floating toolbar to break the connection. Let’s start with the head and separate it from the antennae. Hold &lt;strong&gt;Shift &lt;/strong&gt;and click the points where the head connects with the antennae to select them.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_25_png.jpeg" alt="selecting the points where the head connects to the antennae" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_25_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_25_png.jpeg" alt="selecting the points where the head connects to the antennae" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_25_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_25_png.jpeg" alt="selecting the points where the head connects to the antennae" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_25_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Then click the &lt;strong&gt;Cut&lt;/strong&gt; button on the floating toolbar to separate the head from the antennae shapes.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_26_png.jpeg" alt="click the cut button on the floating tool bar" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_26_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_26_png.jpeg" alt="click the cut button on the floating tool bar" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_26_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_26_png.jpeg" alt="click the cut button on the floating tool bar" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_26_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-c4t5-step-5"&gt;Step 5&lt;/h3&gt;
&lt;p&gt;Make sure all the paths are open. As you work through the lines, you will find that some of them are closed paths. Select points on the end of the shape, and delete them to get a single open line roughly at the center of the original shape. We will add a thick stroke to the lines later to get the original design.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_27.jpg" alt="selecting the points at the end of a line and deleting them" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_27.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_27.jpg" alt="selecting the points at the end of a line and deleting them" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_27.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_27.jpg" alt="selecting the points at the end of a line and deleting them" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_27.jpg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-0nev-step-6"&gt;Step 6&lt;/h3&gt;
&lt;p&gt;Select all with &lt;strong&gt;Command-A&lt;/strong&gt;, and then swap the fill and outline in the toolbar. This will allow you to see which shapes are still closed and need to be opened and cleaned up as you work through the rest of the shapes.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_31.png" alt="swap the fill and stroke to see the outlined shapes that need to be cleaned up" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_31.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_31.png" alt="swap the fill and stroke to see the outlined shapes that need to be cleaned up" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_31.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_31.png" alt="swap the fill and stroke to see the outlined shapes that need to be cleaned up" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_31.png 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-2khi-step-7"&gt;Step 7&lt;/h3&gt;
&lt;p&gt;At the bottom, near the bee’s stinger, the negative offset produced some messy results. You can delete the multiple shapes on the right side of the abdomen, clean up the line on the left of the abdomen, and then reflect it.&lt;/p&gt;
&lt;p&gt;Cut the lines that make up the stripes of the abdomen from the outline using the &lt;strong&gt;Direct Selection Tool (A)&lt;/strong&gt; and the &lt;strong&gt;Cut&lt;/strong&gt; command that we’ve been using for the rest of the shapes.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_91_png.jpeg" alt="Cutting the stripe line off of the abdomen outline" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_91_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_91_png.jpeg" alt="Cutting the stripe line off of the abdomen outline" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_91_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_91_png.jpeg" alt="Cutting the stripe line off of the abdomen outline" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_91_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Use the &lt;strong&gt;Direct Selection Tool (A)&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;to select the points on the right side of the abdomen and delete them.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_112_png.jpeg" alt="delete the messy outline points on the right side of the abdomen" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_112_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_112_png.jpeg" alt="delete the messy outline points on the right side of the abdomen" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_112_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_112_png.jpeg" alt="delete the messy outline points on the right side of the abdomen" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_112_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;The left side of the abdomen outline is also messy, but it is at least a single solid line. Delete the points that create a closed outline so that you have a single open line, as we did with the antennae and other lines.&lt;/p&gt;
&lt;p&gt;When you have a single line for the left side of the abdomen, select it, and then use &lt;strong&gt;Object &amp;gt; Path &amp;gt; Simplify&lt;/strong&gt; to reduce the complexity as much as possible while retaining the curve of the abdomen outline.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_138.jpg" alt="use the object&amp;gt;path&amp;gt;simplify to reduce the complexity of the line" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_138.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_138.jpg" alt="use the object&amp;gt;path&amp;gt;simplify to reduce the complexity of the line" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_138.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_138.jpg" alt="use the object&amp;gt;path&amp;gt;simplify to reduce the complexity of the line" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_138.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Reflect the line with &lt;strong&gt;Object &amp;gt; Transform &amp;gt; Reflect&lt;/strong&gt; and click &lt;strong&gt;Copy&lt;/strong&gt; on the reflect dialog box to make a reflected duplicate of the line.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_142_png.jpeg" alt="click copy on the reflect dialogue box" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_142_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_142_png.jpeg" alt="click copy on the reflect dialogue box" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_142_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_142_png.jpeg" alt="click copy on the reflect dialogue box" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_142_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Finally, move the reflected line to the right so that the end near the stinger snaps to the end of the left line. Join the reflected line on the right with the left line by dragging a box over both with the &lt;strong&gt;Direct Selection Tool (A) &lt;/strong&gt;and clicking &lt;strong&gt;Join&lt;/strong&gt; on the floating toolbar.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_161_png.jpeg" alt="joining the left and right sides of the abdomen line" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_161_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_161_png.jpeg" alt="joining the left and right sides of the abdomen line" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_161_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_161_png.jpeg" alt="joining the left and right sides of the abdomen line" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_161_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Finally, join the abdomen with the head shape the same way. This will create a single closed shape from the head and abdomen lines.&lt;/p&gt;
&lt;p&gt;Continue using these techniques to clean up the rest of the design. You can also save some time by cleaning up one wing and then using the reflect technique to make the opposite wing.&lt;/p&gt;
&lt;h3 id="toc-t3al-step-8"&gt;Step 8&lt;/h3&gt;
&lt;p&gt;Once you've cleaned up the rest of the design, there should be a single line for each of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Left antenna&lt;/li&gt;
&lt;li&gt;Right antenna&lt;/li&gt;
&lt;li&gt;Left wing&lt;/li&gt;
&lt;li&gt;Right wing&lt;/li&gt;
&lt;li&gt;Abdomen &amp;amp; head combined (this is the only closed line)&lt;/li&gt;
&lt;li&gt;Stripe 1 (the upper abdomen stripe)&lt;/li&gt;
&lt;li&gt;Stripe 2 (the lower abdomen stripe)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also increase the stroke weight if you'd like to make sure that it’s close to the original design. However, we will add the stroke in After Effects, so it’s not necessary to do it in Illustrator.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_191.jpg" alt="clean up complete" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_191.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_191.jpg" alt="clean up complete" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_191.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_191.jpg" alt="clean up complete" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_Illustrator_2025_Workflow_Step_191.jpg 2x"&gt;&lt;/figure&gt;
&lt;h2 id="toc-6l2v-animating-in-after-effects"&gt;
&lt;span class="sectionnum"&gt;3.&lt;/span&gt; Animate in After Effects&lt;/h2&gt;
&lt;p&gt;We need to get the vectors from &lt;a href="https://design.tutsplus.com/compatible-with/adobe-illustrator" target="_blank" rel="noopener"&gt;Illustrator&lt;/a&gt; to &lt;a href="https://photography.tutsplus.com/video/compatible-with/adobe-after-effects" target="_blank" rel="noopener"&gt;After Effects&lt;/a&gt; while keeping them in the correct position relative to each other. After Effects allows us to paste vectors from Illustrator directly into After Effects as masks, but unfortunately masks lack the control of shape layers when it comes to animating.&lt;/p&gt;
&lt;p&gt;Masks are also not vector layers, which we'll need when we create a Lottie animation. They are vector masks applied to raster layers. Pasting our vectors from Illustrator into a mask on a solid layer is a quick way to get them into After Effects while maintaining positioning, though.&lt;/p&gt;
&lt;h3 id="toc-xkmv-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Select all of the newly cleaned lines and use &lt;strong&gt;Command-C&lt;/strong&gt; to copy them. Open After Effects, close any tutorials or new file creation dialog boxes that it opens, and click &lt;strong&gt;New Composition&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Then use the preset for &lt;strong&gt;Social Media Landscape&lt;/strong&gt; in HD at 1920x1080, setting the length of the animation to about 5 seconds.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_5.jpg" alt="new composition creation settings in After Effects" loading="lazy" width="870px" height="457px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_5.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_5.jpg" alt="new composition creation settings in After Effects" loading="lazy" width="650px" height="344px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_5.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_5.jpg" alt="new composition creation settings in After Effects" loading="lazy" width="380px" height="205px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_5.jpg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-5y7m-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Create a new &lt;strong&gt;Solid Layer&lt;/strong&gt; by clicking in the timeline panel and pressing &lt;strong&gt;Command-Y.&lt;/strong&gt; In the dialog box, we can leave the default color—just make sure it’s set to the composition size of 1920x1080 and click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_23.jpg" alt="solid settings dialogue box" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_23.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_23.jpg" alt="solid settings dialogue box" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_23.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_23.jpg" alt="solid settings dialogue box" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_23.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;With the new solid still active, press &lt;strong&gt;Command-V&lt;/strong&gt; to paste the vector shapes we copied from Illustrator, and they will be applied to the solid as vector masks. In the timeline, you will need to expand the layer and expand the masks property to access them individually.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_34.png" alt="the solid with the applied vector masks" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_34.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_34.png" alt="the solid with the applied vector masks" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_34.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_34.png" alt="the solid with the applied vector masks" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_34.png 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-bnkj-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;You will need to move the vectors over to a shape layer. Keeping them separated will give you the most control over the animation. &lt;strong&gt;Right-click &lt;/strong&gt;in the space in the left section of the timeline panel, and click &lt;strong&gt;Shape Layer.&lt;/strong&gt; This will contain our vectors.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_28.png" alt="creating a shape layer" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_28.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_28.png" alt="creating a shape layer" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_28.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_28.png" alt="creating a shape layer" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_28.png 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-f7hl-step-4"&gt;Step 4&lt;/h3&gt;
&lt;p&gt;Now we need to move the vectors over from the raster solid layer. Expand the solid layer, expand masks, and expand the last mask at the bottom. Then, click the &lt;strong&gt;Mask Path &lt;/strong&gt;property and press &lt;strong&gt;Command-C&lt;/strong&gt; to copy the vector path. Now expand the &lt;strong&gt;Shape Layer&lt;/strong&gt; that you created earlier and click &lt;strong&gt;Add &amp;gt; Path.&lt;/strong&gt;&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_38.png" alt="adding the path to the shape layer" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_38.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_38.png" alt="adding the path to the shape layer" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_38.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_38.png" alt="adding the path to the shape layer" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_38.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Make sure the playhead is at the first frame of the timeline (it should be by default). Then expand the path you just created, expand the &lt;strong&gt;Path property &lt;/strong&gt;under it, and click the &lt;strong&gt;Stopwatch&lt;/strong&gt; to create a keyframe. This keyframe is necessary to contain the vector data from our mask. Now press &lt;strong&gt;Command-V&lt;/strong&gt; to paste the vector data we copied from the mask.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_40.png" alt="add the keyframe to the path property" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_40.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_40.png" alt="add the keyframe to the path property" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_40.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_40.png" alt="add the keyframe to the path property" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_40.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Make sure to name the path. I use the following convention in this project: &lt;code&gt;[Item][side][purpose]&lt;/code&gt;. So you’ll see the left wing is named &lt;strong&gt;Wing L&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="toc-fgij-step-5"&gt;Step 5&lt;/h3&gt;
&lt;p&gt;You’ll need to repeat the previous step for each of the shapes. In this case, there aren’t that many, so it doesn’t take long. For larger projects with more vectors, there are plugins that will automate the process, but figuring out which shape is which and organizing them still takes time.&lt;/p&gt;
&lt;p&gt;Once all the shapes are copied over, you’re done with the solid layer, and you can delete it (or hide it at least if you want to keep it around for some reason).&lt;/p&gt;
&lt;h3 id="toc-lv99-step-6"&gt;Step 6&lt;/h3&gt;
&lt;p&gt;On the &lt;strong&gt;Shape &lt;/strong&gt;layer, click &lt;strong&gt;Add &amp;gt; Stroke&lt;/strong&gt;. This stroke will apply to all of the paths above it within the same group.&lt;/p&gt;
&lt;p&gt;It’s worth mentioning how crucial groups are in After Effects. Groups have &lt;strong&gt;Transform Properties&lt;/strong&gt; that control all of the shapes within. Groups can also separate fills and strokes so that you can apply a fill or stroke only to the vectors in the same group or to all the groups above it. Using groups allows you to control shapes independently and together, and it also simplifies rigging.&lt;/p&gt;
&lt;h3 id="toc-byr3-step-7"&gt;Step 7&lt;/h3&gt;
&lt;p&gt;Click &lt;strong&gt;Add  &amp;gt; Group (Empty)&lt;/strong&gt; and name it &lt;strong&gt;Wing L xform&lt;/strong&gt; since this is the group we will use to animate the left wing. Drag the left wing into the group you just created, and do the same for the right wing, naming the group &lt;strong&gt;Wing R xform. &lt;/strong&gt;Then drag both groups to the top of the stack in the shape layer. You can also expand both groups and see that not only do they have the wing paths we dragged into them, but they also have transform properties.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_161.png" alt="expanded groups with the paths inside and transform properties" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_161.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_161.png" alt="expanded groups with the paths inside and transform properties" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_161.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_161.png" alt="expanded groups with the paths inside and transform properties" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_161.png 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-m5i5-step-8"&gt;Step 8&lt;/h3&gt;
&lt;p&gt;Expand the &lt;strong&gt;Wing L xform&lt;/strong&gt; group and expand the transform property within. We will need to adjust the anchor point since we want the wing to rotate around the last vector point on the right where the wing and right wing touch. 2D transform properties in After Effects are listed in alphabetical order: &lt;strong&gt;X (horizontal)&lt;/strong&gt; and &lt;strong&gt;Y (vertical)&lt;/strong&gt;. Click and drag on the second number on the transform property for the &lt;strong&gt;Vertical Y Anchor Position &lt;/strong&gt;to move the anchor point so it’s over the correct point. Set it to about &lt;strong&gt;-67&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, this means the entire shape has moved &lt;em&gt;down&lt;/em&gt; to the anchor point. It’s an easy fix, though. Click and drag the &lt;strong&gt;Position &lt;/strong&gt;property’s pickwhip (the little spiral to the right of the position numbers) to the &lt;strong&gt;Anchor &lt;/strong&gt;property.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_164.png" alt="anchor point transformed" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_164.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_164.png" alt="anchor point transformed" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_164.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_164.png" alt="anchor point transformed" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_164.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;You’ll see the &lt;strong&gt;Position &lt;/strong&gt;property’s&lt;strong&gt; &lt;/strong&gt;numbers turn red, and they should match the numbers of the &lt;strong&gt;Anchor &lt;/strong&gt;property. The shape will also move back up to where it had been before.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_165.png" alt="the position numbers are red and match the anchor numbers" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_165.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_165.png" alt="the position numbers are red and match the anchor numbers" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_165.png 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_165.png" alt="the position numbers are red and match the anchor numbers" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_165.png 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Repeat this step for the right wing.&lt;/p&gt;
&lt;h3 id="toc-2f74-step-9"&gt;Step 9&lt;/h3&gt;
&lt;p&gt;We will only keyframe the left wing, and then we'll use a simple expression to make the right wing mirror it.&lt;/p&gt;
&lt;p&gt;Let’s go ahead and animate the left wing so we can see that everything is working when we link up the right wing. Expand the &lt;strong&gt;Transform &lt;/strong&gt;property&lt;strong&gt; &lt;/strong&gt;of the left wing if it isn’t already expanded. Click the &lt;strong&gt;Stopwatch&lt;/strong&gt; on the &lt;strong&gt;Rotation&lt;/strong&gt; property to start automatic keyframing. This will also create a keyframe under the playhead. Move the playhead forward about 5 frames and set the &lt;strong&gt;Rotation&lt;/strong&gt; to about &lt;strong&gt;-14 degrees&lt;/strong&gt;.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_175_png.jpeg" alt="-14 degree rotation" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_175_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_175_png.jpeg" alt="-14 degree rotation" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_175_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_175_png.jpeg" alt="-14 degree rotation" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_175_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Move the playhead forward another 5 frames, and then select the first keyframe and press &lt;strong&gt;Command-C&lt;/strong&gt; to copy and &lt;strong&gt;Command-V &lt;/strong&gt;to paste at the playhead so that the wing returns to its initial state.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_179_png.jpeg" alt="pasting first keyframe" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_179_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_179_png.jpeg" alt="pasting first keyframe" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_179_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_179_png.jpeg" alt="pasting first keyframe" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_179_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Then move the playhead forward another 5 frames and set the &lt;strong&gt;Rotation&lt;/strong&gt; &lt;strong&gt;Property&lt;/strong&gt; to about &lt;strong&gt;23 degrees&lt;/strong&gt;. We can refine these values later.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_181_png.jpeg" alt="setting the upper rotation" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_181_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_181_png.jpeg" alt="setting the upper rotation" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_181_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_181_png.jpeg" alt="setting the upper rotation" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_181_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Move the playhead 5 more frames forward, select all of the keyframes you created, and press &lt;strong&gt;Command-C&lt;/strong&gt; to copy and &lt;strong&gt;Command-V &lt;/strong&gt;to paste all of them and get a longer cycle. Move the playhead to the last keyframe and press &lt;strong&gt;N&lt;/strong&gt; to set the end of the work area so that when you press &lt;strong&gt;Space&lt;/strong&gt; to play the animation, it will loop.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_185_png.jpeg" alt="All of the keyframes pasted" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_185_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_185_png.jpeg" alt="All of the keyframes pasted" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_185_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_185_png.jpeg" alt="All of the keyframes pasted" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_185_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-pfob-step-10"&gt;Step 10&lt;/h3&gt;
&lt;p&gt;Expand the transform properties for the &lt;strong&gt;Wing R xform&lt;/strong&gt; group, and then click the pickwhip on the &lt;strong&gt;Rotation&lt;/strong&gt; property and drag it to the &lt;strong&gt;Rotation &lt;/strong&gt;property of the &lt;strong&gt;Wing L xform &lt;/strong&gt;group.&lt;/p&gt;
&lt;p&gt;This copies the exact values but doesn’t quite give us what we want. Notice that that the values are now red, indicating that the &lt;strong&gt;Rotation &lt;/strong&gt;property is linked to the left wing’s rotation property. Expand the &lt;strong&gt;Rotation &lt;/strong&gt;property to see the expression linking it to the &lt;strong&gt;Wing L xform Rotation &lt;/strong&gt;property. Click the expression and add &lt;strong&gt;*-1&lt;/strong&gt; to the end to multiply by negative 1.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_196_png_2.jpeg" alt="multiply the expression by negative 1" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_196_png_2.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_196_png_2.jpeg" alt="multiply the expression by negative 1" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_196_png_2.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_196_png_2.jpeg" alt="multiply the expression by negative 1" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_196_png_2.jpeg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-6jpy-step-11"&gt;Step 11&lt;/h3&gt;
&lt;p&gt;Select the &lt;strong&gt;Shape&lt;/strong&gt; layer and click &lt;strong&gt;Add &amp;gt; Stroke&lt;/strong&gt;.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_204_png.jpeg" alt="add a stroke" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_204_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_204_png.jpeg" alt="add a stroke" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_204_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_204_png.jpeg" alt="add a stroke" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_204_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Expand it and select a color. If you want to use the color from the original illustration (the gold lines), use hex code &lt;code&gt;#D6AC84&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Set the &lt;strong&gt;Stroke Width&lt;/strong&gt; to &lt;strong&gt;51&lt;/strong&gt; and the &lt;strong&gt;Line Cap &lt;/strong&gt;to &lt;strong&gt;Round Cap.&lt;/strong&gt; Make sure the stroke is at the bottom of the shape layer stack, under all of the paths and groups, so that it applies to all of them.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_217_png.jpeg" alt="stroke details" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_217_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_217_png.jpeg" alt="stroke details" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_217_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_217_png.jpeg" alt="stroke details" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_217_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-vbwk-step-12"&gt;Step 12&lt;/h3&gt;
&lt;p&gt;The wings will need to be filled to cover the lines of the body below when the wings move. We need to make modified versions of the wings to get the fill to look correct, though. Select the &lt;strong&gt;Wing L xform &lt;/strong&gt;group, press &lt;strong&gt;Command-&lt;/strong&gt;&lt;strong&gt;D &lt;/strong&gt;to duplicate it, and rename the new wing group &lt;strong&gt;Wing L Fill&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Then, with the new group active, click &lt;strong&gt;Add &amp;gt; Fill&lt;/strong&gt;. Set the fill color to the background color of the original illustration, &lt;code&gt;#1A2632&lt;/code&gt;. You will also need to make sure the &lt;strong&gt;Wing L Fill&lt;/strong&gt; group is underneath the &lt;strong&gt;Wing L xform &lt;/strong&gt;group so that we can add the stroke on top of the fill later.&lt;/p&gt;
&lt;h3 id="toc-1lyh-step-13"&gt;Step 13&lt;/h3&gt;
&lt;p&gt;Expand the &lt;strong&gt;Path &lt;/strong&gt;property in the &lt;strong&gt;Wing L Fill&lt;/strong&gt; group, double-click the point at the center of the shape to select it, and then press &lt;strong&gt;Delete&lt;/strong&gt; on the keyboard to delete it.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_279.jpg" alt="deleting the center point" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_279.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_279.jpg" alt="deleting the center point" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_279.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_279.jpg" alt="deleting the center point" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_279.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Continue deleting points up to the top of the wing until it looks like this.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_285.jpg" alt="the points deleted." loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_285.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_285.jpg" alt="the points deleted." loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_285.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_285.jpg" alt="the points deleted." loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_Adobe_Illustrator_2025_Workflow_Step_285.jpg 2x"&gt;&lt;/figure&gt;
&lt;p&gt;Now the &lt;strong&gt;Wing L Fill&lt;/strong&gt; group is keyframed just like the &lt;strong&gt;Wing L xform&lt;/strong&gt; group. If you want to make it procedural, you can expand the &lt;strong&gt;Transform&lt;/strong&gt; properties of the &lt;strong&gt;Wing L Fill&lt;/strong&gt; group, delete the keyframes on its &lt;strong&gt;Rotation &lt;/strong&gt;property, and pickwhip it to the &lt;strong&gt;Wing L xform &lt;/strong&gt;group’s &lt;strong&gt;Rotation &lt;/strong&gt;property.&lt;strong&gt; &lt;/strong&gt;This way, the entire animation is controlled by a single set of keyframes.&lt;/p&gt;
&lt;h3 id="toc-w26f-step-14"&gt;Step 14&lt;/h3&gt;
&lt;p&gt;Repeat steps 12 and 13 for the right wing.&lt;/p&gt;
&lt;h3 id="toc-rwum-step-15"&gt;Step 15&lt;/h3&gt;
&lt;p&gt;Finally, just duplicate the stroke you created earlier twice by selecting it and pressing &lt;strong&gt;Command-D&lt;/strong&gt;, and put one copy in each of the &lt;strong&gt;Wing L xform&lt;/strong&gt; groups to add a stroke over the fill. You can also create a group for the body and a group for the stripes, and then put a duplicate of the fill in the body group and a duplicate of the stroke in the stripes group.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_67.jpg" alt="Finished vector setup" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_67.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_67.jpg" alt="Finished vector setup" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_67.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_67.jpg" alt="Finished vector setup" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_67.jpg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-4sbn-step-16"&gt;Step 16&lt;/h3&gt;
&lt;p&gt;Adjust the keyframes as needed to get the look you want in your animation. When you're done, go to &lt;strong&gt;Composition &amp;gt; Trim Comp To Work Area&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="toc-zyuv-how-to-create-the-lottie-animation"&gt;
&lt;span class="sectionnum"&gt;4.&lt;/span&gt; How to create the Lottie animation&lt;/h2&gt;
&lt;h3 id="toc-wb2e-step-1"&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Now, let's start creating our Lottie animation. Go to &lt;strong&gt;Window &amp;gt; Extensions &amp;gt; Lottie Files&lt;/strong&gt; to open the Lottie exporter. Sign in if prompted.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_125_png.jpeg" alt="opening the Lottie exporter" loading="lazy" width="870px" height="495px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_125_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_125_png.jpeg" alt="opening the Lottie exporter" loading="lazy" width="650px" height="372px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_125_png.jpeg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_125_png.jpeg" alt="opening the Lottie exporter" loading="lazy" width="380px" height="221px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_125_png.jpeg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-e487-step-2"&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Check the box for the &lt;strong&gt;Roast Bee&lt;/strong&gt; composition and click &lt;strong&gt;Render&lt;/strong&gt; at the bottom of the exporter interface. Since we prepared the entire animation as a vector layer within After Effects, everything should be supported fully by Lottie.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_126.jpg" alt="Click Render" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_126.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_126.jpg" alt="Click Render" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_126.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_126.jpg" alt="Click Render" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_126.jpg 2x"&gt;&lt;/figure&gt;
&lt;h3 id="toc-2fkz-step-3"&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Now you can click &lt;strong&gt;Upload&lt;/strong&gt; to send your animated Lottie logo to your LottieFiles account and embed it in web projects from there. You can also download the animation as any of the supported file types for use locally. &lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_137.jpg" alt="download lottie" loading="lazy" width="870px" height="569px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_137.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_137.jpg" alt="download lottie" loading="lazy" width="650px" height="427px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_137.jpg 2x"&gt;&lt;img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_137.jpg" alt="download lottie" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2824/posts/109175/image-upload/Adobe_After_Effects_and_CEPHtmlEngine_Helper_Renderer_Workflow_Step_137.jpg 2x"&gt;&lt;/figure&gt;
&lt;h2 id="toc-y7qg-conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Lottie is a very powerful way to create lightweight vector animations, but it requires some significant setup when using After Effects, since After Effects is a primarily raster-based editing application. Preparing your animation appropriately using vector-based shape layers in After Effects greatly improves support but requires some setup.&lt;/p&gt;
&lt;p&gt;I hope you found this tutorial helpful. Be sure to check out this post from the &lt;a href="https://elements.envato.com/learn/envato-ai-features" target="_blank" rel="noopener" data-action="click-&amp;gt;ga-analytics#sendElementsClickEvent"&gt;Envato blog&lt;/a&gt;, and any of these articles from Envato Tuts+!&lt;/p&gt;
&lt;ul class="roundup-block__contents posts--half-width roundup-block--list"&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/how-to-customise-lottie-animations-free-editor--cms-38695"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/38695/preview_image/lottie_ae.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to edit Lottie animations for free in your browser, After Effects not required&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Marie Gardiner&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;30 Aug 2024&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/how-to-make-talking-avatar-after-effects-cartoon-animator--cms-36755"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/36755/preview_image/mouths.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/36755/preview_image/mouths.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/36755/preview_image/mouths.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/36755/preview_image/mouths.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/36755/preview_image/mouths.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/36755/preview_image/mouths.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to Make a Talking Avatar With Cartoon Animator and After Effects&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Jonathan Lam&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;12 Jul 2024&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-text-animation-lottie--cms-109140"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/posts/109140/preview_image/ComicBookTextAnimationPreview.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a Lottie text animation&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/158/profiles/957/profileImage/PORTRAIT_2025_400x400_Tuts_.png 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Andrei Marius&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;07 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class="roundup-block__content"&gt;&lt;a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-lottie-animation--cms-109162"&gt;&lt;div class="roundup-block__content-container"&gt;
&lt;div class="roundup-block__preview"&gt;
&lt;img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;&lt;img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/107/posts/109162/preview_image/33_Lottie_Animation_Cat_Thumbnail.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__content-meta"&gt;
&lt;div class="roundup-block__content-title"&gt;How to create a Lottie animation&lt;/div&gt;
&lt;div class="roundup-block__author-info"&gt;
&lt;div class="roundup-block__author-profile-image"&gt;
&lt;img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;&lt;img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/107/profiles/2394/profileImage/EeVohH6x3GY.jpg 2x"&gt;
&lt;/div&gt;
&lt;div class="roundup-block__author-meta"&gt;
&lt;div class="roundup-block__author-name"&gt;Yulia Sokolova&lt;/div&gt;
&lt;div class="roundup-block__published-date"&gt;18 Apr 2025&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="mediafed_ad"&gt;&lt;img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/668810/s/109175/sc/4/mf.gif" width="1" /&gt;&lt;a href="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109175/a2.htm"&gt;&lt;img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109175/a2.img" /&gt;&lt;/a&gt;&lt;img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/668810/c/35227/s/109175/a2t.img" width="1" /&gt;&lt;/div&gt;</description></item></channel></rss>