<?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: DesignToCodes</title>
    <description>The latest articles on DEV Community by DesignToCodes (@designtocodes).</description>
    <link>https://dev.to/designtocodes</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3718390%2F8c628858-8b77-4e07-aebb-8f205af2d428.png</url>
      <title>DEV Community: DesignToCodes</title>
      <link>https://dev.to/designtocodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/designtocodes"/>
    <language>en</language>
    <item>
      <title>Backing Up WordPress: Plugin vs Host vs Manual</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Tue, 15 Sep 2026 07:18:27 +0000</pubDate>
      <link>https://dev.to/designtocodes/backing-up-wordpress-plugin-vs-host-vs-manual-25pg</link>
      <guid>https://dev.to/designtocodes/backing-up-wordpress-plugin-vs-host-vs-manual-25pg</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The backup you didn't make is the one you'll need. One bad update, hack, or host failure can wipe months of work - and a fresh backup turns that into a ten-minute restore. Three ways to do it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A full backup = files + database
&lt;/h2&gt;

&lt;p&gt;Files (themes, plugins, uploads, wp-config) &lt;em&gt;and&lt;/em&gt; the database (posts, pages, settings). Either one alone won't restore a working site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1 - Plugin (easiest)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wpbackupx.com/" rel="noopener noreferrer"&gt;WP BackupX&lt;/a&gt;/UpdraftPlus/Duplicator/Jetpack VaultPress: schedule + push to Google Drive, Dropbox, or S3, one-click restore. Right choice for most people. Try &lt;a href="https://wpbackupx.com/" rel="noopener noreferrer"&gt;WP BackupX&lt;/a&gt; for the easiest and most secure backup and migration for WordPress websites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2 - Host tool
&lt;/h2&gt;

&lt;p&gt;Convenient automatic backups + one-click restore - but treat it as a bonus. Infrequent, limited retention, and gone if the host account itself has a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 3 - Manual
&lt;/h2&gt;

&lt;p&gt;FTP the files (FileZilla) + export the DB from phpMyAdmin as &lt;code&gt;.sql&lt;/code&gt;. Most effort, fully portable, works anywhere - also how most migrations happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  3-2-1
&lt;/h2&gt;

&lt;p&gt;Multiple copies, 2+ locations, 1 off-site. Daily for active/eCommerce, weekly otherwise, always before a big update - and actually test a restore.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;New project?&lt;/strong&gt; Start on a solid theme: &lt;a href="https://designtocodes.com/product-category/wordpress/" rel="noopener noreferrer"&gt;DesignToCodes WordPress templates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Plugin, host, or manual - what's your backup setup? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>backup</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Make Your Site Accessible: A Practical WCAG 2.2 Checklist</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Fri, 11 Sep 2026 08:56:54 +0000</pubDate>
      <link>https://dev.to/designtocodes/make-your-site-accessible-a-practical-wcag-22-checklist-2f8d</link>
      <guid>https://dev.to/designtocodes/make-your-site-accessible-a-practical-wcag-22-checklist-2f8d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;You don't need to memorize all of WCAG 2.2 to make a real difference. A handful of fundamentals handle most real-world accessibility issues - and most of them are things you already half-know.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The four principles (POUR)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Perceivable&lt;/strong&gt; - alt text, captions, contrast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operable&lt;/strong&gt; - keyboard access, visible focus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understandable&lt;/strong&gt; - plain language, labeled forms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Robust&lt;/strong&gt; - semantic, valid HTML.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The high-impact checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Alt text&lt;/strong&gt; on meaningful images; &lt;code&gt;alt=""&lt;/code&gt; on decorative ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contrast&lt;/strong&gt; ≥ 4.5:1 for body text; never rely on color alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard&lt;/strong&gt; - tab to every control, visible focus ring. Can't tab your own site? Neither can they.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels&lt;/strong&gt; - real &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; per input; placeholders don't count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantics&lt;/strong&gt; - ordered headings, landmarks, real lists.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want a head start?&lt;/strong&gt; Semantic, high-contrast defaults: &lt;a href="https://designtocodes.com/template-library/" rel="noopener noreferrer"&gt;DesignToCodes templates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;What's the one a11y fix you wish every dev did by default? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
    </item>
    <item>
      <title>AEO &amp; GEO: How to Get Your Site Cited by AI Search in 2026</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:14:20 +0000</pubDate>
      <link>https://dev.to/designtocodes/aeo-geo-how-to-get-your-site-cited-by-ai-search-in-2026-n3f</link>
      <guid>https://dev.to/designtocodes/aeo-geo-how-to-get-your-site-cited-by-ai-search-in-2026-n3f</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A growing share of searches never reach ten blue links - an answer engine reads the web and hands back a synthesized answer with a couple of citations. AEO/GEO is about being one of those citations. Here's the practical version.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The three-letter soup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SEO&lt;/strong&gt; → rank in the links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AEO&lt;/strong&gt; → be the direct answer (snippets, voice, AI answers).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GEO&lt;/strong&gt; → get cited by ChatGPT/Perplexity/AI Overviews.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What actually moves the needle
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Answer first.&lt;/strong&gt; Lead each section with a self-contained answer, then elaborate. Engines quote the sentence that resolves the query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q&amp;amp;A structure.&lt;/strong&gt; Real questions as headings, answered immediately below - it maps onto how models retrieve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema.&lt;/strong&gt; FAQPage + HowTo make content machine-readable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quotable facts.&lt;/strong&gt; Short standalone sentences with clear authorship/dates/sources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this replaces classic SEO - crawlable, fast, clean HTML still underpins it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want an AI-ready base?&lt;/strong&gt; Semantic, fast templates: &lt;a href="https://designtocodes.com/" rel="noopener noreferrer"&gt;DesignToCodes&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Seen your content quoted in an AI answer yet? What page was it? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>webdev</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Site Not on Google? The Indexing Checklist (Search Console)</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Fri, 04 Sep 2026 08:46:08 +0000</pubDate>
      <link>https://dev.to/designtocodes/site-not-on-google-the-indexing-checklist-search-console-3cn</link>
      <guid>https://dev.to/designtocodes/site-not-on-google-the-indexing-checklist-search-console-3cn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Searched your own domain and found nothing? That's an indexing problem, not a ranking one - and no keyword tweak fixes it until Google actually knows your pages exist. Here's the checklist.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 0: Are you even indexed?
&lt;/h2&gt;

&lt;p&gt;Search &lt;code&gt;site:yourdomain.com&lt;/code&gt;. Pages show = indexed (ranking problem). Nothing = not indexed (fixes below).&lt;/p&gt;

&lt;h2&gt;
  
  
  The usual causes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Too new&lt;/strong&gt; - submit in Search Console, request indexing, wait days to weeks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;noindex tag&lt;/strong&gt; - WordPress: uncheck "Discourage search engines" (Settings → Reading). Check per-page SEO settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;robots.txt block&lt;/strong&gt; - make sure it isn't disallowing your pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No sitemap&lt;/strong&gt; - submit &lt;code&gt;/sitemap_index.xml&lt;/code&gt; in Search Console.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thin content&lt;/strong&gt; - Google won't index empty pages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The fastest nudge
&lt;/h2&gt;

&lt;p&gt;Google Search Console → URL Inspection → Request Indexing. It also tells you exactly why a page isn't indexed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Starting fresh?&lt;/strong&gt; A fast, SEO-ready base helps — see &lt;a href="https://designtocodes.com/product-category/website-templates/" rel="noopener noreferrer"&gt;DesignToCodes templates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;What kept your site out of the index the longest? Mine was a stray noindex 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>google</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Fixing the "Not Secure" Warning: SSL, HTTPS &amp;amp; Mixed Content</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Tue, 01 Sep 2026 10:46:18 +0000</pubDate>
      <link>https://dev.to/designtocodes/fixing-the-not-secure-warning-ssl-https-amp-mixed-content-1eo3</link>
      <guid>https://dev.to/designtocodes/fixing-the-not-secure-warning-ssl-https-amp-mixed-content-1eo3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;That grey "Not Secure" label looks alarming, but it rarely means you've been hacked - it means the site is unlocked. Here's what it actually is and how to fix each cause.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Three causes, three fixes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No SSL certificate&lt;/strong&gt; → enable free SSL (Let's Encrypt) in your host panel; on WordPress, Really Simple SSL finishes it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expired certificate&lt;/strong&gt; → re-issue/renew from the host panel, clear cache.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixed content&lt;/strong&gt; → an asset still loads over HTTP. Check the console for "Mixed Content", switch those URLs to https://.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Don't forget the redirect
&lt;/h2&gt;

&lt;p&gt;A certificate isn't enough if the HTTP version is still reachable. Force HTTPS everywhere - https:// site URLs in WordPress Settings, plus an &lt;code&gt;.htaccess&lt;/code&gt; redirect (or let Really Simple SSL handle it).&lt;/p&gt;

&lt;h2&gt;
  
  
  The last stragglers
&lt;/h2&gt;

&lt;p&gt;Hard-coded &lt;code&gt;http://yourdomain&lt;/code&gt; links in the theme or DB cause the final warnings. A search-and-replace to &lt;code&gt;https://&lt;/code&gt; usually clears them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Starting fresh?&lt;/strong&gt; A clean, standards-built base helps - see the &lt;a href="https://designtocodes.com/template-library/" rel="noopener noreferrer"&gt;DesignToCodes templates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;What finally fixed your "Not Secure" warning - cert, redirect, or mixed content? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>security</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Next.js vs Astro (2026): Pick by Content vs. App, Not Hype</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Fri, 28 Aug 2026 07:09:49 +0000</pubDate>
      <link>https://dev.to/designtocodes/nextjs-vs-astro-2026-pick-by-content-vs-app-not-hype-3df1</link>
      <guid>https://dev.to/designtocodes/nextjs-vs-astro-2026-pick-by-content-vs-app-not-hype-3df1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Next.js vs Astro in 2026? It's a content-vs-app question, not a hype contest. Here's the honest split, including when each loses.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The core difference
&lt;/h2&gt;

&lt;p&gt;Astro ships &lt;strong&gt;zero JS by default&lt;/strong&gt; (opt-in islands) — perfect for content. Next.js is a full React framework built for &lt;strong&gt;apps&lt;/strong&gt; and rich interactivity. One optimizes for lightness, the other for capability.&lt;/p&gt;

&lt;h2&gt;
  
  
  When each wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Astro:&lt;/strong&gt; blogs, docs, marketing, portfolios — lean HTML, top CWV with little effort, drop in a React island where needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next.js:&lt;/strong&gt; dashboards, auth, dynamic data, or one framework for marketing + product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SEO?
&lt;/h2&gt;

&lt;p&gt;Both excellent. Astro = light static-first HTML. Next.js = SSR + Metadata API. Pick by content-first vs app-first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio?
&lt;/h2&gt;

&lt;p&gt;Either. Content-only → Astro's lighter. Want it to grow into an app / know React → Next.js.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want a fast base?&lt;/strong&gt; The &lt;a href="https://designtocodes.com/product-category/nextjs/" rel="noopener noreferrer"&gt;DesignToCodes Next.js templates&lt;/a&gt; start you off quick.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Reaching for Astro or Next.js on your next build — and why? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>astro</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Developer, Designer, or One-Pager? Picking the Right Portfolio Template</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Tue, 25 Aug 2026 06:53:49 +0000</pubDate>
      <link>https://dev.to/designtocodes/developer-designer-or-one-pager-picking-the-right-portfolio-template-52j8</link>
      <guid>https://dev.to/designtocodes/developer-designer-or-one-pager-picking-the-right-portfolio-template-52j8</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Developer, designer, or launching-fast? The right portfolio template isn't the prettiest — it's the one built for how your field shows its work. Quick guide.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  One question decides it: what does your proof look like?
&lt;/h2&gt;

&lt;p&gt;Devs prove with projects, code, performance. Designers prove with visuals in context. Juniors/freelancers prove with a focused, fast first site. Match the template to that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The picks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NextGenAppsPro&lt;/strong&gt; — Next.js, fast, code-friendly, case-study ready. For developers. (free + pro editions)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grafik V2&lt;/strong&gt; — gallery-led, visual-first (Next.js or Elementor). For designers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MyDevFolio&lt;/strong&gt; — free one-page starter with a Figma file. For launching today.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What they share
&lt;/h2&gt;

&lt;p&gt;Same bar: fast enough for Core Web Vitals, responsive on real devices, clean license. The choice is fit, not quality.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Not sure?&lt;/strong&gt; Browse the &lt;a href="https://designtocodes.com/product-category/portfolio/" rel="noopener noreferrer"&gt;DesignToCodes portfolio templates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;What matters more to you in a portfolio base — speed or visual polish? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>design</category>
      <category>career</category>
      <category>showdev</category>
    </item>
    <item>
      <title>The Pricing Table Pattern That Converts (Copy-Paste Code)</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Fri, 21 Aug 2026 09:50:46 +0000</pubDate>
      <link>https://dev.to/designtocodes/the-pricing-table-pattern-that-converts-copy-paste-code-1oc7</link>
      <guid>https://dev.to/designtocodes/the-pricing-table-pattern-that-converts-copy-paste-code-1oc7</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;People don't read pricing tables. They scan them for permission to choose. Design for that and conversions follow. Copy-paste pattern below.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The rules
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Three tiers&lt;/strong&gt; — two feels thin, four paralyses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Highlight the middle&lt;/strong&gt; — "Most popular" badge + a subtle lift&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value lines, not features&lt;/strong&gt; — "Unlimited projects" &amp;gt; "project module"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One CTA per plan&lt;/strong&gt;, same weight&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Copy-paste it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pricing&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;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auto-fit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;minmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;220px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;))}&lt;/span&gt;
&lt;span class="nc"&gt;.tier&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;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#e5e7eb&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;12px&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;24px&lt;/span&gt;&lt;span class="p"&gt;;&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="nc"&gt;.tier.featured&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#4a9eff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;74&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;158&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;.15&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;translateY&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="nc"&gt;.badge&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;#4a9eff&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="m"&gt;#fff&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;3px&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;border-radius&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Full markup in the post — three &lt;code&gt;.tier&lt;/code&gt; cards, the middle one &lt;code&gt;.featured&lt;/code&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest psychology
&lt;/h2&gt;

&lt;p&gt;Anchoring makes the middle plan feel reasonable; "most popular" is social proof; fewer benefit-led lines lower the effort of comparing. Not manipulation when the plans are fair.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want tested blocks?&lt;/strong&gt; Grab &lt;a href="https://designtocodes.com/component-library/" rel="noopener noreferrer"&gt;DesignToCodes UI section kits&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Do highlighted "most popular" plans actually convert better for you? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>webdev</category>
      <category>design</category>
    </item>
    <item>
      <title>The Website Speed Checklist That Actually Moves Core Web Vitals</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Tue, 18 Aug 2026 06:49:15 +0000</pubDate>
      <link>https://dev.to/designtocodes/the-website-speed-checklist-that-actually-moves-core-web-vitals-195l</link>
      <guid>https://dev.to/designtocodes/the-website-speed-checklist-that-actually-moves-core-web-vitals-195l</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Almost every slow website fails on the same handful of things. Here's the checklist that actually moves Core Web Vitals — framework-agnostic, no fluff.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Measure first
&lt;/h2&gt;

&lt;p&gt;PageSpeed Insights: mobile &lt;em&gt;field&lt;/em&gt; data. LCP (load), INP (interactivity), CLS (shift). Fix in that order.&lt;/p&gt;

&lt;h2&gt;
  
  
  Images (biggest win)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WebP/AVIF, sized to their slot (not 3000px into 400px)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;loading="lazy"&lt;/code&gt; below the fold&lt;/li&gt;
&lt;li&gt;Preload the hero (it's your LCP)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JavaScript (INP killer)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Audit third-party scripts — chat/analytics/ads are often the heaviest thing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;defer&lt;/code&gt;/&lt;code&gt;async&lt;/code&gt; non-critical scripts&lt;/li&gt;
&lt;li&gt;Code-split heavy features&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fonts, caching, CLS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Self-host fonts, &lt;code&gt;font-display: swap&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Long cache headers + a CDN + Brotli&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;width&lt;/code&gt;/&lt;code&gt;height&lt;/code&gt; on everything → no shift&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The uncomfortable one
&lt;/h2&gt;

&lt;p&gt;If you've done all this and you're still slow, the template is the problem. Page-builder themes ship MBs you can't optimize away.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Need a lean base?&lt;/strong&gt; Browse fast &lt;a href="https://designtocodes.com/" rel="noopener noreferrer"&gt;DesignToCodes templates&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;What's the worst offender you've found in a Lighthouse audit? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webperf</category>
      <category>webdev</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What Solopreneurs Actually Need From a Website Template</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Fri, 14 Aug 2026 07:07:18 +0000</pubDate>
      <link>https://dev.to/designtocodes/what-solopreneurs-actually-need-from-a-website-template-1463</link>
      <guid>https://dev.to/designtocodes/what-solopreneurs-actually-need-from-a-website-template-1463</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;When you're the whole company, your website is your storefront, sales rep, and credibility at once. Here's what solopreneurs actually need from a template (and what to ignore).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Optimize for one flow
&lt;/h2&gt;

&lt;p&gt;What do you do → is it for me → can I trust you → how do I hire you. Build around that, not around showing off. A prospect with no one to follow up with needs the answers fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to look for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Clear hero: what you do + one action (book/quote/contact)&lt;/li&gt;
&lt;li&gt;Services or work, each with a benefit&lt;/li&gt;
&lt;li&gt;Proof — testimonials/results (trust is the whole sale)&lt;/li&gt;
&lt;li&gt;About + your face (people buy from people)&lt;/li&gt;
&lt;li&gt;Frictionless booking/contact&lt;/li&gt;
&lt;li&gt;Fast, editable solo, no lock-in&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free vs paid
&lt;/h2&gt;

&lt;p&gt;Free is great for starting/testing if you'll edit it yourself. Pay for a specific look, updates, support, or a guaranteed performance standard. A great free template + your time beats a mediocre paid one — but your time isn't free.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Starting out?&lt;/strong&gt; The free, hand-coded &lt;a href="https://designtocodes.com/product/nextgenappspro-free-portfolio-website-template/" rel="noopener noreferrer"&gt;NextGenAppsPro&lt;/a&gt; is a solid base.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Solo founders: what converts best for you — a form or a scheduling link? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>design</category>
      <category>startup</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Build a Fast Next.js Portfolio (App Router, next/image, Deploy)</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Tue, 11 Aug 2026 06:16:09 +0000</pubDate>
      <link>https://dev.to/designtocodes/build-a-fast-nextjs-portfolio-app-router-nextimage-deploy-6a9</link>
      <guid>https://dev.to/designtocodes/build-a-fast-nextjs-portfolio-app-router-nextimage-deploy-6a9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A Next.js portfolio is the best React project you can ship — it teaches routing, images, metadata, and deployment, and you end up with something you'll actually use. Here's the whole build.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Scaffold + structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-next-app@latest my-portfolio  &lt;span class="c"&gt;# App Router&lt;/span&gt;
app/
  page.tsx            // home
  projects/[slug]/page.tsx
  components/Hero.tsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;App Router = server-rendered by default, so your content is in the HTML crawlers read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Images + SEO (the two most-skipped bits)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Image&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;next/image&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Image&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/work.webp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Dashboard&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;priority&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sam Rivera — Front-End Engineer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;alternates&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;canonical&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://samrivera.dev&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;priority&lt;/code&gt; on the hero (it's your LCP). Metadata API for titles/canonicals, no plugin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; vercel &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; vercel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HTTPS, CDN, auto-deploys on push. Add a domain, done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you ship
&lt;/h2&gt;

&lt;p&gt;next/image + priority hero, next/font, Server Components by default, PageSpeed on mobile.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want a head start?&lt;/strong&gt; &lt;a href="https://designtocodes.com/product/nextgenappspro-next-js-portfolio-template-for-web-developers/" rel="noopener noreferrer"&gt;NextGenAppsPro&lt;/a&gt; ships this structure ready.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Building yours from scratch or a template? 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>A Responsive Image Gallery in ~30 Lines (Grid + Lightbox, No Library)</title>
      <dc:creator>DesignToCodes</dc:creator>
      <pubDate>Fri, 07 Aug 2026 11:11:39 +0000</pubDate>
      <link>https://dev.to/designtocodes/a-responsive-image-gallery-in-30-lines-grid-lightbox-no-library-48fb</link>
      <guid>https://dev.to/designtocodes/a-responsive-image-gallery-in-30-lines-grid-lightbox-no-library-48fb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;You don't need a carousel library for a gallery. CSS grid + ~15 lines of JS gives you a responsive, lazy-loaded gallery with a lightbox — and it loads faster than any plugin. Copy-paste below.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Grid does the responsive part for free
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.gallery&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;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;12px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auto-fill&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;minmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;240px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;))}&lt;/span&gt;
&lt;span class="nc"&gt;.gallery&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;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;height&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;object-fit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;cover&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;8px&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;auto-fill&lt;/code&gt; + &lt;code&gt;minmax()&lt;/code&gt; = reflows on every screen, zero media queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lightbox, no library
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;g&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;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.gallery&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;box&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assign&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;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),{&lt;/span&gt;&lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lightbox&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;g&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;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="o"&gt;=&amp;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;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;closest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&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="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;img src="&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;"&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&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;open&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);});&lt;/span&gt;
&lt;span class="nx"&gt;box&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;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;open&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;h2&gt;
  
  
  The perf bits that matter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WebP/AVIF thumbnails sized to their slot (not 3000px into 400px)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;loading="lazy"&lt;/code&gt; below the fold&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;width&lt;/code&gt;/&lt;code&gt;height&lt;/code&gt; set → no layout shift&lt;/li&gt;
&lt;li&gt;Full-res image loads only in the lightbox, on click&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want a tested one?&lt;/strong&gt; Grab a free &lt;a href="https://designtocodes.com/product/10-responsive-bootstrap-gallery-section-free-download/" rel="noopener noreferrer"&gt;responsive gallery section&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Vanilla lightbox or a library — what do you reach for? 👇&lt;/em&gt;&lt;/p&gt;

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