<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harshita Sharma D</title>
    <description>The latest articles on DEV Community by Harshita Sharma D (@harshitads44217).</description>
    <link>https://dev.to/harshitads44217</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1464175%2F616bd97f-0f7d-4404-bcc3-3f7f69da48ff.jpg</url>
      <title>DEV Community: Harshita Sharma D</title>
      <link>https://dev.to/harshitads44217</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshitads44217"/>
    <language>en</language>
    <item>
      <title>The Hidden Guests in Your Windows PC — A Disk Cleanup Diary - part1</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Tue, 07 Apr 2026 11:04:40 +0000</pubDate>
      <link>https://dev.to/harshitads44217/the-hidden-guests-in-your-windows-pc-a-disk-cleanup-diary-part1-2fhl</link>
      <guid>https://dev.to/harshitads44217/the-hidden-guests-in-your-windows-pc-a-disk-cleanup-diary-part1-2fhl</guid>
      <description>&lt;p&gt;&lt;em&gt;The Hidden Guests in Your Windows PC — A Disk Cleanup Diary&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It started the way most digital rabbit holes do — innocently. I had been meaning to clean up my PC for months. Drives getting a little sluggish, the "Low Disk Space" notification becoming a recurring visitor, and that nagging guilt every time I opened File Explorer and saw the C: drive bar inching toward red.&lt;/p&gt;

&lt;p&gt;So one afternoon, I rolled up my sleeves, opened  &lt;code&gt;C:\Program Files&lt;/code&gt;, and decided to go folder by folder, hunting for digital clutter I could finally evict.&lt;br&gt;
That's when I met &lt;strong&gt;RUXIM&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wait — What Is RUXIM, and Why Is It On My PC?
&lt;/h2&gt;

&lt;p&gt;There it sat: a folder called &lt;code&gt;RUXIM&lt;/code&gt;, right in &lt;code&gt;C:\Program Files&lt;/code&gt;, with no explanation, no mention in "Add or Remove Programs," and an icon that looks vaguely like the Windows Update logo. Inside, two mysterious executables &lt;code&gt;RUXIMICS.exe&lt;/code&gt; and &lt;code&gt;RUXIMIH.exe&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;My first instinct? "This is probably a virus."&lt;br&gt;
It wasn't.&lt;/p&gt;

&lt;p&gt;RUXIMICS.exe is a legitimate executable belonging to the Microsoft Windows operating system. Its full name is "Reusable UX Interaction Manager," and it is also referred to as the RUXIM Interaction Campaign Scheduler. The file is digitally signed by Microsoft and is typically located in &lt;code&gt;C:\Program Files\ruxim\.&lt;/code&gt; &lt;a href="https://www.file.net/process/ruximics.exe.html" rel="noopener noreferrer"&gt;File.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In plain terms: RUXIM is a component used by Windows Update. It helps keep Windows updated and performing well by scheduling and delivering necessary updates — think of it like the logistics department of a company that makes sure all updates are scheduled and delivered properly. &lt;a href="https://www.windowsdigitals.com/what-is-ruxim-folder-in-program-files/" rel="noopener noreferrer"&gt;WindowsDigitals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The two executables have distinct roles. &lt;code&gt;RUXIMICS.exe&lt;/code&gt; usually stays in the background with minimal impact on system performance, while &lt;code&gt;RUXIMIH.exe&lt;/code&gt; — the RUXIM Interaction Handler — takes care of the "interaction campaigns," ensuring your OS receives updates properly. &lt;a href="https://www.windowsdigitals.com/what-is-ruxim-folder-in-program-files/" rel="noopener noreferrer"&gt;WindowsDigitals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So should you delete it? It's not recommended. Once deleted, you may encounter issues like Windows updates failing or poor system performance. Deleting it may also expose your system to potential security risks. &lt;a href="https://www.partitionwizard.com/news/what-is-ruxim.html" rel="noopener noreferrer"&gt;MiniTool Partition Wizard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One real red flag to watch for: if the RUXIM folder appears outside the Program Files directory, you should perform a virus scan using Windows Security or your antivirus software, since legitimate system files can be impersonated by malware. &lt;a href="https://www.file.net/process/ruximics.exe.html" rel="noopener noreferrer"&gt;File.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verdict: Leave it alone. It's Windows doing its job quietly in the background.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  And Then There Was "Nagware"
&lt;/h2&gt;

&lt;p&gt;A few folders down, another mystery: a reference to something called Nagware.&lt;/p&gt;

&lt;p&gt;If you've ever used WinRAR and seen that pop-up after the 40-day trial begging you to buy the full version —congratulations, you've been nagware'd.&lt;/p&gt;

&lt;p&gt;Nagware (also known as begware, annoyware, or a nagscreen) refers to a type of software that is initially free to use but frequently interrupts you with prompts or reminders. These interruptions typically ask you to purchase a full version of the software or subscribe to a service. &lt;a href="https://www.lenovo.com/us/en/glossary/nagware/" rel="noopener noreferrer"&gt;Lenovo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some nagware keeps the message up for a certain period of time, forcing the user to wait before continuing to use the program. The reminder window that appears on screen is referred to as the nag screen. &lt;a href="https://computerhelp4all.com/articles/what-is-nagware.html" rel="noopener noreferrer"&gt;Computerhelp4all&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The term is almost poetic in its accuracy — it nags you. Some familiar examples: WinRAR continues to function even after its trial period, but with a nagging screen that appears every time it opens, reminding users to purchase the full version. AVG AntiVirus Free is another example, frequently displaying pop-up notifications encouraging users to upgrade to premium. &lt;a href="https://www.devx.com/terms/nagware/" rel="noopener noreferrer"&gt;DevX&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even Microsoft itself has been guilty. Microsoft has employed its tactic of full-screen nag screens, displaying prompts urging users to "Get even more out of Windows" and highlighting services like OneDrive, Windows Hello, and Office 365 — resembling the first-boot experience, and appearing again after every reboot or update. &lt;a href="https://www.techradar.com/news/microsofts-windows-10-nag-screens-are-back-with-a-vengeance" rel="noopener noreferrer"&gt;TechRadar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nagware isn't a virus and it isn't technically harmful — but it can contribute to software bloat if the reminders are part of an increasing number of unnecessary features, or if the reminders themselves are resource-intensive, requiring more storage space and processing power that can slow down your system. &lt;a href="https://www.lenovo.com/us/en/glossary/nagware/" rel="noopener noreferrer"&gt;Lenovo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verdict: Not dangerous, but worth knowing what's nagging you and why.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Other Dusty Folders You've Probably Ignored
&lt;/h2&gt;

&lt;p&gt;Once I started looking, I couldn't stop. Here's a quick field guide to the folders you've walked past a hundred times:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$WINDOWS.~BT&lt;/code&gt; and &lt;code&gt;$Windows.~WS&lt;/code&gt; — These mysterious dollar-sign folders that appear out of nowhere on your C: drive? They are Windows installation folders, usually associated with version upgrades. &lt;a href="https://www.askwoody.com/forums/topic/new-strange-folders-on-the-c-drive/" rel="noopener noreferrer"&gt;AskWoody&lt;/a&gt; They can be safely deleted via Disk Cleanup if the upgrade is complete.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PerfLogs&lt;/code&gt; — A folder sitting at the root of C: that most people assume is junk. It's actually where Windows stores performance logs, used by Event Viewer and Reliability Monitor. If you remove it, Windows will simply recreate it whenever performance logging is enabled again. &lt;a href="https://www.elevenforum.com/t/time-that-i-asked-what-are-these-folders-on-my-c-drive.29886/" rel="noopener noreferrer"&gt;Eleven Forum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Intel&lt;/code&gt; folder — If you have an Intel processor or graphics, you've probably noticed folders scattered across &lt;code&gt;C:\&lt;/code&gt;, &lt;code&gt;C:\Program Files\Intel&lt;/code&gt;, and &lt;code&gt;C:\Program Files (x86)\Intel&lt;/code&gt;. As one forum user memorably put it, Intel "acts like the annoying dog on your street, marking territory" by dropping installer files in random folders. &lt;a href="https://www.elevenforum.com/t/time-that-i-asked-what-are-these-folders-on-my-c-drive.29886/" rel="noopener noreferrer"&gt;Eleven Forum&lt;/a&gt; These are generally log or driver residue and can usually be cleaned up.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ESD&lt;/code&gt; folder — This is the installation staging files left behind by the Windows Media Creation Tool, and can be safely deleted. &lt;a href="https://learn.microsoft.com/en-us/answers/questions/4219593/esd-folder-in-c-drive" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Windows.old&lt;/code&gt; — If you recently upgraded Windows, this folder is your safety net. It contains your previous Windows installation so you can roll back within 10 days. After that window passes, you can delete it through Disk Cleanup to reclaim significant space (sometimes 10–20 GB).&lt;/p&gt;

&lt;h2&gt;
  
  
  My C: and D: Drive Cleanup — The Journey
&lt;/h2&gt;

&lt;p&gt;Here's what my cleanup process actually looked like, step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; The Audit. Before deleting anything, I ran Windows' built-in Disk Cleanup tool (search "Disk Cleanup" in the Start menu). More importantly, I clicked "Clean up system files" — this is the version that runs with admin privileges and catches a lot more, including Windows Update Cleanup files and old driver packages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Sorting out Program Files. After identifying RUXIM, nagware remnants, and other mystery folders, I made a simple rule — if it's Microsoft-signed and in the right directory, don't touch it. If it's a third-party trial program I no longer use, uninstall it properly through Settings &amp;gt; Apps, not by deleting folders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Tackling the Downloads folder. This was the real culprit. Years of downloaded installers, PDFs, zip files — some going back to 2019. A ruthless sweep here recovered nearly 15 GB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Moving files to D:. My D: drive was sitting at 40% usage while C: was gasping. Documents, photos, videos, project archives — all moved over. The key insight: your C: drive is for the operating system and programs, not your personal files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Clearing temp files. Hit Win + R, type %temp%, and delete everything in that folder. Then run it again with just temp. These are temporary files that programs forget to clean up themselves. Expect to recover anywhere from a few hundred MB to several GB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; The final check. I ran WinDirStat (a free tool that visualizes your disk usage as a colourful treemap) to see at a glance where the remaining space was going. That's how I found a rogue game install folder from 2021 that had been sitting there eating 22 GB.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Your PC is like a house you've lived in for years. Most of what's there has a reason — but some of it is just stuff that piled up while you weren't paying attention. RUXIM isn't a threat; it's a diligent worker you never introduced yourself to. Nagware is that pushy salesperson who won't stop leaving flyers in your letterbox. And the Downloads folder? That's just the junk drawer we all have.&lt;/p&gt;

&lt;p&gt;The cleanup didn't just free up space — it made me feel more in control of a machine I use every single day.&lt;/p&gt;

&lt;p&gt;Next time you're digging through your files and hit something unfamiliar, resist the urge to immediately delete it. Google it first. Most of the time, you'll find it's exactly like RUXIM — a quiet, harmless resident doing its job in the background, just waiting to be understood.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have a mysterious folder story of your own? Drop it in the comments — I'd love to know what surprised you when you went digging through your drives.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>microsoft</category>
    </item>
    <item>
      <title>How to make queues in next.js projects?</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Sat, 17 May 2025 10:28:30 +0000</pubDate>
      <link>https://dev.to/harshitads44217/how-to-make-queues-in-nextjs-projects-3cnp</link>
      <guid>https://dev.to/harshitads44217/how-to-make-queues-in-nextjs-projects-3cnp</guid>
      <description>&lt;p&gt;To implement queues in a Next.js project, you can use libraries like BullMQ or Redis Simple Message Queue (RSMQ).&lt;/p&gt;

&lt;p&gt;These libraries provide a way to manage background tasks and jobs, which can be helpful for tasks that shouldn't block the main application flow. You can also use dedicated services like Queuebase for more complex queue management needs. &lt;/p&gt;

&lt;p&gt;Here's a general approach using BullMQ and Redis:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set up Redis: Ensure you have Redis installed and running. You can use a local Redis instance or a cloud-based service. &lt;/li&gt;
&lt;li&gt;Install BullMQ and Redis: Run &lt;code&gt;npm install bullmq ioredis&lt;/code&gt; to install the necessary packages. &lt;/li&gt;
&lt;li&gt;Create a Queue: Create a queue using BullMQ, specifying connection details for Redis:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Queue&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bullmq&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Redis&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ioredis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;redisClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Redis&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;localhost&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6379&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt; &lt;span class="c1"&gt;// Or your Redis connection details&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myQueue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-queue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;localhost&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6379&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="c1"&gt;// Redis connection&lt;/span&gt;
      &lt;span class="na"&gt;defaultJobOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;removeOnComplete&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Automatically remove completed jobs&lt;/span&gt;
        &lt;span class="na"&gt;removeOnFail&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Automatically remove failed jobs&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Enqueue Jobs: Add jobs to the queue using myQueue.add(jobName, jobData, options):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;POST&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;myQueue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email-job&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;example@email.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;World&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Job added to queue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error adding job:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error adding job&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Process Jobs (Worker Process): Create a separate worker process to handle jobs from the queue. This can be a dedicated Node.js script running in the background:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Worker&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bullmq&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Redis&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ioredis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;redisClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Redis&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;localhost&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6379&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myQueue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-queue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;localhost&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6379&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Worker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-queue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// Process the job&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Processing job &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; with data:`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="c1"&gt;// Perform your task here (e.g., send email)&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Must return a promise&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure Worker: Add a script in your package.json to run the worker:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;worker&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node path/to/worker.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Start the Worker: Run the worker script: &lt;code&gt;npm run worker&lt;/code&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Key Considerations:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error Handling:&lt;/strong&gt;&lt;br&gt;
Implement robust error handling for both enqueuing and processing jobs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scaling:&lt;/strong&gt;&lt;br&gt;
Consider scaling your worker processes for increased performance and reliability. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Job Data:&lt;/strong&gt;&lt;br&gt;
Design your job data efficiently to avoid unnecessary data transfer and processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose the Right Library:&lt;/strong&gt;&lt;br&gt;
Select a queueing library that best fits your project's needs and complexity. &lt;/p&gt;

&lt;p&gt;References:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-use-queues-in-web-applications/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/how-to-use-queues-in-web-applications/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/77188549/trying-to-build-a-queue-for-next-js-13-with-custom-api-bull-next-js-redis" rel="noopener noreferrer"&gt;https://stackoverflow.com/questions/77188549/trying-to-build-a-queue-for-next-js-13-with-custom-api-bull-next-js-redis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@asanka_l/integrating-bullmq-with-nextjs-typescript-f41cca347ef8" rel="noopener noreferrer"&gt;https://medium.com/@asanka_l/integrating-bullmq-with-nextjs-typescript-f41cca347ef8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ethanleetech/top-6-queue-management-solutions-for-your-nextjs-app-2024-mal"&gt;https://dev.to/ethanleetech/top-6-queue-management-solutions-for-your-nextjs-app-2024-mal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.quirrel.dev/getting-started/next-js/" rel="noopener noreferrer"&gt;https://docs.quirrel.dev/getting-started/next-js/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>What is Apache Server? Why do we use it?</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Fri, 04 Apr 2025 14:15:52 +0000</pubDate>
      <link>https://dev.to/harshitads44217/what-is-apache-server-why-do-we-use-it-1ibe</link>
      <guid>https://dev.to/harshitads44217/what-is-apache-server-why-do-we-use-it-1ibe</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k4wgv9fy5vncgwccxza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k4wgv9fy5vncgwccxza.png" alt="Image [Source](https://www.openlogic.com/blog/apache-http-server)" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.openlogic.com/blog/apache-http-server" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apache HTTP Server&lt;/strong&gt;, or simply &lt;strong&gt;Apache&lt;/strong&gt;, is a widely used, free, and open-source web server used to deliver web content (like websites and applications) over the internet, processing requests and serving web assets via HTTP or HTTPS. It is known for its ease of &lt;strong&gt;configuration&lt;/strong&gt;, &lt;strong&gt;scalability&lt;/strong&gt;, and &lt;strong&gt;stability&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  OK! So what it is?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdh6g5hq98j3rs8qh6ns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdh6g5hq98j3rs8qh6ns.png" alt="What is this?" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExdjMwejBzZWhxbmIxbWYzOGFhcXVqaWRtN21jbzBmZGJ4cXExcXl5cyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/WdC26ECYnvTX4Mp2fI/giphy.gif" rel="noopener noreferrer"&gt;Image source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apache is a software application that acts as a server, meaning it listens for requests from clients (like web browsers) and responds by sending back the requested web pages or other content. &lt;/p&gt;

&lt;h2&gt;
  
  
  How it works:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom611njfe64ec4ivrtdu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom611njfe64ec4ivrtdu.png" alt="Apache diagram" width="800" height="543"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.pkslow.com/archives/apache-httpd#google_vignette" rel="noopener noreferrer"&gt;Image source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you type a website address into your browser, your browser sends an HTTP request to the server where the website is hosted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlxe6pwt3t505gms0ppt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlxe6pwt3t505gms0ppt.png" alt="Apache install diagram" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.vultr.com/how-to-install-apache-web-server-on-ubuntu-24-04" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If that server is running Apache, Apache receives the request, locates the requested web page or content, and sends it back to your browser. &lt;/p&gt;

&lt;h2&gt;
  
  
  Here are the key features of Apache in a nutshell:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzev04gx6hhl04idglmih.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzev04gx6hhl04idglmih.gif" alt="Source: [link](https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExM2V3Mm42b3NkOWhxOTlxd2RuaDRmMndoOWg2bXU0bmY5czBkam1hMyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/Ru2aZREJacrDzWqvdt/giphy.gif)" width="400" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source and Free:&lt;/strong&gt;&lt;br&gt;
Apache is developed and maintained by the Apache Software Foundation, and it's freely available and open-source, meaning anyone can use, modify, and distribute it without cost. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Widely Adopted:&lt;/strong&gt;&lt;br&gt;
It's one of the most popular web servers, used by many web hosting companies and organizations worldwide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability and Stability:&lt;/strong&gt;&lt;br&gt;
Apache is designed to handle large volumes of traffic and maintain stability, making it suitable for various website types and applications. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of Configuration:&lt;/strong&gt;&lt;br&gt;
Apache is known for its relatively straightforward configuration, allowing users to set up and manage web servers with ease. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform for Static and Dynamic Content:&lt;/strong&gt;&lt;br&gt;
Apache can serve both static content (like images and HTML) and dynamic content generated by various programming languages and frameworks. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-Platform Support:&lt;/strong&gt;&lt;br&gt;
 It runs on various operating systems, including Windows, Linux, macOS, and Unix&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supports Multiple Protocols:&lt;/strong&gt;&lt;br&gt;
Apache supports various protocols, including HTTP, HTTPS, and more, enabling secure and flexible web communication. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt;&lt;br&gt;
 Apache supports secure communication using HTTPS, ensuring that data transmitted between the client and server is encrypted. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extensive Community and Support:&lt;/strong&gt;&lt;br&gt;
Being an open-source project, Apache benefits from a large community that provides support, documentation, and extensions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module-Based Architecture:&lt;/strong&gt;&lt;br&gt;
Apache's modular architecture allows for customization and extension through various modules, enabling users to tailor the server to specific needs. It can be extended with modules to add features like password authentication, caching, and security enhancements. &lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40pn65adjssthqa1fm3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40pn65adjssthqa1fm3b.png" alt="Apache works" width="800" height="630"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cloudfoundation.com/blog/what-is-apache/" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apache is used for a wide variety of websites, from small personal blogs to large e-commerce platforms. &lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives:
&lt;/h2&gt;

&lt;p&gt;While Apache is very popular, other web servers like Nginx also exist, and they may be preferred in certain situations, such as handling high traffic volumes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwhbbrwolnpnw7ivnl1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwhbbrwolnpnw7ivnl1v.png" alt="Apache" width="301" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sumologic.com/blog/apache-web-server-introduction/" rel="noopener noreferrer"&gt;https://www.sumologic.com/blog/apache-web-server-introduction/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.openlogic.com/blog/apache-http-server" rel="noopener noreferrer"&gt;https://www.openlogic.com/blog/apache-http-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.liquidweb.com/blog/apache-http-server-what-is-apache-web-server-used-for-about-apache-server/" rel="noopener noreferrer"&gt;https://www.liquidweb.com/blog/apache-http-server-what-is-apache-web-server-used-for-about-apache-server/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.liquidweb.com/blog/nginx-vs-apache/" rel="noopener noreferrer"&gt;https://www.liquidweb.com/blog/nginx-vs-apache/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cyberpanel.net/blog/what-is-apache-server-how-it-works" rel="noopener noreferrer"&gt;https://cyberpanel.net/blog/what-is-apache-server-how-it-works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techtarget.com/whatis/definition/Apache" rel="noopener noreferrer"&gt;https://www.techtarget.com/whatis/definition/Apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://httpd.apache.org/" rel="noopener noreferrer"&gt;https://httpd.apache.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.guvi.in/blog/how-does-apache-work" rel="noopener noreferrer"&gt;https://www.guvi.in/blog/how-does-apache-work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ionos.com/digitalguide/server/know-how/what-is-apache" rel="noopener noreferrer"&gt;https://www.ionos.com/digitalguide/server/know-how/what-is-apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://serverguy.com/what-is-apache-web-server" rel="noopener noreferrer"&gt;https://serverguy.com/what-is-apache-web-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kinsta.com/knowledgebase/what-is-apache" rel="noopener noreferrer"&gt;https://kinsta.com/knowledgebase/what-is-apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.elegantthemes.com/blog/wordpress/what-is-apache-web-server" rel="noopener noreferrer"&gt;https://www.elegantthemes.com/blog/wordpress/what-is-apache-web-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techtarget.com/whatis/definition/Apache" rel="noopener noreferrer"&gt;https://www.techtarget.com/whatis/definition/Apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.greengeeks.com/blog/what-is-apache" rel="noopener noreferrer"&gt;https://www.greengeeks.com/blog/what-is-apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloudfoundation.com/blog/what-is-apache/" rel="noopener noreferrer"&gt;https://cloudfoundation.com/blog/what-is-apache/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>backend</category>
      <category>devops</category>
      <category>php</category>
    </item>
    <item>
      <title>TERRA FlipFlop - Sustainable Footwear Solution - Wix Studio Challenge - My Submission</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Mon, 15 Jul 2024 06:59:00 +0000</pubDate>
      <link>https://dev.to/harshitads44217/terra-flipflop-sustainable-footwear-solution-wix-studio-challenge-my-submission-2m63</link>
      <guid>https://dev.to/harshitads44217/terra-flipflop-sustainable-footwear-solution-wix-studio-challenge-my-submission-2m63</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wix"&gt;Wix Studio Challenge &lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;In this submission, I'm excited to introduce TERRA fLIPfLPS, a sustainable flip flop brand built entirely on Wix Studio!  We're passionate about creating comfortable and stylish footwear while minimizing our environmental impact.&lt;/p&gt;

&lt;p&gt;Here's what sets TERRA FlipFlops apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Eco-Friendly Materials:&lt;/strong&gt; Our flip flops are crafted from sustainable materials, e.g., recycled tires, natural rubber, cork, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Durable Design:&lt;/strong&gt; We prioritize long-lasting construction to reduce waste and encourage responsible consumption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commitment to Sustainability:&lt;/strong&gt;  Eco-friendly practices in your production process, e.g., using recycled water, minimizing waste, or responsible sourcing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qtw26c8zet1p9llzvrk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qtw26c8zet1p9llzvrk.png" alt="STORE TERRA FLIPFLOPS" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Development Journey
&lt;/h2&gt;

&lt;p&gt;The user-friendly nature of Wix Studio allowed me to focus on the creative aspects of building the Terra Flip Flops website.  While I didn't require extensive coding experience, here are some key features that were instrumental:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customization Options:&lt;/strong&gt; Wix Studio's extensive design library and customization options enabled me to create a website that reflects Terra Flip Flops' unique brand voice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content Management System:&lt;/strong&gt; The intuitive content management system allowed for easy updates to product information, blog posts, and other website content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile-Responsive Design:&lt;/strong&gt; Ensuring the website is optimized for mobile devices is crucial for today's audience. Wix Studio's built-in mobile responsiveness ensured the website looks great on any screen size. UTILIZED WIX Velo API&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>wixstudiochallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Introducing FoodMood-Bot: Your WhatsApp Chef Tailoring Recipes to Your Mood - Twilio Challenge Submission 2024</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Mon, 24 Jun 2024 06:14:07 +0000</pubDate>
      <link>https://dev.to/harshitads44217/introducing-foodmood-bot-your-whatsapp-chef-tailoring-recipes-to-your-mood-twilio-challenge-submission-2024-4kj2</link>
      <guid>https://dev.to/harshitads44217/introducing-foodmood-bot-your-whatsapp-chef-tailoring-recipes-to-your-mood-twilio-challenge-submission-2024-4kj2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/twilio"&gt;Twilio Challenge v24.06.12&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmtl13leul5zzr9z4xvj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmtl13leul5zzr9z4xvj.png" alt="FoodMood-Whatsapp-Bot_post" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
. &lt;br&gt;
FoodMood-Bot is designed to enhance the cooking experience by providing mood-based recipe recommendations and personalized food-related assistance. It leverages the capabilities of Twilio and OpenAI to create an interactive and engaging user experience on WhatsApp.&lt;/p&gt;
&lt;h2&gt;
  
  
  Twilio and AI
&lt;/h2&gt;



&lt;p&gt;I used &lt;a href="https://www.twilio.com/docs/whatsapp/tutorial"&gt;Twilio's WhatsApp API&lt;/a&gt; to interact with users in real-time, collecting mood inputs and delivering tailored recipe suggestions and Openai's &lt;a href="https://platform.openai.com/docs/api-reference/chat/create"&gt;Chat completion&lt;/a&gt; and &lt;a href="https://platform.openai.com/docs/api-reference/images"&gt;Create Image&lt;/a&gt; APIs. OpenAI powers the bot's ability to understand and respond to user queries intelligently, ensuring that the food recommendations are both appropriate and enjoyable. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygxrrv5qtwpddczyhokj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygxrrv5qtwpddczyhokj.png" alt="Twilio WhatApp API Sandbox" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;



&lt;p&gt;Check out the live demo: &lt;a href="https://your-demo-link.com"&gt;FoodMood-Bot Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/harshitadharamansharma/FoodMood-Bot-Whatsapp"&gt;Check the GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://foodmood-bot-whatsapp.onrender.com"&gt;Backend&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chat with the bot on this number:- +14155238886&lt;/p&gt;

&lt;p&gt;&lt;a href="https://photos.app.goo.gl/GoUpQigBAUu47hQr9"&gt;demo-1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://photos.app.goo.gl/FfLGgJ22Gj1b1w1Q7"&gt;demo-2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5xhx8ndd546u5rzfc1u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5xhx8ndd546u5rzfc1u.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5rehamnowq0t4j4vczpk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5rehamnowq0t4j4vczpk.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgk390mekh23epzo9n2x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgk390mekh23epzo9n2x.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff571sw040ryw0baobggc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff571sw040ryw0baobggc.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffde029fcq1qtcnx65csp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffde029fcq1qtcnx65csp.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzflgqmnfupn5htg9o4y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzflgqmnfupn5htg9o4y.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft851hu50ch3fde58dcfl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft851hu50ch3fde58dcfl.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz51jevq41tsi47qqkyyi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz51jevq41tsi47qqkyyi.jpg" alt="Image description" width="800" height="1777"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🍽️ FoodMood-Bot
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;FoodMood-Bot&lt;/strong&gt; is a WhatsApp bot powered by Flask, Twilio, and OpenAI, developed by HarshitaDS in June 2024. It suggests recipes based on the user's mood, providing brief, easy-to-follow instructions with ingredients and preparation time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🌟 &lt;strong&gt;Mood-Based Food Suggestions&lt;/strong&gt;: Get recipe recommendations based on your current mood.&lt;/li&gt;
&lt;li&gt;📋 &lt;strong&gt;Brief Recipes&lt;/strong&gt;: Each recipe is concise (not more than 1400 characters) and includes ingredients and preparation time.&lt;/li&gt;
&lt;li&gt;👫 &lt;strong&gt;Portion Size&lt;/strong&gt;: Ingredients list is prepared for 2 people.&lt;/li&gt;
&lt;li&gt;🍽️ &lt;strong&gt;Personalized Assistance&lt;/strong&gt;: Responds to thank you messages with amazing food-related quotes and offers further assistance.&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;Image Generation&lt;/strong&gt;: Generate images related to your query by starting your message with &lt;code&gt;/img&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mood Detection&lt;/strong&gt;: The bot asks for your current mood and suggests a suitable recipe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recipe Delivery&lt;/strong&gt;: Provides a brief recipe with a list of ingredients and the preparation time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portion Control&lt;/strong&gt;: All recipes are tailored for 2 people.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Generation&lt;/strong&gt;: Start your message with &lt;code&gt;/img&lt;/code&gt; to receive a generated image related to your query.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Example Interaction
&lt;/h3&gt;

&lt;p&gt;User: I'm feeling happy today!&lt;br&gt;
FoodMood-Bot: That's wonderful! How about celebrating with a refreshing fruit salad? 🍓🍊 Here's a quick recipe:&lt;/p&gt;

&lt;p&gt;Ingredients:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 cup strawberries, sliced&lt;/li&gt;
&lt;li&gt;1 orange, peeled and segmented&lt;/li&gt;
&lt;li&gt;1 apple, diced&lt;/li&gt;
&lt;li&gt;1 tablespoon honey&lt;/li&gt;
&lt;li&gt;1 tablespoon lemon juice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Preparation Time:&lt;/strong&gt; 10 minutes&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In a large bowl, combine the strawberries, orange segments, and apple.&lt;/li&gt;
&lt;li&gt;Drizzle with honey and lemon juice.&lt;/li&gt;
&lt;li&gt;Toss gently to mix. Enjoy your refreshing fruit salad!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;User: Thank you!&lt;br&gt;
FoodMood-Bot: "One cannot think well, love well, sleep well, if one has not dined well." - Virginia Woolf. I'm here for any further assistance you may need!&lt;/p&gt;
&lt;h3&gt;
  
  
  Technologies Used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flask&lt;/strong&gt;: For creating the web application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twilio&lt;/strong&gt;: For WhatsApp messaging API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt;: For intelligent responses and mood analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone this repository:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/HarshitaDS/FoodMood-Bot.git
&lt;span class="nb"&gt;cd &lt;/span&gt;FoodMood-Bot
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Create a virtual environment and activate it:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate  &lt;span class="c"&gt;# On Windows use `venv\Scripts\activate`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Set up your environment variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TWILIO_ACCOUNT_SID&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TWILIO_AUTH_TOKEN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Run the Flask application:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;flask run
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initiate a conversation with the bot on WhatsApp.&lt;/li&gt;
&lt;li&gt;Provide your current mood when prompted.&lt;/li&gt;
&lt;li&gt;Receive a personalized recipe suggestion.&lt;/li&gt;
&lt;li&gt;Start your message with &lt;code&gt;/img&lt;/code&gt; to generate an image related to your query.&lt;/li&gt;
&lt;li&gt;Enjoy your meal!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contributing
&lt;/h3&gt;

&lt;p&gt;Contributions are welcome! Please fork this repository and submit a pull request.&lt;/p&gt;

&lt;h3&gt;
  
  
  License
&lt;/h3&gt;

&lt;p&gt;This project is licensed under the MIT License.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contact
&lt;/h3&gt;

&lt;p&gt;Developed by HarshitaDS. For any inquiries, please reach out via GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Impactful Innovators:&lt;/strong&gt; This will help in getting customized food options as per the mood, so nothing will get wasted. 😎&lt;br&gt;
&lt;strong&gt;Entertaining Endeavors:&lt;/strong&gt; Gives interesting food-related quotes and images when asked that will increase the appetite. 😋 &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>twiliochallenge</category>
      <category>ai</category>
      <category>twilio</category>
    </item>
    <item>
      <title>Computer Science Challenge - Structure Padding</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Mon, 24 Jun 2024 03:35:29 +0000</pubDate>
      <link>https://dev.to/harshitads44217/computer-science-challenge-structure-padding-37ie</link>
      <guid>https://dev.to/harshitads44217/computer-science-challenge-structure-padding-37ie</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/cs"&gt;DEV Computer Science Challenge v24.06.12: One Byte Explainer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explainer
&lt;/h2&gt;

&lt;p&gt;Structure padding: Like neatly lining books on a shelf, compilers add empty bytes (padding) between struct members for faster processor access. This can make structs larger than expected!&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Context
&lt;/h2&gt;

&lt;p&gt;Consider this code:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="nc"&gt;Data&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 1 byte&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// 4 bytes (assuming 32-bit system)&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Might be &amp;gt; 5!&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This code defines a Data struct with a char and an int.&lt;/li&gt;
&lt;li&gt;Similar to the previous example, we use &lt;code&gt;sizeof(Data)&lt;/code&gt; to print the struct size. Here, padding might occur to ensure the int aligns with its preferred boundary (often 4 bytes on 32-bit systems).&lt;/li&gt;
&lt;li&gt;The expected size would be 1 (char) + 4 (int) = 5 bytes. However, the actual size might be greater due to padding. &lt;/li&gt;
&lt;li&gt;If you ask me, then it will be 8 bytes, since we are assuming a 32-bit system that will read the memory in the chunks of 4 bytes. This does not allow other variables to take the left 3 bytes (8-5) space. Hence 8 bytes will get occupied by the object of struct &lt;code&gt;Data&lt;/code&gt; for faster processor access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The exact amount of padding can vary depending on the compiler and target architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmt3aft8zvtgb754xthk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmt3aft8zvtgb754xthk.jpeg" alt="Alan Turing the computer scientist explaining  the concept of structure padding in c++ pride month color palette rainbow color" width="270" height="270"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This image is generated using the prompt:- "Alan Turing, the computer scientist, explaining  the concept of structure padding in C++ pride month color palette rainbow color"&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>cschallenge</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Glam Up My Markup: Beaches - My Submission</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Mon, 10 Jun 2024 05:29:26 +0000</pubDate>
      <link>https://dev.to/harshitads44217/glam-up-my-markup-beaches-my-submission-1l24</link>
      <guid>https://dev.to/harshitads44217/glam-up-my-markup-beaches-my-submission-1l24</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2024-05-29"&gt;Frontend Challenge v24.04.17&lt;/a&gt;, CSS Art: June.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration 🌊🏄‍♀️🏄‍♂️
&lt;/h2&gt;

&lt;p&gt;I was inspired by the idea of creating a serene beach scene using just HTML and CSS. I wanted to challenge myself to create a visually appealing design without manipulating the HTML structure, relying solely on CSS for styling. I drew inspiration from the brutalist design movement, known for its raw, unrefined aesthetic and bold use of typography and color.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo 🩴🌴
&lt;/h2&gt;

&lt;p&gt;Here is the Demo of the site.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/harshitadharamansharma/embed/OJYjamr?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey 🌊🏄‍♀️🏄‍♂️⛱️🏖️🩴🌴
&lt;/h2&gt;

&lt;p&gt;During this project, I learned how to use CSS to create complex and realistic visual effects, such as the sky, sea, sand, and palm tree. I also honed my skills in CSS positioning and animation to bring the scene to life. One of the challenges I faced was achieving the right balance of elements to create a cohesive and realistic beach environment.&lt;/p&gt;

&lt;p&gt;I'm particularly proud of how I was able to use CSS to create the illusion of depth and movement in the scene, such as the gentle sway of the palm tree leaves and the foamy waves lapping at the shore.&lt;/p&gt;

&lt;p&gt;Next, I hope to further refine my CSS skills and explore more advanced techniques to create even more intricate and lifelike scenes using only HTML and CSS.&lt;/p&gt;

&lt;p&gt;In this project, I learned how to create complex layouts and animations using just HTML and CSS. I experimented with different techniques to achieve the brutalist look, such as asymmetrical layouts, vibrant colors, and unconventional typography.&lt;/p&gt;

&lt;p&gt;I'm particularly proud of the final result, as it showcases my ability to think creatively and push the boundaries of traditional web design. Moving forward, I hope to further refine my skills in CSS and explore more advanced animation techniques with GSAP.&lt;/p&gt;

&lt;p&gt;Do tell me how you liked the Beach Animation. Open for feedbacks and constructive criticism. &lt;br&gt;
.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtfamdphpmhifcn6gd5x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtfamdphpmhifcn6gd5x.gif" alt="GIF relax on the beach" width="498" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Moving Beyond Marquee: Cool Alternatives to the marquee tag</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Sun, 19 May 2024 18:28:56 +0000</pubDate>
      <link>https://dev.to/harshitads44217/moving-beyond-marquee-cool-alternatives-for-seamless-scrolling-effects-5c44</link>
      <guid>https://dev.to/harshitads44217/moving-beyond-marquee-cool-alternatives-for-seamless-scrolling-effects-5c44</guid>
      <description>&lt;p&gt;Remember last time, here in this blog "&lt;a href="https://dev.to/harshitads44217/mothers-day-special-blog-2ack"&gt;https://dev.to/harshitads44217/mothers-day-special-blog-2ack&lt;/a&gt;", we discussed how the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag used to be a top choice for developers in the web development industry? We also discovered that it’s been deprecated for quite a while now. &lt;/p&gt;

&lt;p&gt;But guess what? Marquee-like animations are making a comeback in modern design trends! These are creating seamless scrolling effects.&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpaz55zigukrokstrydif.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpaz55zigukrokstrydif.gif" alt="Marquee like animation in modern design trends" width="640" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.awwwards.com/awwwards_collections/collections/text-marquee-effect/"&gt;- Collection of text-marquee-effect by awwwards.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm back with some cool, alternative ways to create those eye-catching marquee effects without using the deprecated tag. Let's dive in and explore these exciting techniques to implement seamless scrolling effects! &lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Using GSAP 😎
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;If you like using JavaScript for the frontend development tasks then GSAP can be  a great tool for you. If you know what it is, then well and good, otherwise let me introduce you to the ultimate modern tool for animation. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffugdy6bkfexisdmbaiqi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffugdy6bkfexisdmbaiqi.jpg" alt="GSAP Logo" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gsap.com/"&gt;GSAP Official Website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gsap.com/community/forums/topic/35647-infnite-marquee/"&gt;Infinite Marquee GSAP Forum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GSAP (GreenSock Animation Platform) is a powerful JavaScript library for creating high-performance animations. It offers robust tools and an easy-to-use API to animate elements with precision and efficiency.&lt;/p&gt;

&lt;p&gt;Consider this &lt;code&gt;HTML&lt;/code&gt; code:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;GSAP Example&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nf"&gt;#gsap-marquee&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48vh&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;white-space&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;nowrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;teal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="py"&gt;font-smooth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;always&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nf"&gt;#gsap-marquee&lt;/span&gt; &lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"gsap-marquee"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;This is a scrolling text created with GSAP.&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/gsap.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;gsap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#gsap-marquee span&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;xPercent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, GSAP animates the &lt;span&gt; inside the &lt;code&gt;#gsap-marquee&lt;/code&gt; container. The text scrolls from right to left, creating a marquee effect. The gsap.to method moves the text by 100% of its width &lt;code&gt;(xPercent: -100)&lt;/code&gt; over 10 seconds, and this animation repeats &lt;code&gt;indefinitely (repeat: -1)&lt;/code&gt;. The ease: "none" ensures a constant speed throughout the animation.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;Output :-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkhn8ckkspsnbtqk112r.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkhn8ckkspsnbtqk112r.gif" alt="Output of the Marquee effect Implementation using GSAP" width="640" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
 This setup ensures the text scrolls smoothly and continuously across the screen, mimicking the classic marquee effect with modern animation capabilities.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Using CSS Animation 🤩
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uhc56yvun6v6dode0m2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uhc56yvun6v6dode0m2.png" alt="CSS Official Logo" width="800" height="1128"&gt;&lt;/a&gt;         &lt;/p&gt;

&lt;p&gt;Don't underestimate the power of Cascading Style Sheets. CSS alone can make powerful and interactive animations. People who have some hands on over CSS animation know it very well. If you are somewhat skeptical then consider this &lt;code&gt;HTML&lt;/code&gt; code:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;CSS Animation Example&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nc"&gt;.scrolling-text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;white-space&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;nowrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;deeppink&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;48vh&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nc"&gt;.scrolling-text&lt;/span&gt; &lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                      &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;48px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="py"&gt;font-smooth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;always&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scroll-left&lt;/span&gt; &lt;span class="m"&gt;20s&lt;/span&gt; &lt;span class="n"&gt;linear&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;scroll-left&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scrolling-text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;This is a scrolling text created with CSS animations.&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code creates a scrolling text animation using CSS animations.&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;Output :-&lt;/strong&gt;&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiktw1aeyxb184nxnotqm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiktw1aeyxb184nxnotqm.gif" alt="Output of the Marquee effect Implementation using CSS" width="640" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This code creates a scrolling text animation using CSS animations. Here's how it works. The &lt;code&gt;div&lt;/code&gt; with class name &lt;code&gt;scrolling-text&lt;/code&gt; contains a &lt;code&gt;span&lt;/code&gt; where the intended text is. The desired styling is applied to the div. A deeppink background, white text, rounded corners, and hidden overflow to ensure the text scrolls within the container. The text is styled with a large font size, specific line height, and smooth font rendering. Now here comes a few points to remember:-&lt;br&gt;
.&lt;br&gt;
&lt;strong&gt;CSS Animation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;span&lt;/code&gt; element is given an &lt;code&gt;inline-block&lt;/code&gt; display, ensuring it takes up space and aligns correctly.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;padding-left: 100%&lt;/code&gt; ensures that the text starts off-screen to the right.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;animation: scroll-left 20s linear infinite&lt;/code&gt; applies a keyframes animation called &lt;code&gt;scroll-left&lt;/code&gt; to the &lt;code&gt;span&lt;/code&gt; element. This animation lasts for 20 seconds, runs in a linear fashion, and loops infinitely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Keyframes Animation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;@keyframes scroll-left&lt;/code&gt; defines the animation named &lt;code&gt;scroll-left&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0% { transform: translateX(100%); }&lt;/code&gt; sets the initial position of the text to be completely off-screen to the right.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;100% { transform: translateX(-100%); }&lt;/code&gt; moves the text to be completely off-screen to the left by the end of the animation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How's it happening&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The animation starts with the text positioned off-screen to the &lt;code&gt;right (transform: translateX(100%))&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Over 20 seconds, the text moves horizontally to the &lt;code&gt;left (transform: translateX(-100%))&lt;/code&gt;, making it appear as if the text is scrolling across the screen.&lt;/li&gt;
&lt;li&gt;Once the text reaches the left side and moves off-screen, the animation restarts, creating an infinite scrolling effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Using JavaScript 🙂
&lt;/h2&gt;

&lt;p&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg32maex1ii2ltwfm5uus.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg32maex1ii2ltwfm5uus.jpg" alt="JavaScript Logo" width="564" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are a fan of using JavaScript in your project then you can consider this implementation might sound interesting to you. Here in this implementation we will be using animation like the last example but by using JavaScript.&lt;/p&gt;

&lt;p&gt;Consider this &lt;code&gt;HTML&lt;/code&gt; code:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;JavaScript Scroller Example&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nf"&gt;#scroll-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;white-space&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;nowrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;royalblue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;48vh&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nf"&gt;#scroll-text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;48px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="py"&gt;font-smooth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;always&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scroll-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scroll-text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This is a scrolling text created with JavaScript.&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
        &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;scrollText&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;scroll-text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;offsetLeft&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;offsetWidth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;offsetWidth&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;transform&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`translateX(&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;px)`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="nf"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nf"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DOMContentLoaded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;scrollText&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;.&lt;br&gt;
Here JavaScript is used to create a scrolling text effect similar to the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output :-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ephr3m84hba337s6xzh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ephr3m84hba337s6xzh.gif" alt="Output of the Marquee effect Implementation using Javascript" width="640" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;#scroll-container&lt;/code&gt; holds the text and ensures it stays within a defined area. The &lt;code&gt;#scroll-text&lt;/code&gt; element is positioned within this container and moved continuously from right to left using the animate function. This function updates the position of the text and resets it once it has fully scrolled out of view, creating an infinite scrolling effect. The styling applied ensures the text and container have a visually appealing design with a blue background, white text, and rounded corners as we did in the last example.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Using jQuery 🤔
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fea8qd3zy4s228zit51uy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fea8qd3zy4s228zit51uy.png" alt="jQuery Logo" width="800" height="195"&gt;&lt;/a&gt;&lt;br&gt;
.&lt;br&gt;
It is also a JS implementation but by using a library called jQuery. If you have been working with JS from a while long then must have heard about it somewhere, right? or may be did not. Let me tell you something about it.&lt;br&gt;
.&lt;br&gt;
&lt;strong&gt;A small intro to jQuery:-&lt;/strong&gt;&lt;br&gt;
.&lt;br&gt;
This also a JavaScript implementation but using a JS library this time &lt;br&gt;
jQuery is a popular JavaScript library that simplifies working with web pages.  It makes common tasks like grabbing elements, adding animations, and handling events much easier with shorter code.  This lets developers focus on functionality instead of the nitty-gritty of JavaScript.  It's free, open-source, and used on millions of websites! Launched in 2006, jQuery offered a much simpler way to interact with web pages compared to raw JavaScript. This led to its rapid adoption by developers. A steady rise in jQuery's usage throughout the late 2000s specifically 2006 onwards. By the late 2000s, jQuery had a well-established community, numerous plugins, and a mature codebase. This solidified its position as a dominant web development tool. That was a period of significant influence of jQuery.&lt;/p&gt;

&lt;p&gt;This implementation gives an output similar to the previous one but using the jQuery library. Now consider this code :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;jQuery Scroller Example&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nf"&gt;#scroll-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;white-space&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;nowrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48vh&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="py"&gt;font-smooth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;always&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nf"&gt;#scroll-text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scroll-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scroll-text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This is a scrolling text created with jQuery.&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://code.jquery.com/jquery-3.6.0.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
        &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ready&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#scroll-text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;containerWidth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#scroll-container&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;width&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

            &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#scroll-text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;width&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;containerWidth&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#scroll-text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;css&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;transform&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;translateX(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;position&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;px)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="nf"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

            &lt;span class="nf"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;See what's happening:-&lt;/strong&gt;&lt;br&gt;
.&lt;br&gt;
Using basic jQuery functions and CSS. Here's a brief overview of the key steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialization:&lt;/strong&gt; When the document is ready (&lt;code&gt;$(document).ready()&lt;/code&gt;), the script initializes. This ensures the DOM is fully loaded before running the script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Element Selection:&lt;/strong&gt; It selects the scrolling text element (&lt;code&gt;#scroll-text&lt;/code&gt;) and calculates its initial position and the width of its container.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animation Logic:&lt;/strong&gt; The &lt;code&gt;animate()&lt;/code&gt; function updates the position of the text to create a scrolling effect. When the text scrolls out of view, it resets its position to create a continuous loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS Transformation:&lt;/strong&gt; The code applies a CSS &lt;code&gt;transform: translateX()&lt;/code&gt; to the text element to move it horizontally.
5.** Frame Rate:** The animation loop continuously runs in sync with the browser's rendering cycle, ensuring smooth animation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;Output :-&lt;/strong&gt;&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmr2sobncsmfzlzy7enbm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmr2sobncsmfzlzy7enbm.gif" alt="Output of the Marquee effect Implementation using jQuery" width="640" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
Overall, the script continuously moves the text element horizontally within its container, creating a scrolling effect similar to the traditional marquee tag.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Using jQuery.Marquee Plugin 😏
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhxcsiv3kwha5wx3nahqc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhxcsiv3kwha5wx3nahqc.jpg" alt="jQuery.Marquee plugin image" width="338" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope you are aware of the concept of plugin. So in jQuery, plugins are essentially pre-written Javascript code that extend jQuery's functionalities. They provide additional methods that you can use to achieve specific tasks on your web page, often simplifying complex interactions. &lt;/p&gt;

&lt;p&gt;This jQuery plugin under animation category by &lt;a href="//AamirAfridi.com"&gt;AamirAfridi.com&lt;/a&gt; let's you scroll the text like the old traditional marquee. You can find this plugin &lt;a href="https://plugins.jquery.com/marquee/"&gt;here&lt;/a&gt;. So let's plug in to jQuery.&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;jQuery Marquee Plugin Example&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nf"&gt;#scroll-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SlateBlue&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48vh&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Add some padding for better visual presentation */&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nf"&gt;#scroll-text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="py"&gt;font-smooth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;always&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scroll-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scroll-text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This is a scrolling text created with jQuery Marquee Plugin.&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- Include jQuery --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Include jQuery Marquee Plugin --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/jquery.marquee/jquery.marquee.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
        &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ready&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
            &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#scroll-text&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;marquee&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                &lt;span class="c1"&gt;// Configuration options&lt;/span&gt;
                &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;delayBeforeStart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;duplicated&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
            &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After adding the latest version of jQuery and the jQuery Marquee plugin from a CDN the document is ready to add the &lt;code&gt;marquee()&lt;/code&gt; function and is called on the &lt;code&gt;#scroll-text&lt;/code&gt; element. The configuration options are set for the marquee, such as &lt;code&gt;duration&lt;/code&gt;, &lt;code&gt;gap&lt;/code&gt;, &lt;code&gt;delayBeforeStart&lt;/code&gt;, &lt;code&gt;direction&lt;/code&gt;, and &lt;code&gt;duplicated&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;Output :-&lt;/strong&gt;&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3zbmpn2wxnym4mcdgvb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3zbmpn2wxnym4mcdgvb.gif" alt="Output of the Marquee effect Implementation using jQuery Marquee Plugin" width="829" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;By using this plugin, you can easily create a scrolling marquee effect with customizable options, making it a simple yet effective solution for adding animations to your web projects. &lt;/p&gt;

&lt;p&gt;There are some similar jQuery plugins out there, that you can try your hands on. One such is &lt;a href="https://github.com/IndigoUnited/jquery.simplemarquee"&gt;jquery.simplemarquee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Use Case : A CSS Scroll Snap 👌
&lt;/h2&gt;

&lt;p&gt;.&lt;br&gt;
Now, let's play around a use case where we need to show some elements moving from the right to the left. When we want to showcase company names in the partner section or display moving testimonials, we can use CSS Scroll Snap with Automatic Scrolling. Here's a simple implementation using CSS for this use case.&lt;/p&gt;

&lt;p&gt;Now consider this code :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;CSS Scroll Snap with Automatic Scrolling&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Arial&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f0f0f0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.scroll-snap-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f5a4d7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.scroll-snap-wrapper&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Two sets of items (5 original + 5 duplicates) */&lt;/span&gt;
            &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;scroll&lt;/span&gt; &lt;span class="m"&gt;30s&lt;/span&gt; &lt;span class="n"&gt;linear&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.scroll-snap-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;20%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Flex-grow: 1, Flex-shrink: 0, Flex-basis: 20% (5 items fit in 100%) */&lt;/span&gt;
            &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f5a4d7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="py"&gt;font-smooth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;always&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.scroll-snap-item&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="nb"&gt;scroll&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-wrapper"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://upload.wikimedia.org/wikipedia/commons/7/7a/Logonetflix.png"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Netflix Logo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://upload.wikimedia.org/wikipedia/commons/7/7a/Logonetflix.png"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Netflix Logo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 3&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 4&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scroll-snap-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 5&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we create an automatic scrolling effect using CSS animations combined with the flexbox layout.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;HTML Structure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The HTML contains a div with the class &lt;code&gt;scroll-snap-container&lt;/code&gt;, which acts as the container for the scrolling items.&lt;/li&gt;
&lt;li&gt;Inside the container, there is another &lt;code&gt;div&lt;/code&gt; with the class &lt;code&gt;scroll-snap-wrapper&lt;/code&gt;, which holds multiple &lt;code&gt;scroll-snap-item&lt;/code&gt; elements.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;CSS Styling:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;scroll-snap-container&lt;/code&gt; is styled to have a fixed size, with hidden overflow, rounded corners, and a background color.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;scroll-snap-wrapper&lt;/code&gt; is given a width that is double the container’s width to create a seamless loop (two sets of items), and it uses the scroll keyframes animation to move its content.&lt;/li&gt;
&lt;li&gt;Each &lt;code&gt;scroll-snap-item&lt;/code&gt; is styled to be equally distributed within the container, with centered text and images.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;CSS Animation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;@keyframes scroll&lt;/code&gt; defines the animation named &lt;code&gt;scroll&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0% { transform: translateX(0); }&lt;/code&gt; sets the initial position of the wrapper to the start.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;100% { transform: translateX(-100%); }&lt;/code&gt; moves the wrapper to the left by 100% of its width over the duration of the animation.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Animation Mechanism:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;scroll-snap-wrapper&lt;/code&gt; uses the &lt;code&gt;scroll&lt;/code&gt; animation to move all items horizontally from right to left continuously.&lt;/li&gt;
&lt;li&gt;This movement is achieved by setting the wrapper's initial transform to 0% and then moving it to -100% over 10 seconds, creating a looped effect.
.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Output :-&lt;/strong&gt;&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8nvmww94um5r39uirvxk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8nvmww94um5r39uirvxk.gif" alt="Output of the Use case: CSS Scroll Snap" width="640" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;How It Works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;scroll-snap-wrapper&lt;/code&gt; contains two sets of items to ensure a seamless loop, moving from right to left over a set duration (10 seconds).&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;transform: translateX(-100%)&lt;/code&gt; moves the content of the wrapper from its initial position to the left by 100% of its width, creating a continuous scrolling effect.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;animation: scroll 10s linear infinite&lt;/code&gt; ensures this movement is smooth, consistent, and repeats indefinitely, simulating a marquee-like animation using modern CSS techniques.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Adding another effect: Pause When Hover
&lt;/h3&gt;

&lt;p&gt;And if we add want to pause the animation when we hover over the element we can add this in the style:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.scroll-snap-wrapper&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;animation-play-state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;paused&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70wjjoyb8juhvu8kwg4m.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70wjjoyb8juhvu8kwg4m.gif" alt="Use case with pause on hover" width="829" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Call: The Conclusion 😶‍🌫️🫥😮🤔🤯🫡😜
&lt;/h2&gt;

&lt;p&gt;.&lt;br&gt;
We have explored several alternatives to the traditional &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag, each offering unique advantages and enhanced control for creating scrolling effects. From &lt;strong&gt;CSS animations&lt;/strong&gt; and &lt;strong&gt;JavaScript scrollers&lt;/strong&gt; to advanced solutions like &lt;strong&gt;GSAP&lt;/strong&gt; and &lt;strong&gt;CSS Scroll Snap&lt;/strong&gt;, these methods cater to modern web development standards and practices.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2asogq1yl05q136iq4pz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2asogq1yl05q136iq4pz.gif" alt="Final Giphy" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/gifs/zublime-animation-sandcastle-grayscale-gorilla-ToMjGpplYsUX9WKAxSE"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know which method is your favorite! I'll keep sharing examples where marquee-like effects are used efficiently in &lt;strong&gt;contemporary designs&lt;/strong&gt;. Your feedback and experiences are invaluable, so please share your preferred method and any insights or stories about working with the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag. Let's continue this conversation in the comments and inspire each other with &lt;strong&gt;creative scrolling effects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Happy coding, and I look forward to reading your thoughts and experiences!&lt;/p&gt;

&lt;p&gt;Suggested explorations on the same topic:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/harshitads44217/mothers-day-special-blog-2ack"&gt;https://dev.to/harshitads44217/mothers-day-special-blog-2ack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.jqueryscript.net/demo/Text-Scrolling-Plugin-for-jQuery-Marquee/#google_vignette"&gt;https://www.jqueryscript.net/demo/Text-Scrolling-Plugin-for-jQuery-Marquee/#google_vignette&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.upgrad.com/blog/marquee-tag-attributes-in-html-features-uses-examples/"&gt;https://www.upgrad.com/blog/marquee-tag-attributes-in-html-features-uses-examples/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/html-marquee-tag/"&gt;https://www.geeksforgeeks.org/html-marquee-tag/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.logrocket.com/deprecated-html-elements-and-what-to-use-instead/#:%7E:text=While%20the%20marquee%20tag%20makes,define%20what%20its%20content%20is"&gt;https://blog.logrocket.com/deprecated-html-elements-and-what-to-use-instead/#:~:text=While%20the%20marquee%20tag%20makes,define%20what%20its%20content%20is&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kasp9023.medium.com/what-happened-to-the-marquee-html-element-6ec6782f42ce#:%7E:text=When%20HTML5%20was%20developed%2C%20W3C%20decided%20to,that%20developers%20would%20not%20use%20the%20element"&gt;https://kasp9023.medium.com/what-happened-to-the-marquee-html-element-6ec6782f42ce#:~:text=When%20HTML5%20was%20developed%2C%20W3C%20decided%20to,that%20developers%20would%20not%20use%20the%20element&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.shiksha.com/online-courses/articles/marquee-tag-in-html-blogId-147137#:%7E:text=The%20tag%20in%20HTML%20is%20used%20to%20create%20a,moved%20horizontally%20across%20the%20screen"&gt;https://www.shiksha.com/online-courses/articles/marquee-tag-in-html-blogId-147137#:~:text=The%20tag%20in%20HTML%20is%20used%20to%20create%20a,moved%20horizontally%20across%20the%20screen&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee"&gt;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/33102131/jquery-scrolling-text-like-marquee"&gt;https://stackoverflow.com/questions/33102131/jquery-scrolling-text-like-marquee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aamirafridi/jQuery.Marquee"&gt;https://github.com/aamirafridi/jQuery.Marquee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/56522476/how-to-create-a-marquee-using-css-or-javascript"&gt;https://stackoverflow.com/questions/56522476/how-to-create-a-marquee-using-css-or-javascript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Mark it! Where's Marquee?</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Sun, 12 May 2024 18:30:32 +0000</pubDate>
      <link>https://dev.to/harshitads44217/mothers-day-special-blog-2ack</link>
      <guid>https://dev.to/harshitads44217/mothers-day-special-blog-2ack</guid>
      <description>&lt;p&gt;Yes, this is a &lt;strong&gt;Mothers' Day Special&lt;/strong&gt; Blog. If you are like me you must have encountered with the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag. Wait! let me clear you one thing, if you're not interested in the exposition of my first encounter with the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag, feel free to skip ahead to the main content SKIP.&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/F2dZOEQvJ7I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
Remember those &lt;strong&gt;&lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt;&lt;/strong&gt; texts? It was back in 2013, when I was in 8th grade, that I first encountered those scrolling, floating, or whatever-you-call-them texts. I was so amazed that I could make something literally "run" on my webpage, like those &lt;strong&gt;"SALE! SALE! SALE!"&lt;/strong&gt; texts on e-commerce sites or notification banners on some government websites.&lt;/p&gt;

&lt;p&gt;Until then, all the tags I had learned were static; nothing moved. Well, the marquee tag was also technically static, but at the time, I was so fascinated by it that I started using it everywhere. It made me feel like I was really doing something on the webpage. I used to play with the tag by adjusting its speed. As a kid, watching movement on my webpage was a next level feeling for me. &lt;strong&gt;Fun fact:&lt;/strong&gt; I used to visit cyber cafes occasionally to do this weird stuff since I didn't have a computer at home. I don't know why I'm sharing this; it's unrelated to the marquee tag. But it's nostalgic to remember how I used to create beautiful cards for our parents on occasions like Mother's Day, Father's Day, or anniversaries.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where is my Marquee?
&lt;/h2&gt;

&lt;p&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcgmbtw39yagk6q2zoiix.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcgmbtw39yagk6q2zoiix.gif" alt="Where is it giphy" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/gifs/travisband-travis-where-is-it-dougie-payne-Ex5PYCPo6EH4KQvHuN"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
A few days ago, I explored how modern websites, particularly those following modern design trends like brutalism, parallax and scrollytelling efficiently use similar effects, especially on portfolio websites. When I visited the &lt;strong&gt;MDN page&lt;/strong&gt; for the  tag, the first thing I saw was that it was deprecated. The tag can still be used in modern browsers, but since it's deprecated, it could be removed at any time.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's find the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyg5e2h77bv6s0pel6luv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyg5e2h77bv6s0pel6luv.gif" alt="Find out giphy" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/gifs/michael-jackson-tj-QBGqqaOt8qKCHJdVw3"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
The HTML  tag allows text or images to scroll within a defined area. It can scroll in any direction: left, right, up, or down, with the default behavior moving from right to left, creating a sense of infinite linear animation. &lt;br&gt;
Let's explore some of its attributes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;direction&lt;/code&gt; :- It defines the direction for scrolling content, which can be left, right, up, or down.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;behavior&lt;/code&gt; :- specify the behavior among these three types - Scroll, Slide and Alternate.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Scroll:- It’s the default value, and the text will move and overflow the border of the element.&lt;/li&gt;
&lt;li&gt; Slide:- the content will move normally until it hits the border of the element, unless specified otherwise.&lt;/li&gt;
&lt;li&gt; Alternate:- the content will move backwards at the hitting the border of the element.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;loop&lt;/code&gt; :- defines the number of times the animation should happen. By default it’s -1 which means infinite times&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;scrolldelay&lt;/code&gt; :- sets the interval between each animation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;scrollamount&lt;/code&gt; :- specifies speed of the animation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;truespeed&lt;/code&gt;:- By default, scrolldelay values lower than 60 are ignored. If truespeed is present, those values are not ignored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;contenteditable&lt;/code&gt;:- This makes the marquee an editable field and lets the users edit the content as it makes use of the user entered dynamic content.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other than these we have some following attributes too:- &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;bgcolor&lt;/code&gt;:- Sets the background color&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;height&lt;/code&gt; :- Sets the height&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;width&lt;/code&gt; :- Sets the width&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hspace&lt;/code&gt; :- Sets the horizontal margin&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vspace&lt;/code&gt; :- Sets the vertical margin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the implementation if the &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt; tag. Consider the following code:-&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Marquee Tag Attributes&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;marquee&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;42px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating direction attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Scrolling Left: Dynamic Content&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating behavior attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;behavior=&lt;/span&gt;&lt;span class="s"&gt;"scroll"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Scroll Behavior&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;behavior=&lt;/span&gt;&lt;span class="s"&gt;"slide"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Slide Behavior&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;behavior=&lt;/span&gt;&lt;span class="s"&gt;"alternate"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Alternate Behavior&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating loop attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;loop=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Loop Twice&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating scrolldelay attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;scrolldelay=&lt;/span&gt;&lt;span class="s"&gt;"500"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;500ms Scroll Delay&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating scrollamount attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;scrollamount=&lt;/span&gt;&lt;span class="s"&gt;"5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Custom Speed: Dynamic and Controlled&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating truespeed attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;direction=&lt;/span&gt;&lt;span class="s"&gt;"left"&lt;/span&gt; &lt;span class="na"&gt;scrolldelay=&lt;/span&gt;&lt;span class="s"&gt;"30"&lt;/span&gt; &lt;span class="na"&gt;truespeed&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;True Speed&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Example demonstrating contenteditable attribute --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;contenteditable=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click to edit: Customizable Content&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Other attributes --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;bgcolor=&lt;/span&gt;&lt;span class="s"&gt;"yellow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Yellow Background&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"50px"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Height: 50px&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"200px"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Width: 200px&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;hspace=&lt;/span&gt;&lt;span class="s"&gt;"20"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Horizontal Margin: 20px&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;marquee&lt;/span&gt; &lt;span class="na"&gt;vspace=&lt;/span&gt;&lt;span class="s"&gt;"20"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Vertical Margin: 20px&lt;span class="nt"&gt;&amp;lt;/marquee&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;. &lt;br&gt;
&lt;strong&gt;Output:-&lt;/strong&gt; &lt;br&gt;
.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oWyuiUAZN2o"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Marquee is deprecated.
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf3pfcq8wuq6ezjsx0q3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf3pfcq8wuq6ezjsx0q3.gif" alt="bye giphy" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/gifs/bye-im-out-rPACAp2Nas4q4"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The  tag was once a classic choice of web designers and developers, and added a playful touch to HTML with its animation effects. However, it had its own set of issues and never made it to the list of standard elements. When HTML5 came into existence, W3C marked it obsolete and because of its non-semantic nature. Originally introduced by &lt;strong&gt;Microsoft&lt;/strong&gt; in &lt;strong&gt;Internet Explorer&lt;/strong&gt; and then the tag quickly gained traction among various browsers and consequently it resulted in inconsistent implementations and rendering across platforms.&lt;/p&gt;

&lt;p&gt;The marquee tag was primarily about &lt;strong&gt;presentation&lt;/strong&gt; rather than structure. This made it challenging to maintain consistent user experiences. Moreover, it is an obstacle for the users of &lt;strong&gt;assistive technologies&lt;/strong&gt; and hence making accessibility and usability a concern. With HTML5 and CSS3 bringing in more semantic ways to create dynamic content, the  tag became outdated and lost its appeal.&lt;/p&gt;

&lt;p&gt;In response to these concerns and in line with &lt;strong&gt;web standards and accessibility principles&lt;/strong&gt;, HTML5 deprecated the  tag. While it still exists for backward compatibility, its usage is generally discouraged. Now-a-days developers are advised to embrace modern techniques like CSS animations and JavaScript libraries such as &lt;strong&gt;GSAP&lt;/strong&gt; for crafting dynamic web content. The deprecation of the  tag reflects a shift in the web designing which emphasizes &lt;strong&gt;accessibility, usability, and semantic markup&lt;/strong&gt; for creating inclusive and user-friendly experiences.&lt;/p&gt;

&lt;p&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  So what next?
&lt;/h2&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhk4uookokfrxcdypxkm2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhk4uookokfrxcdypxkm2.gif" alt="What next giphy" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://giphy.com/gifs/spongebob-spongebob-squarepants-season-6-l1EtbIOTUK4MqneEM"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
Even though the  tag isn't as popular in today's web development, it still represents the early days of the internet. Whether you're drawn to its old-school charm or looking for newer options, exploring the  tag gives you a glimpse into how web design has evolved and brings back nostalgic memories of the web. &lt;br&gt;
One more thing this blog doesn't end here. We still need to explore possible use cases and possible alternative of &lt;code&gt;&amp;lt;marquee&amp;gt;&lt;/code&gt;. So stay tuned and &lt;strong&gt;"Mark it!"&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Now, you might be wondering why and how this blog is special for &lt;strong&gt;Mother's Day&lt;/strong&gt;. I'd love to hear your thoughts. Feel free to share them in the comments below.&lt;/p&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>css</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Leveling Up: From HTML Lists to CSS Counters</title>
      <dc:creator>Harshita Sharma D</dc:creator>
      <pubDate>Sun, 05 May 2024 10:12:25 +0000</pubDate>
      <link>https://dev.to/harshitads44217/leveling-up-from-html-lists-to-css-counters-33ad</link>
      <guid>https://dev.to/harshitads44217/leveling-up-from-html-lists-to-css-counters-33ad</guid>
      <description>&lt;p&gt;If you're like me and have ever used HTML in your life, there is a high chance that you must have encountered the &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; tag that stands for "ordered list" and is used to create a list of intentionally ordered items. There's another similar "unordered" one and that is &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;. The &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; tag is often used with the &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tag that stands for “list-items”. Each &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tag added inside the &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; element makes a new list item in the ordered list. &lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; 😎
&lt;/h2&gt;

&lt;p&gt;An ordered list can be ordered either in integer or in roman. You just need to select its type, like this:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ol type="A"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ol{
   list-style: upper-alpha;
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in CSS add &lt;code&gt;upper-roman&lt;/code&gt;, &lt;code&gt;lower-alpha&lt;/code&gt;, &lt;code&gt;upper-alpha&lt;/code&gt;, &lt;code&gt;lower-roman&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt; or we can dig deeper with many more values to the &lt;code&gt;list-style&lt;/code&gt; or &lt;code&gt;list-style-type&lt;/code&gt; more specifically but that’s all for now. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9rksasvcxjmbgc9e6bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9rksasvcxjmbgc9e6bx.png" alt="The HTML code for simple ol" width="800" height="863"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just a simple ordered list:- &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pw8kwqq4v9oqcfw8ojw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pw8kwqq4v9oqcfw8ojw.png" alt="The output for the HTML code" width="322" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ordered lists are a great way to make lists where the browser automatically renders the numbers for you and you do not need to write one by one manually for all the items. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47pirx3z8s345zxjhmic.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47pirx3z8s345zxjhmic.gif" alt="I'll figure out something giphy" width="480" height="480"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://giphy.com/gifs/showtime-season-2-episode-yellowjackets-nk5W3DHgvwLtjSk2tI" rel="noopener"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But don’t you think this snatches your freedom to style the list your way? Yes, you can still stylize it like this:- &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zvufrygq16xiexcahqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zvufrygq16xiexcahqn.png" alt="List using span" width="800" height="1064"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But then you need to write and put all the numbers inside an element and then write your CSS for that element.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vtl6ei368k2mul9jeue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vtl6ei368k2mul9jeue.png" alt="Output of the span list" width="171" height="111"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Unlocking CSS Counters ⚡
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx053xw0e7luomj2ub77u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx053xw0e7luomj2ub77u.gif" alt="unlock cock toy say what darigloo giphy" width="480" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://giphy.com/gifs/3ohhwM1yzVLremM6TS" rel="noopener"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever wondered if there's a sleeker way to create ordered lists without the traditional &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; tag? Do you know that you can achieve a similar result without using &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; It’s a CSS trick, so keep it with you. Just make use of the CSS counter. It’s a versatile tool that allows you to add numbering or lettering to your lists with style. Counters adjust the appearance of content based on its placement in the document. Its value can be incremented by using CSS rules.&lt;/p&gt;

&lt;p&gt;Consider the following code:- &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc12fy2y2vpse1st0fu9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc12fy2y2vpse1st0fu9g.png" alt="CSS counter code" width="800" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here is the output:- &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ddvwvqghd0noin2bxwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ddvwvqghd0noin2bxwd.png" alt="CSS counter code output" width="542" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the style tag, you must have noticed the &lt;code&gt;counter-reset&lt;/code&gt;, &lt;code&gt;counter-increment&lt;/code&gt;, and &lt;code&gt;content&lt;/code&gt; properties. Let's have a closer look at each of them. &lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  CSS counter-reset property
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;counter-reset&lt;/code&gt; property creates and initializes a specific value to the counter. The property is used inside the parent element whose child elements need to be counted. In our example, we reset the counter inside the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; tag. We can also specify the initial value of the list. This value is 0 by default, which gets incremented with the first occurrence of the targeted element, hence we get the value 1. We can also use some negative values. And if we use &lt;code&gt;counter-reset: none;&lt;/code&gt; then this will disable the counter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body{
  counter-reset: myCount; 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also define more than one counter at once with a space-separated list. Like this:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body{
  counter-reset: myCount 4 myCount-second; 
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where 4 is the initial value for the counter myCount, and 0 for myCount-second. Hence, the list will begin from 5 and 1 for both the counters respectively.&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS counter-increment property
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;counter-increment&lt;/code&gt; property increments the value of the counter with every occurrence of the child element where it is defined. Note that it is defined under the &lt;code&gt;::before&lt;/code&gt; pseudo-element of the child tag where it was used. Here, in this case, it is &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;. And the value is the counter name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h1::before {
  counter-increment: myCount;
  content:"Subject " counter(myCount, upper-roman) ". ";
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS content property and the counter() function
&lt;/h3&gt;

&lt;p&gt;Finally, the content property lets you insert the content the way you want to see it on the page. Use the CSS &lt;code&gt;counter()&lt;/code&gt; function to specify where you want to show the count in the element. In its first argument, pass the counter name and in the second argument, you can pass the style-type like you did in the &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; when you used list-style-type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  content:"Subject " counter(myCount, upper-roman) ". ";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevance of the &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1mjxv6ist0zi9bsurl1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1mjxv6ist0zi9bsurl1.gif" alt="It's important giphy" width="480" height="268"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://giphy.com/gifs/snl-saturday-night-live-season-47-fvmbkNjNwBlHCG3Yin" rel="noopener"&gt;via GIPHY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You know, &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; should still be used for numbered ordered lists because it's important to structure HTML using the proper semantics. Semantic markup is important for accessibility and SEO. When you need more control and customization over the styling and numbering of your list items, when you want to create nested or hierarchical lists, or when you need to style list items dynamically based on their position or hierarchy within the document you can go for the CSS counters.&lt;/p&gt;

&lt;p&gt;In summary, use HTML lists for basic, well-defined lists, and turn to CSS counters when you need more flexibility and control over the appearance and behavior of your lists.&lt;/p&gt;

&lt;p&gt;Now when you've unlocked the potential of CSS Counters, you have a versatile tool to add structure and style to your pages. As I mentioned earlier, you can also use it in a nested way. So, go ahead, and take your time to explore. It's your turn to experiment.&lt;/p&gt;

&lt;p&gt;Suggested explorations on the same topic:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/css/css_counters.asp"&gt;https://www.w3schools.com/css/css_counters.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_counter_styles/Using_CSS_counters"&gt;https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_counter_styles/Using_CSS_counters&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/almanac/properties/c/counter-reset/"&gt;https://css-tricks.com/almanac/properties/c/counter-reset/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.logrocket.com/styling-numbered-lists-with-css-counters/"&gt;https://blog.logrocket.com/styling-numbered-lists-with-css-counters/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/numbering-with-css-counters/"&gt;https://www.freecodecamp.org/news/numbering-with-css-counters/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.samanthaming.com/tidbits/53-css-counter/"&gt;https://www.samanthaming.com/tidbits/53-css-counter/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
