[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"topic:pagination-breadcrumbs":6,"blog-categories":100,"course-tree":124},{"data":4},{"google_site_verification":5,"ga4_measurement_id":5,"site_name":5,"default_og_image":5,"twitter_handle":5},null,{"data":7},{"id":8,"title":9,"slug":10,"content":11,"course":12,"subcategory":15,"author":18,"reading_time_minutes":24,"cornerstone":25,"schema_type":26,"faq_json":5,"video_url":5,"canonical_url":27,"meta_title":28,"meta_description":29,"og_image":5,"toc_json":30,"code_examples":68,"quiz":5,"exercises":86,"published_at":5,"updated_at":95,"prev":96,"next":5},153,"Pagination and Breadcrumbs: Accessible Navigation Patterns with HTML, CSS and Schema","pagination-breadcrumbs","\u003Ch2 id=\"what-are-pagination-and-breadcrumbs\">What are pagination and breadcrumbs?\u003C\u002Fh2>\u003Cp>\u003Cstrong>Breadcrumbs\u003C\u002Fstrong> show the user's location in a site hierarchy (Home \u002F Courses \u002F CSS \u002F Buttons) and let them jump back to a parent page. \u003Cstrong>Pagination\u003C\u002Fstrong> splits long lists, such as search results, blog posts or products, into pages so users can move through them. Both are wayfinding components: they reduce confusion, improve usability and help search engines understand site structure.\u003C\u002Fp>\u003Cp>Focus keyword: \u003Cstrong>pagination and breadcrumbs\u003C\u002Fstrong>. Related trending keywords: \u003Cem>accessible pagination\u003C\u002Fem>, \u003Cem>breadcrumb navigation CSS\u003C\u002Fem>, \u003Cem>aria-current page\u003C\u002Fem>, \u003Cem>BreadcrumbList schema\u003C\u002Fem>, \u003Cem>breadcrumb structured data\u003C\u002Fem>, \u003Cem>infinite scroll vs pagination\u003C\u002Fem>, \u003Cem>SEO friendly pagination\u003C\u002Fem>, \u003Cem>responsive pagination\u003C\u002Fem>.\u003C\u002Fp>\u003Ch2 id=\"breadcrumbs-semantic-html\">Breadcrumbs: semantic HTML\u003C\u002Fh2>\u003Cul>\u003Cli>Wrap them in \u003Ccode>&lt;nav aria-label='Breadcrumb'&gt;\u003C\u002Fcode> so screen readers can find the landmark.\u003C\u002Fli>\u003Cli>Use an ordered list \u003Ccode>&lt;ol&gt;\u003C\u002Fcode>, because the order is meaningful.\u003C\u002Fli>\u003Cli>Each ancestor is a link. The current page is the last item, marked with \u003Ccode>aria-current='page'\u003C\u002Fcode> (it can be plain text or a link).\u003C\u002Fli>\u003Cli>Do not put the separator characters in the HTML. Add them with CSS \u003Ccode>::before\u003C\u002Fcode> so they are not read aloud for every item.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"breadcrumbs-styling\">Breadcrumbs: styling\u003C\u002Fh2>\u003Cp>Use \u003Ccode>display: flex; flex-wrap: wrap; gap: 8px; list-style: none;\u003C\u002Fcode>. For the separator use \u003Ccode>li + li::before { content: '\u002F'; }\u003C\u002Fcode> or a chevron created with borders, and put it in \u003Ccode>aria-hidden\u003C\u002Fcode> territory by using CSS content (modern browsers also support alternative text like \u003Ccode>content: '\u002F' \u002F ''\u003C\u002Fcode> to silence it). Truncate long titles with \u003Ccode>text-overflow: ellipsis\u003C\u002Fcode> and a max width. On small screens you can show only the parent link, for example Back to Courses.\u003C\u002Fp>\u003Ch2 id=\"breadcrumb-structured-data-seo\">Breadcrumb structured data (SEO)\u003C\u002Fh2>\u003Cp>Add \u003Cstrong>BreadcrumbList\u003C\u002Fstrong> schema in JSON-LD so search engines can understand the hierarchy and may show the path in results. Each \u003Ccode>ListItem\u003C\u002Fcode> has a \u003Ccode>position\u003C\u002Fcode>, \u003Ccode>name\u003C\u002Fcode> and \u003Ccode>item\u003C\u002Fcode> (URL). Keep the structured data consistent with the visible breadcrumbs.\u003C\u002Fp>\u003Ch2 id=\"pagination-semantic-html\">Pagination: semantic HTML\u003C\u002Fh2>\u003Cul>\u003Cli>Use \u003Ccode>&lt;nav aria-label='Pagination'&gt;\u003C\u002Fcode> with a list of links.\u003C\u002Fli>\u003Cli>Use real links (\u003Ccode>&lt;a href='?page=2'&gt;\u003C\u002Fcode>) for server-rendered content so pages are shareable, crawlable and work without JavaScript. For client-side updates, use buttons and manage focus and live regions.\u003C\u002Fli>\u003Cli>Mark the current page with \u003Ccode>aria-current='page'\u003C\u002Fcode> and style it differently (not by color alone).\u003C\u002Fli>\u003Cli>Give links clear names: \u003Ccode>aria-label='Go to page 3'\u003C\u002Fcode>, \u003Ccode>aria-label='Previous page'\u003C\u002Fcode>, \u003Ccode>aria-label='Next page'\u003C\u002Fcode>.\u003C\u002Fli>\u003Cli>Disabled Previous or Next on the first or last page should use \u003Ccode>aria-disabled='true'\u003C\u002Fcode> (and no href) or be omitted.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"designing-pagination\">Designing pagination\u003C\u002Fh2>\u003Cul>\u003Cli>Show Previous, Next, the first and last page, and a few pages around the current one. Use an ellipsis for gaps, marked as non-interactive.\u003C\u002Fli>\u003Cli>Make targets at least 44px on touch devices or keep at least 24px with spacing.\u003C\u002Fli>\u003Cli>On small screens, show a compact form: Previous, Page 3 of 12, Next.\u003C\u002Fli>\u003Cli>Tell users the total: Showing 21 to 30 of 240 results.\u003C\u002Fli>\u003Cli>Keep the same order and position after navigation, and move focus to the results heading when content changes via JavaScript.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"pagination-load-more-or-infinite-scroll\">Pagination, load more or infinite scroll?\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cstrong>Pagination\u003C\u002Fstrong>: best for goal-oriented tasks like search results, tables and content that users need to return to, and it keeps the footer reachable.\u003C\u002Fli>\u003Cli>\u003Cstrong>Load more\u003C\u002Fstrong>: a good middle ground for browsing content with an explicit button.\u003C\u002Fli>\u003Cli>\u003Cstrong>Infinite scroll\u003C\u002Fstrong>: only for endless feeds. It harms orientation, keyboard access and footer access unless carefully designed.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"seo-notes-for-pagination\">SEO notes for pagination\u003C\u002Fh2>\u003Cp>Give each page a unique, crawlable URL and self-referencing canonical link. Avoid hiding pages behind JavaScript only. Search engines no longer use \u003Ccode>rel='prev'\u003C\u002Fcode> and \u003Ccode>rel='next'\u003C\u002Fcode> as an indexing signal, but they are harmless, and good internal links between pages still matter.\u003C\u002Fp>\u003Ch2 id=\"quick-summary\">Quick summary\u003C\u002Fh2>\u003Cp>Use \u003Ccode>nav\u003C\u002Fcode> landmarks with clear labels, lists, real links and \u003Ccode>aria-current='page'\u003C\u002Fcode> for both components. Add CSS separators for \u003Cstrong>breadcrumbs\u003C\u002Fstrong>, BreadcrumbList schema for SEO, and a compact, well-labeled layout for \u003Cstrong>pagination\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font-family: system-ui, sans-serif; padding: 24px; }\n  .crumbs ol { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; font-size: 15px; }\n  .crumbs li { display: flex; align-items: center; gap: 8px; }\n  .crumbs li + li::before { content: '\u002F' \u002F ''; color: #94a3b8; }\n  .crumbs a { color: #4f46e5; text-decoration: none; padding: 4px 2px; border-radius: 4px; }\n  .crumbs a:hover { text-decoration: underline; }\n  .crumbs a:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n  .crumbs [aria-current='page'] { color: #0f172a; font-weight: 700; max-width: 18ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n&lt;\u002Fstyle&gt;\n&lt;nav class='crumbs' aria-label='Breadcrumb'&gt;\n  &lt;ol&gt;\n    &lt;li&gt;&lt;a href='#'&gt;Home&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='#'&gt;Courses&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='#'&gt;CSS&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;span aria-current='page'&gt;UI Components and Buttons&lt;\u002Fspan&gt;&lt;\u002Fli&gt;\n  &lt;\u002Fol&gt;\n&lt;\u002Fnav&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;nav aria-label='Breadcrumb'&gt;\n  &lt;ol&gt;\n    &lt;li&gt;&lt;a href='\u002F'&gt;Home&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='\u002Fcourses'&gt;Courses&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='\u002Fcourses\u002Fcss'&gt;CSS&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li aria-current='page'&gt;Buttons&lt;\u002Fli&gt;\n  &lt;\u002Fol&gt;\n&lt;\u002Fnav&gt;\n\n&lt;script type='application\u002Fld+json'&gt;\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https:\u002F\u002Fexample.com\u002F\" },\n    { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Courses\", \"item\": \"https:\u002F\u002Fexample.com\u002Fcourses\" },\n    { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"CSS\", \"item\": \"https:\u002F\u002Fexample.com\u002Fcourses\u002Fcss\" },\n    { \"@type\": \"ListItem\", \"position\": 4, \"name\": \"Buttons\" }\n  ]\n}\n&lt;\u002Fscript&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font-family: system-ui, sans-serif; padding: 24px; }\n  .pager ul { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0; align-items: center; }\n  .pager a, .pager span.gap { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 12px; border-radius: 10px; text-decoration: none; color: #1e293b; border: 1px solid #cbd5e1; background: #fff; font-weight: 600; }\n  .pager a:hover { background: #eef2ff; }\n  .pager a:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n  .pager a[aria-current='page'] { background: #4f46e5; border-color: #4f46e5; color: #fff; }\n  .pager a[aria-disabled='true'] { opacity: .5; pointer-events: none; }\n  .pager span.gap { border: 0; background: none; }\n&lt;\u002Fstyle&gt;\n&lt;nav class='pager' aria-label='Pagination'&gt;\n  &lt;ul&gt;\n    &lt;li&gt;&lt;a aria-disabled='true' aria-label='Previous page'&gt;Prev&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='?page=1' aria-current='page' aria-label='Page 1, current page'&gt;1&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='?page=2' aria-label='Go to page 2'&gt;2&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='?page=3' aria-label='Go to page 3'&gt;3&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;span class='gap' aria-hidden='true'&gt;...&lt;\u002Fspan&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='?page=12' aria-label='Go to page 12'&gt;12&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n    &lt;li&gt;&lt;a href='?page=2' aria-label='Next page'&gt;Next&lt;\u002Fa&gt;&lt;\u002Fli&gt;\n  &lt;\u002Ful&gt;\n&lt;\u002Fnav&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font-family: system-ui, sans-serif; padding: 24px; max-width: 480px; }\n  ul.items { padding-left: 20px; min-height: 140px; }\n  .pager { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n  .pager button { min-width: 44px; height: 44px; padding: 0 12px; border: 1px solid #cbd5e1; border-radius: 10px; background: #fff; font: 600 15px system-ui; cursor: pointer; }\n  .pager button[aria-current='page'] { background: #4f46e5; border-color: #4f46e5; color: #fff; }\n  .pager button:disabled { opacity: .45; cursor: not-allowed; }\n  .pager button:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n&lt;\u002Fstyle&gt;\n&lt;h2 id='res' tabindex='-1'&gt;Results&lt;\u002Fh2&gt;\n&lt;p id='status' aria-live='polite'&gt;&lt;\u002Fp&gt;\n&lt;ul class='items' id='items'&gt;&lt;\u002Ful&gt;\n&lt;nav class='pager' aria-label='Pagination' id='pager'&gt;&lt;\u002Fnav&gt;\n&lt;script&gt;\n  var data = []; for (var i = 1; i &lt;= 47; i++) data.push('Item ' + i);\n  var perPage = 10, page = 1, total = Math.ceil(data.length \u002F perPage);\n  function render() {\n    var start = (page - 1) * perPage;\n    document.getElementById('items').innerHTML = data.slice(start, start + perPage).map(function (t) { return '&lt;li&gt;' + t + '&lt;\u002Fli&gt;'; }).join('');\n    document.getElementById('status').textContent = 'Showing ' + (start + 1) + ' to ' + Math.min(start + perPage, data.length) + ' of ' + data.length + ' results';\n    var nav = document.getElementById('pager'); nav.innerHTML = '';\n    function add(label, p, opts) {\n      var b = document.createElement('button'); b.type = 'button'; b.textContent = label;\n      if (opts &amp;&amp; opts.disabled) b.disabled = true;\n      if (opts &amp;&amp; opts.aria) b.setAttribute('aria-label', opts.aria);\n      if (opts &amp;&amp; opts.current) b.setAttribute('aria-current', 'page');\n      b.addEventListener('click', function () { page = p; render(); document.getElementById('res').focus(); });\n      nav.appendChild(b);\n    }\n    add('Prev', page - 1, { disabled: page === 1, aria: 'Previous page' });\n    for (var p = 1; p &lt;= total; p++) add(String(p), p, { current: p === page, aria: 'Go to page ' + p });\n    add('Next', page + 1, { disabled: page === total, aria: 'Next page' });\n  }\n  render();\n&lt;\u002Fscript&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font-family: system-ui, sans-serif; padding: 24px; }\n  .compact { display: flex; align-items: center; justify-content: space-between; gap: 12px; max-width: 420px; }\n  .compact a { display: inline-grid; place-items: center; min-height: 44px; padding: 0 16px; border-radius: 10px; background: #4f46e5; color: #fff; text-decoration: none; font-weight: 600; }\n  .compact a[aria-disabled='true'] { background: #cbd5e1; color: #64748b; pointer-events: none; }\n  .compact a:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n  .numbers { display: none; }\n  @media (min-width: 560px) { .numbers { display: inline; } .current-only { display: none; } }\n&lt;\u002Fstyle&gt;\n&lt;nav class='compact' aria-label='Pagination'&gt;\n  &lt;a aria-disabled='true' aria-label='Previous page'&gt;Prev&lt;\u002Fa&gt;\n  &lt;p style='margin:0'&gt;&lt;span class='current-only'&gt;Page 1 of 12&lt;\u002Fspan&gt;&lt;span class='numbers'&gt;1 2 3 ... 12&lt;\u002Fspan&gt;&lt;\u002Fp&gt;\n  &lt;a href='?page=2' aria-label='Next page'&gt;Next&lt;\u002Fa&gt;\n&lt;\u002Fnav&gt;\n&lt;p&gt;A compact mobile pattern: Previous, Page x of y, Next.&lt;\u002Fp&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>",{"name":13,"slug":14},"CSS","css",{"name":16,"slug":17},"UI Components","ui-components",{"slug":19,"display_name":20,"job_title":5,"short_bio":5,"expertise_tags":21,"headshot":5,"long_bio":5,"credentials":5,"twitter_url":5,"linkedin_url":5,"github_url":5,"personal_website_url":5,"other_sameas_urls":5,"topics":22,"posts":23},"badar-khalil","Badar Khalil",[],[],[],6,false,"Article","https:\u002F\u002Fwpfsharp.com\u002Ftopics\u002Fpagination-breadcrumbs","Pagination & Breadcrumbs: Accessible Navigation Patterns","Build accessible pagination and breadcrumbs with semantic HTML, aria-current, CSS separators, BreadcrumbList schema and a JavaScript pagination demo.",[31,36,40,44,48,52,56,60,64],{"id":32,"text":33,"level":34,"children":35},"what-are-pagination-and-breadcrumbs","What are pagination and breadcrumbs?",2,[],{"id":37,"text":38,"level":34,"children":39},"breadcrumbs-semantic-html","Breadcrumbs: semantic HTML",[],{"id":41,"text":42,"level":34,"children":43},"breadcrumbs-styling","Breadcrumbs: styling",[],{"id":45,"text":46,"level":34,"children":47},"breadcrumb-structured-data-seo","Breadcrumb structured data (SEO)",[],{"id":49,"text":50,"level":34,"children":51},"pagination-semantic-html","Pagination: semantic HTML",[],{"id":53,"text":54,"level":34,"children":55},"designing-pagination","Designing pagination",[],{"id":57,"text":58,"level":34,"children":59},"pagination-load-more-or-infinite-scroll","Pagination, load more or infinite scroll?",[],{"id":61,"text":62,"level":34,"children":63},"seo-notes-for-pagination","SEO notes for pagination",[],{"id":65,"text":66,"level":34,"children":67},"quick-summary","Quick summary",[],[69,74,77,80,83],{"id":70,"language":71,"code":72,"is_editable":73},629,"html","\u003Cstyle>\n  body { font-family: system-ui, sans-serif; padding: 24px; }\n  .crumbs ol { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; font-size: 15px; }\n  .crumbs li { display: flex; align-items: center; gap: 8px; }\n  .crumbs li + li::before { content: '\u002F' \u002F ''; color: #94a3b8; }\n  .crumbs a { color: #4f46e5; text-decoration: none; padding: 4px 2px; border-radius: 4px; }\n  .crumbs a:hover { text-decoration: underline; }\n  .crumbs a:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n  .crumbs [aria-current='page'] { color: #0f172a; font-weight: 700; max-width: 18ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\u003C\u002Fstyle>\n\u003Cnav class='crumbs' aria-label='Breadcrumb'>\n  \u003Col>\n    \u003Cli>\u003Ca href='#'>Home\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='#'>Courses\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='#'>CSS\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Cspan aria-current='page'>UI Components and Buttons\u003C\u002Fspan>\u003C\u002Fli>\n  \u003C\u002Fol>\n\u003C\u002Fnav>",true,{"id":75,"language":71,"code":76,"is_editable":73},630,"\u003Cnav aria-label='Breadcrumb'>\n  \u003Col>\n    \u003Cli>\u003Ca href='\u002F'>Home\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='\u002Fcourses'>Courses\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='\u002Fcourses\u002Fcss'>CSS\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli aria-current='page'>Buttons\u003C\u002Fli>\n  \u003C\u002Fol>\n\u003C\u002Fnav>\n\n\u003Cscript type='application\u002Fld+json'>\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https:\u002F\u002Fexample.com\u002F\" },\n    { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Courses\", \"item\": \"https:\u002F\u002Fexample.com\u002Fcourses\" },\n    { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"CSS\", \"item\": \"https:\u002F\u002Fexample.com\u002Fcourses\u002Fcss\" },\n    { \"@type\": \"ListItem\", \"position\": 4, \"name\": \"Buttons\" }\n  ]\n}\n\u003C\u002Fscript>",{"id":78,"language":71,"code":79,"is_editable":73},631,"\u003Cstyle>\n  body { font-family: system-ui, sans-serif; padding: 24px; }\n  .pager ul { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0; align-items: center; }\n  .pager a, .pager span.gap { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 12px; border-radius: 10px; text-decoration: none; color: #1e293b; border: 1px solid #cbd5e1; background: #fff; font-weight: 600; }\n  .pager a:hover { background: #eef2ff; }\n  .pager a:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n  .pager a[aria-current='page'] { background: #4f46e5; border-color: #4f46e5; color: #fff; }\n  .pager a[aria-disabled='true'] { opacity: .5; pointer-events: none; }\n  .pager span.gap { border: 0; background: none; }\n\u003C\u002Fstyle>\n\u003Cnav class='pager' aria-label='Pagination'>\n  \u003Cul>\n    \u003Cli>\u003Ca aria-disabled='true' aria-label='Previous page'>Prev\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='?page=1' aria-current='page' aria-label='Page 1, current page'>1\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='?page=2' aria-label='Go to page 2'>2\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='?page=3' aria-label='Go to page 3'>3\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Cspan class='gap' aria-hidden='true'>...\u003C\u002Fspan>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='?page=12' aria-label='Go to page 12'>12\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='?page=2' aria-label='Next page'>Next\u003C\u002Fa>\u003C\u002Fli>\n  \u003C\u002Ful>\n\u003C\u002Fnav>",{"id":81,"language":71,"code":82,"is_editable":73},632,"\u003Cstyle>\n  body { font-family: system-ui, sans-serif; padding: 24px; max-width: 480px; }\n  ul.items { padding-left: 20px; min-height: 140px; }\n  .pager { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n  .pager button { min-width: 44px; height: 44px; padding: 0 12px; border: 1px solid #cbd5e1; border-radius: 10px; background: #fff; font: 600 15px system-ui; cursor: pointer; }\n  .pager button[aria-current='page'] { background: #4f46e5; border-color: #4f46e5; color: #fff; }\n  .pager button:disabled { opacity: .45; cursor: not-allowed; }\n  .pager button:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n\u003C\u002Fstyle>\n\u003Ch2 id='res' tabindex='-1'>Results\u003C\u002Fh2>\n\u003Cp id='status' aria-live='polite'>\u003C\u002Fp>\n\u003Cul class='items' id='items'>\u003C\u002Ful>\n\u003Cnav class='pager' aria-label='Pagination' id='pager'>\u003C\u002Fnav>\n\u003Cscript>\n  var data = []; for (var i = 1; i \u003C= 47; i++) data.push('Item ' + i);\n  var perPage = 10, page = 1, total = Math.ceil(data.length \u002F perPage);\n  function render() {\n    var start = (page - 1) * perPage;\n    document.getElementById('items').innerHTML = data.slice(start, start + perPage).map(function (t) { return '\u003Cli>' + t + '\u003C\u002Fli>'; }).join('');\n    document.getElementById('status').textContent = 'Showing ' + (start + 1) + ' to ' + Math.min(start + perPage, data.length) + ' of ' + data.length + ' results';\n    var nav = document.getElementById('pager'); nav.innerHTML = '';\n    function add(label, p, opts) {\n      var b = document.createElement('button'); b.type = 'button'; b.textContent = label;\n      if (opts && opts.disabled) b.disabled = true;\n      if (opts && opts.aria) b.setAttribute('aria-label', opts.aria);\n      if (opts && opts.current) b.setAttribute('aria-current', 'page');\n      b.addEventListener('click', function () { page = p; render(); document.getElementById('res').focus(); });\n      nav.appendChild(b);\n    }\n    add('Prev', page - 1, { disabled: page === 1, aria: 'Previous page' });\n    for (var p = 1; p \u003C= total; p++) add(String(p), p, { current: p === page, aria: 'Go to page ' + p });\n    add('Next', page + 1, { disabled: page === total, aria: 'Next page' });\n  }\n  render();\n\u003C\u002Fscript>",{"id":84,"language":71,"code":85,"is_editable":73},633,"\u003Cstyle>\n  body { font-family: system-ui, sans-serif; padding: 24px; }\n  .compact { display: flex; align-items: center; justify-content: space-between; gap: 12px; max-width: 420px; }\n  .compact a { display: inline-grid; place-items: center; min-height: 44px; padding: 0 16px; border-radius: 10px; background: #4f46e5; color: #fff; text-decoration: none; font-weight: 600; }\n  .compact a[aria-disabled='true'] { background: #cbd5e1; color: #64748b; pointer-events: none; }\n  .compact a:focus-visible { outline: 3px solid #f59e0b; outline-offset: 2px; }\n  .numbers { display: none; }\n  @media (min-width: 560px) { .numbers { display: inline; } .current-only { display: none; } }\n\u003C\u002Fstyle>\n\u003Cnav class='compact' aria-label='Pagination'>\n  \u003Ca aria-disabled='true' aria-label='Previous page'>Prev\u003C\u002Fa>\n  \u003Cp style='margin:0'>\u003Cspan class='current-only'>Page 1 of 12\u003C\u002Fspan>\u003Cspan class='numbers'>1 2 3 ... 12\u003C\u002Fspan>\u003C\u002Fp>\n  \u003Ca href='?page=2' aria-label='Next page'>Next\u003C\u002Fa>\n\u003C\u002Fnav>\n\u003Cp>A compact mobile pattern: Previous, Page x of y, Next.\u003C\u002Fp>",[87],{"id":88,"title":89,"slug":90,"prompt":91,"starter_code":92,"expected_output":93,"language":71,"order_index":94},217,"Style an accessible breadcrumb with CSS separators","breadcrumb-css-separators","Use li + li::before to add a chevron or slash separator that is not read by screen readers. Mark the last item with aria-current='page', add a clear focus-visible style, and truncate the current page title with an ellipsis if it exceeds 20ch.","\u003Cstyle>\n  .crumbs ol { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; }\n  \u002F* TODO: separator with li + li::before *\u002F\n  \u002F* TODO: focus-visible and aria-current styles, ellipsis *\u002F\n\u003C\u002Fstyle>\n\u003Cnav class='crumbs' aria-label='Breadcrumb'>\n  \u003Col>\n    \u003Cli>\u003Ca href='#'>Home\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='#'>Shop\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href='#'>Shoes\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>Very long product name that should be truncated\u003C\u002Fli>\n  \u003C\u002Fol>\n\u003C\u002Fnav>","Breadcrumb items are separated with a visual separator, the current page is emphasized and truncated with an ellipsis, and links show a visible focus outline.",1,"2026-09-30T18:59:00+00:00",{"id":97,"slug":98,"title":99},152,"css-tooltips-popovers","CSS Tooltips and Popovers: Popover API, Anchor Positioning and Accessible Overlays",{"data":101},[102,105,109,114,119],{"name":13,"slug":14,"description":103,"post_count":34,"subcategories":104},"Learn CSS with practical tutorials and examples covering layouts, Flexbox, Grid, responsive design, typography, positioning, animations, and more.",[],{"name":106,"slug":71,"description":107,"post_count":34,"subcategories":108},"HTML","Learn HTML with practical tutorials and examples for beginners. Explore HTML tags, elements, attributes, links, images, forms, semantic HTML, and more with clear explanations and real code examples.",[],{"name":110,"slug":111,"description":112,"post_count":94,"subcategories":113},"WPF","wpf","Learn WPF with practical tutorials and examples covering XAML, windows, controls, layouts, data binding, MVVM, commands, styles, templates, debugging, and modern WPF UI development.",[],{"name":115,"slug":116,"description":117,"post_count":94,"subcategories":118},"Python","python","Learn Python with practical tutorials covering strings, lists, functions, exceptions, files, packages, virtual environments, modules, classes, and beginner programming concepts.",[],{"name":120,"slug":121,"description":122,"post_count":94,"subcategories":123},"Java","java","Learn Java with practical tutorials and examples for beginners. Explore Java syntax, variables, data types, classes, objects, methods, inheritance, exceptions, collections, and more with clear explanations and real code examples.",[],{"data":125},[126,447],{"id":94,"name":106,"slug":127,"icon":5,"icon_url":5,"short_description":128,"meta_title":129,"meta_description":130,"og_image":131,"locale":132,"subcategories":133},"html-tutorial","Welcome to our HTML Tutorial for Beginners, a complete guide designed to help you learn HTML from the ground up.\n\nHTML, which stands for HyperText Markup Language, is the standard language used to structure content on the web. Whether you want to become a web developer, build your own website, or continue learning CSS and JavaScript, understanding HTML is an essential first step.\n\nThis HTML course takes you through the fundamentals step by step, using simple explanations and practical examples. ","HTML Tutorial for Beginners - Learn HTML Step by Step","Learn HTML from scratch with our beginner-friendly HTML tutorial. Understand HTML tags, elements, forms, tables, links, images, semantic HTML and more with practical examples.","https:\u002F\u002Fwpfsharp.com\u002Fstorage\u002Fcourses\u002Fog\u002F01M2GK0XN45C0B937NF9XFAD4S.webp","en",[134,159,195,219,295,329,343,371,395,411],{"id":94,"name":135,"slug":136,"order_index":94,"topics":137},"HTML Fundamentals & Setup","html-fundamentals-setup",[138,141,144,148,152,156],{"id":34,"title":139,"slug":140,"order_index":94,"cornerstone":25,"reading_time_minutes":34},"HTML Editors & Environment Setup","html-editors-and-environment-setup",{"id":94,"title":142,"slug":143,"order_index":94,"cornerstone":25,"reading_time_minutes":94},"HTML Introduction & History","html-introduction-and-history",{"id":145,"title":146,"slug":147,"order_index":145,"cornerstone":25,"reading_time_minutes":34},3,"HTML Basic Syntax & Document Structure","html-basic-syntax-document-structure",{"id":149,"title":150,"slug":151,"order_index":149,"cornerstone":25,"reading_time_minutes":34},4,"HTML Elements & Tags Explained","html-elements-tags-explained",{"id":153,"title":154,"slug":155,"order_index":153,"cornerstone":25,"reading_time_minutes":34},5,"HTML Attributes (Global & Standard)","html-attributes-global-standard",{"id":24,"title":157,"slug":158,"order_index":24,"cornerstone":25,"reading_time_minutes":34},"Understanding the DOCTYPE & HTML5 Boilerplate","understanding-doctype-html5-boilerplate",{"id":34,"name":160,"slug":161,"order_index":34,"topics":162},"Text & Content Basics","text-content-basics",[163,167,171,175,179,183,187,191],{"id":164,"title":165,"slug":166,"order_index":164,"cornerstone":25,"reading_time_minutes":34},7,"HTML Headings (H1–H6) & SEO Best Practices","html-headings-h1-h6-seo-best-practices",{"id":168,"title":169,"slug":170,"order_index":168,"cornerstone":25,"reading_time_minutes":34},8,"HTML Paragraphs & Line Breaks","html-paragraphs-line-breaks",{"id":172,"title":173,"slug":174,"order_index":172,"cornerstone":25,"reading_time_minutes":94},9,"HTML Text Formatting (Bold, Italic, Mark, etc.)","html-text-formatting-bold-italic-mark",{"id":176,"title":177,"slug":178,"order_index":176,"cornerstone":25,"reading_time_minutes":34},10,"HTML Styles (Inline CSS Basics)","html-styles-inline-css-basics",{"id":180,"title":181,"slug":182,"order_index":180,"cornerstone":25,"reading_time_minutes":34},11,"HTML Quotations & Citations (blockquote, q, cite)","html-quotations-citations-blockquote-q-cite",{"id":184,"title":185,"slug":186,"order_index":184,"cornerstone":25,"reading_time_minutes":34},12,"HTML Comments (Best Practices)","html-comments-best-practices",{"id":188,"title":189,"slug":190,"order_index":188,"cornerstone":25,"reading_time_minutes":34},13,"HTML Colors (Names, HEX, RGB, HSL)","html-colors-names-hex-rgb-hsl",{"id":192,"title":193,"slug":194,"order_index":192,"cornerstone":25,"reading_time_minutes":34},14,"HTML & CSS Integration (Inline, Internal, External)","html-css-integration-inline-internal-external",{"id":145,"name":196,"slug":197,"order_index":145,"topics":198},"Links, Media & Navigation","links-media-navigation",[199,203,207,211,215],{"id":200,"title":201,"slug":202,"order_index":200,"cornerstone":25,"reading_time_minutes":34},15,"HTML Links (Anchor Tags & Hyperlinks)","html-links-anchor-tags-hyperlinks",{"id":204,"title":205,"slug":206,"order_index":204,"cornerstone":25,"reading_time_minutes":34},16,"HTML Images (Alt Text, Lazy Loading, Formats)","html-images-alt-text-lazy-loading-formats",{"id":208,"title":209,"slug":210,"order_index":208,"cornerstone":25,"reading_time_minutes":94},17,"HTML Favicon Setup","html-favicon-setup",{"id":212,"title":213,"slug":214,"order_index":212,"cornerstone":25,"reading_time_minutes":34},18,"HTML Page Title & Meta Tags (SEO Essentials)","html-page-title-meta-tags-seo-essentials",{"id":216,"title":217,"slug":218,"order_index":216,"cornerstone":25,"reading_time_minutes":34},19,"HTML File Paths (Absolute vs Relative)","html-file-paths-absolute-vs-relative",{"id":149,"name":220,"slug":221,"order_index":149,"topics":222},"Structuring Content","structuring-content",[223,228,233,238,243,247,251,255,259,263,267,271,275,279,283,287,291],{"id":224,"title":225,"slug":226,"order_index":227,"cornerstone":25,"reading_time_minutes":34},24,"HTML Tables Explained: Rows, Columns & Merging Cells","html-tables-rows-columns-merging-cells",20,{"id":229,"title":230,"slug":231,"order_index":232,"cornerstone":25,"reading_time_minutes":34},25,"HTML Lists: Ordered, Unordered & Description Lists","html-lists-ordered-unordered-description",21,{"id":234,"title":235,"slug":236,"order_index":237,"cornerstone":25,"reading_time_minutes":34},26,"HTML Block vs Inline Elements Explained","html-block-vs-inline-elements",22,{"id":239,"title":240,"slug":241,"order_index":242,"cornerstone":25,"reading_time_minutes":94},27,"HTML Div & Span: Generic Containers Explained","html-div-and-span-containers",23,{"id":244,"title":245,"slug":246,"order_index":224,"cornerstone":25,"reading_time_minutes":34},28,"HTML Classes vs ID: Selectors Explained","html-classes-vs-id-selectors-explained",{"id":248,"title":249,"slug":250,"order_index":229,"cornerstone":25,"reading_time_minutes":94},29,"HTML Iframes: Embedding External Content","html-iframes-embedding-content",{"id":252,"title":253,"slug":254,"order_index":234,"cornerstone":25,"reading_time_minutes":34},30,"HTML Head Element Deep Dive","html-head-element-deep-dive",{"id":256,"title":257,"slug":258,"order_index":239,"cornerstone":25,"reading_time_minutes":34},31,"HTML Layout Techniques: Header, Nav & Footer","html-layout-techniques-header-nav-footer",{"id":260,"title":261,"slug":262,"order_index":244,"cornerstone":25,"reading_time_minutes":34},32,"Responsive HTML Design: Mobile-First Approach","responsive-html-design-mobile-first-approach",{"id":264,"title":265,"slug":266,"order_index":248,"cornerstone":25,"reading_time_minutes":145},74,"HTML Semantic Elements (article, section, aside, nav)","html-semantic-elements-article-section-aside-nav",{"id":268,"title":269,"slug":270,"order_index":252,"cornerstone":25,"reading_time_minutes":34},75,"HTML Style Guide & Coding Conventions","html-style-guide-coding-conventions",{"id":272,"title":273,"slug":274,"order_index":256,"cornerstone":25,"reading_time_minutes":34},76,"HTML Entities & Special Characters","html-entities-special-characters",{"id":276,"title":277,"slug":278,"order_index":260,"cornerstone":25,"reading_time_minutes":94},77,"HTML Symbols","html-symbols",{"id":280,"title":281,"slug":282,"order_index":280,"cornerstone":25,"reading_time_minutes":94},33,"HTML Emojis 😀: How to Use Them in Web Pages","html-emojis-trending-guide",{"id":284,"title":285,"slug":286,"order_index":284,"cornerstone":25,"reading_time_minutes":34},34,"HTML Character Sets: UTF-8 & Encoding Explained","html-character-sets-utf-8-encoding",{"id":288,"title":289,"slug":290,"order_index":288,"cornerstone":25,"reading_time_minutes":94},35,"HTML URL Encoding Explained","html-url-encoding-explained",{"id":292,"title":293,"slug":294,"order_index":292,"cornerstone":25,"reading_time_minutes":94},36,"HTML vs XHTML: Key Differences","html-vs-xhtml-key-differences",{"id":164,"name":296,"slug":297,"order_index":153,"topics":298},"Forms & User Input","forms-user-input",[299,304,309,314,319,324],{"id":300,"title":301,"slug":302,"order_index":303,"cornerstone":25,"reading_time_minutes":34},49,"HTML Forms Introduction","html-forms-introduction",37,{"id":305,"title":306,"slug":307,"order_index":308,"cornerstone":25,"reading_time_minutes":94},50,"HTML Form Attributes (action, method, etc.)","html-form-attributes-action-method",38,{"id":310,"title":311,"slug":312,"order_index":313,"cornerstone":25,"reading_time_minutes":94},51,"HTML Form Elements (input, select, textarea, button)","html-form-elements-input-select-textarea-button",39,{"id":315,"title":316,"slug":317,"order_index":318,"cornerstone":25,"reading_time_minutes":34},52,"HTML Input Types (Modern Types: email, date, color, range)","html-input-types-modern-email-date-color-range",40,{"id":320,"title":321,"slug":322,"order_index":323,"cornerstone":25,"reading_time_minutes":34},53,"HTML Input Attributes (required, placeholder, pattern)","html-input-attributes-required-placeholder-pattern",41,{"id":325,"title":326,"slug":327,"order_index":328,"cornerstone":25,"reading_time_minutes":34},54,"HTML Form Validation (Client-Side)","html-form-validation-client-side",42,{"id":168,"name":330,"slug":331,"order_index":24,"topics":332},"Graphics & Visuals","graphics-visuals",[333,338],{"id":334,"title":335,"slug":336,"order_index":337,"cornerstone":25,"reading_time_minutes":145},55,"HTML Canvas (2D Drawing API) 🔥","html-canvas-2d-drawing-api",43,{"id":339,"title":340,"slug":341,"order_index":342,"cornerstone":25,"reading_time_minutes":145},56,"HTML SVG (Scalable Vector Graphics)","html-svg-scalable-vector-graphics",44,{"id":172,"name":344,"slug":345,"order_index":164,"topics":346},"Multimedia","multimedia",[347,352,357,362,367],{"id":348,"title":349,"slug":350,"order_index":351,"cornerstone":25,"reading_time_minutes":34},57,"HTML Media Overview","html-media-overview",45,{"id":353,"title":354,"slug":355,"order_index":356,"cornerstone":25,"reading_time_minutes":34},58,"HTML Video Embedding (Native Player)","html-video-embedding-native-player",46,{"id":358,"title":359,"slug":360,"order_index":361,"cornerstone":25,"reading_time_minutes":34},59,"HTML Audio Embedding","html-audio-embedding",47,{"id":363,"title":364,"slug":365,"order_index":366,"cornerstone":25,"reading_time_minutes":34},60,"HTML Plug-ins (Object & Embed Tags)","html-plugins-object-embed-tags",48,{"id":368,"title":369,"slug":370,"order_index":300,"cornerstone":25,"reading_time_minutes":34},61,"Embedding YouTube Videos in HTML","embedding-youtube-videos-in-html",{"id":176,"name":372,"slug":373,"order_index":168,"topics":374},"HTML5 Web APIs (Advanced\u002FTrending)","html5-web-apis-advancedtrending",[375,379,383,387,391],{"id":376,"title":377,"slug":378,"order_index":305,"cornerstone":25,"reading_time_minutes":34},62,"HTML Geolocation API","html-geolocation-api",{"id":380,"title":381,"slug":382,"order_index":310,"cornerstone":25,"reading_time_minutes":34},63,"HTML Drag & Drop API","html-drag-and-drop-api",{"id":384,"title":385,"slug":386,"order_index":315,"cornerstone":25,"reading_time_minutes":34},64,"HTML Web Storage (localStorage & sessionStorage)","html-web-storage-localstorage-sessionstorage",{"id":388,"title":389,"slug":390,"order_index":320,"cornerstone":25,"reading_time_minutes":34},65,"HTML Web Workers (Background Processing)","html-web-workers-background-processing",{"id":392,"title":393,"slug":394,"order_index":325,"cornerstone":25,"reading_time_minutes":34},66,"HTML Server-Sent Events (SSE)","html-server-sent-events-sse",{"id":180,"name":396,"slug":397,"order_index":172,"topics":398},"Accessibility & Best Practices (High-Demand  Skill) �","accessibility-best-practices-high-demand-skill",[399,403,407],{"id":400,"title":401,"slug":402,"order_index":334,"cornerstone":25,"reading_time_minutes":34},67,"HTML Accessibility (ARIA, Screen Readers)","html-accessibility-aria-screen-readers",{"id":404,"title":405,"slug":406,"order_index":339,"cornerstone":25,"reading_time_minutes":34},68,"Writing Semantic & SEO-Friendly HTML","writing-semantic-and-seo-friendly-html",{"id":408,"title":409,"slug":410,"order_index":348,"cornerstone":25,"reading_time_minutes":34},69,"HTML Performance Optimization Basics","html-performance-optimization-basics",{"id":184,"name":412,"slug":413,"order_index":176,"topics":414},"Reference & Practice","reference-practice",[415,419,423,427,431,435,439,443],{"id":416,"title":417,"slug":418,"order_index":94,"cornerstone":25,"reading_time_minutes":34},70,"HTML Tag List (Full Reference)","html-tag-list-full-reference",{"id":420,"title":421,"slug":422,"order_index":34,"cornerstone":25,"reading_time_minutes":34},71,"HTML Global Attributes Reference","html-global-attributes-reference",{"id":424,"title":425,"slug":426,"order_index":145,"cornerstone":25,"reading_time_minutes":34},72,"HTML Events Reference","html-events-reference",{"id":428,"title":429,"slug":430,"order_index":149,"cornerstone":25,"reading_time_minutes":34},73,"HTML Browser Support & Compatibility","html-browser-support-compatibility",{"id":432,"title":433,"slug":434,"order_index":153,"cornerstone":25,"reading_time_minutes":34},78,"HTML Doctypes Reference","html-doctypes-reference",{"id":436,"title":437,"slug":438,"order_index":24,"cornerstone":25,"reading_time_minutes":34},79,"HTTP Methods & Messages (Basics for Forms\u002FAPIs)","http-methods-messages-basics",{"id":440,"title":441,"slug":442,"order_index":164,"cornerstone":25,"reading_time_minutes":145},80,"HTML Interview Preparation (Top Q&A)","html-interview-preparation-top-qa",{"id":444,"title":445,"slug":446,"order_index":168,"cornerstone":25,"reading_time_minutes":94},81,"HTML Quiz & Practice Exercises","html-quiz-practice-exercises",{"id":34,"name":13,"slug":14,"icon":5,"icon_url":5,"short_description":448,"meta_title":449,"meta_description":450,"og_image":5,"locale":132,"subcategories":451},"Master CSS from basics to advanced. Learn styling, layouts, Flexbox, Grid, and responsive design with practical examples.","CSS Course - Learn CSS from Scratch to Advanced","Learn CSS (Cascading Style Sheets) step by step. Master selectors, layouts, Flexbox, Grid, animations, and responsive web design with hands-on examples.",[452,473,497,533,565,597,629,661,689,717],{"id":242,"name":16,"slug":17,"order_index":453,"topics":454},0,[455,459,463,467,471,472],{"id":456,"title":457,"slug":458,"order_index":368,"cornerstone":25,"reading_time_minutes":24},148,"CSS Buttons: Variants, States, Sizes and Accessible Button Design","css-buttons",{"id":460,"title":461,"slug":462,"order_index":376,"cornerstone":25,"reading_time_minutes":24},149,"CSS Card Component: Layouts with Flexbox, Grid, Container Queries and Subgrid","css-cards",{"id":464,"title":465,"slug":466,"order_index":380,"cornerstone":25,"reading_time_minutes":164},150,"CSS Navbar and Dropdown Menus: Responsive, Sticky and Accessible Navigation","css-navbar-dropdowns",{"id":468,"title":469,"slug":470,"order_index":384,"cornerstone":25,"reading_time_minutes":24},151,"HTML and CSS Forms and Inputs: Styled, Accessible and Validated Form Controls","css-forms-inputs",{"id":97,"title":99,"slug":98,"order_index":388,"cornerstone":25,"reading_time_minutes":24},{"id":8,"title":9,"slug":10,"order_index":392,"cornerstone":25,"reading_time_minutes":24},{"id":188,"name":474,"slug":475,"order_index":453,"topics":476},"CSS Fundamentals & Setup","css-fundamentals-setup",[477,481,485,489,493],{"id":478,"title":479,"slug":480,"order_index":94,"cornerstone":25,"reading_time_minutes":149},82,"CSS Introduction & History: What Is CSS and Why It Matters","css-introduction-and-history",{"id":482,"title":483,"slug":484,"order_index":34,"cornerstone":25,"reading_time_minutes":149},83,"CSS Syntax & How Browsers Apply Styles","css-syntax-how-browsers-apply-styles",{"id":486,"title":487,"slug":488,"order_index":145,"cornerstone":25,"reading_time_minutes":145},84,"Setting Up Your CSS Workspace: Linking Files & Live Server","setting-up-css-workspace-linking-files-live-server",{"id":490,"title":491,"slug":492,"order_index":149,"cornerstone":25,"reading_time_minutes":145},85,"CSS Comments & Code Formatting Best Practices","css-comments-and-code-formatting",{"id":494,"title":495,"slug":496,"order_index":153,"cornerstone":25,"reading_time_minutes":153},86,"Browser DevTools for CSS: Inspect, Debug & Edit Styles Live","browser-devtools-for-css",{"id":192,"name":498,"slug":499,"order_index":453,"topics":500},"Selectors & the Cascade","selectors-the-cascade",[501,505,509,513,517,521,525,529],{"id":502,"title":503,"slug":504,"order_index":24,"cornerstone":25,"reading_time_minutes":149},87,"CSS Basic Selectors: Type, Class, ID, Universal & Grouping","css-basic-selectors",{"id":506,"title":507,"slug":508,"order_index":164,"cornerstone":25,"reading_time_minutes":149},88,"CSS Combinators: Descendant, Child, Adjacent & General Sibling","css-combinators",{"id":510,"title":511,"slug":512,"order_index":168,"cornerstone":25,"reading_time_minutes":149},89,"CSS Attribute Selectors: [attr], ^=, $=, *= and More","css-attribute-selectors",{"id":514,"title":515,"slug":516,"order_index":172,"cornerstone":25,"reading_time_minutes":24},90,"CSS Pseudo-classes: :hover, :focus, :nth-child & Modern Selectors","css-pseudo-classes",{"id":518,"title":519,"slug":520,"order_index":176,"cornerstone":25,"reading_time_minutes":153},91,"CSS Pseudo-elements (::before, ::after)","css-pseudo-elements-before-after",{"id":522,"title":523,"slug":524,"order_index":180,"cornerstone":25,"reading_time_minutes":153},92,"Modern CSS Selectors: :is(), :where(), :has()","modern-css-selectors-is-where-has",{"id":526,"title":527,"slug":528,"order_index":184,"cornerstone":25,"reading_time_minutes":149},93,"CSS Specificity Explained","css-specificity-explained",{"id":530,"title":531,"slug":532,"order_index":188,"cornerstone":25,"reading_time_minutes":153},94,"Cascade, Inheritance & !important","css-cascade-inheritance-important",{"id":200,"name":534,"slug":535,"order_index":453,"topics":536},"Colors, Backgrounds & Effects","colors-backgrounds-effects",[537,541,545,549,553,557,561],{"id":538,"title":539,"slug":540,"order_index":192,"cornerstone":25,"reading_time_minutes":153},95,"CSS Colors (HEX, RGB, HSL, OKLCH)","css-colors-hex-rgb-hsl-oklch",{"id":542,"title":543,"slug":544,"order_index":200,"cornerstone":25,"reading_time_minutes":149},96,"CSS Backgrounds","css-backgrounds",{"id":546,"title":547,"slug":548,"order_index":204,"cornerstone":25,"reading_time_minutes":153},97,"CSS Gradients (Linear, Radial, Conic)","css-gradients-linear-radial-conic",{"id":550,"title":551,"slug":552,"order_index":208,"cornerstone":25,"reading_time_minutes":153},98,"CSS Borders, Outlines & Rounded Corners","css-borders-outlines-rounded-corners",{"id":554,"title":555,"slug":556,"order_index":212,"cornerstone":25,"reading_time_minutes":24},99,"CSS Box Shadow & Text Shadow","css-box-shadow-text-shadow",{"id":558,"title":559,"slug":560,"order_index":216,"cornerstone":25,"reading_time_minutes":153},100,"CSS Opacity & Blend Modes","css-opacity-blend-modes",{"id":562,"title":563,"slug":564,"order_index":227,"cornerstone":25,"reading_time_minutes":24},101,"CSS Filters & backdrop-filter (Glassmorphism)","css-filters-backdrop-filter-glassmorphism",{"id":204,"name":566,"slug":567,"order_index":453,"topics":568},"Box Model & Spacing","box-model-spacing",[569,573,577,581,585,589,593],{"id":570,"title":571,"slug":572,"order_index":232,"cornerstone":25,"reading_time_minutes":164},102,"The CSS Box Model: Content, Padding, Border and Margin","css-box-model",{"id":574,"title":575,"slug":576,"order_index":237,"cornerstone":25,"reading_time_minutes":164},103,"CSS Margin and Margin Collapse","css-margin-and-margin-collapse",{"id":578,"title":579,"slug":580,"order_index":242,"cornerstone":25,"reading_time_minutes":24},104,"CSS Padding: Shorthand, Percentages and Best Practices","css-padding",{"id":582,"title":583,"slug":584,"order_index":224,"cornerstone":25,"reading_time_minutes":172},105,"CSS Width, Height, Min-Width, Max-Width, Min-Height & Max-Height","css-width-height-min-max",{"id":586,"title":587,"slug":588,"order_index":229,"cornerstone":25,"reading_time_minutes":153},106,"CSS box-sizing: content-box vs border-box","css-box-sizing",{"id":590,"title":591,"slug":592,"order_index":234,"cornerstone":25,"reading_time_minutes":164},107,"CSS Overflow: hidden, scroll, auto, clip and Text Truncation","css-overflow",{"id":594,"title":595,"slug":596,"order_index":239,"cornerstone":25,"reading_time_minutes":164},108,"CSS Units: px, rem, em, %, vw, vh and dvh","css-units",{"id":208,"name":598,"slug":599,"order_index":453,"topics":600},"Typography & Text","typography-text",[601,605,609,613,617,621,625],{"id":602,"title":603,"slug":604,"order_index":244,"cornerstone":25,"reading_time_minutes":164},109,"CSS Text Properties: Alignment, Spacing, Decoration and Wrapping","css-text-properties",{"id":606,"title":607,"slug":608,"order_index":248,"cornerstone":25,"reading_time_minutes":164},110,"CSS Fonts and font-family: Font Stacks, Weights and System Fonts","css-fonts-font-family",{"id":610,"title":611,"slug":612,"order_index":252,"cornerstone":25,"reading_time_minutes":164},111,"Web Fonts: Google Fonts, @font-face and Variable Fonts","web-fonts",{"id":614,"title":615,"slug":616,"order_index":256,"cornerstone":25,"reading_time_minutes":164},112,"CSS Text Effects: text-wrap balance, line-clamp, Ellipsis and More","css-text-effects",{"id":618,"title":619,"slug":620,"order_index":260,"cornerstone":25,"reading_time_minutes":168},113,"Styling Links","styling-links-css",{"id":622,"title":623,"slug":624,"order_index":280,"cornerstone":25,"reading_time_minutes":164},114,"Styling Lists & Tables","styling-lists-and-tables-css",{"id":626,"title":627,"slug":628,"order_index":284,"cornerstone":25,"reading_time_minutes":176},115,"Icons (SVG & Icon Fonts)","icons-svg-and-icon-fonts",{"id":212,"name":630,"slug":631,"order_index":453,"topics":632},"Display, Position & Layout Basics","display-position-layout-basics",[633,637,641,645,649,653,657],{"id":634,"title":635,"slug":636,"order_index":288,"cornerstone":25,"reading_time_minutes":164},116,"Display & Inline-block","display-and-inline-block",{"id":638,"title":639,"slug":640,"order_index":292,"cornerstone":25,"reading_time_minutes":24},117,"Position (relative, absolute, fixed, sticky)","position-relative-absolute-fixed-sticky",{"id":642,"title":643,"slug":644,"order_index":303,"cornerstone":25,"reading_time_minutes":24},118,"Z-index & Stacking Contexts","z-index-and-stacking-contexts",{"id":646,"title":647,"slug":648,"order_index":308,"cornerstone":25,"reading_time_minutes":153},119,"Float & Clear (Legacy, and Why to Avoid It)","float-and-clear",{"id":650,"title":651,"slug":652,"order_index":313,"cornerstone":25,"reading_time_minutes":24},120,"Centering Techniques","centering-techniques",{"id":654,"title":655,"slug":656,"order_index":318,"cornerstone":25,"reading_time_minutes":164},121,"aspect-ratio & object-fit","aspect-ratio-and-object-fit",{"id":658,"title":659,"slug":660,"order_index":323,"cornerstone":25,"reading_time_minutes":168},122,"Website Layout Basics","website-layout-basics",{"id":227,"name":662,"slug":663,"order_index":453,"topics":664},"The Modern CSS Toolkit","the-modern-css-toolkit",[665,669,673,677,681,685],{"id":666,"title":667,"slug":668,"order_index":328,"cornerstone":25,"reading_time_minutes":168},129,"CSS Variables (Custom Properties)","css-variables-custom-properties",{"id":670,"title":671,"slug":672,"order_index":337,"cornerstone":25,"reading_time_minutes":168},130,"Math Functions (calc, min, max, clamp)","math-functions-calc-min-max-clamp",{"id":674,"title":675,"slug":676,"order_index":342,"cornerstone":25,"reading_time_minutes":164},131,"Native CSS Nesting","native-css-nesting",{"id":678,"title":679,"slug":680,"order_index":351,"cornerstone":25,"reading_time_minutes":164},132,"Cascade Layers (@layer)","cascade-layers-at-layer",{"id":682,"title":683,"slug":684,"order_index":356,"cornerstone":25,"reading_time_minutes":172},133,"Dark Mode (prefers-color-scheme, light-dark())","dark-mode-prefers-color-scheme-light-dark",{"id":686,"title":687,"slug":688,"order_index":361,"cornerstone":25,"reading_time_minutes":168},134,"CSS Reset & Normalize","css-reset-and-normalize",{"id":232,"name":690,"slug":691,"order_index":453,"topics":692},"Responsive Design","responsive-design",[693,697,701,705,709,713],{"id":694,"title":695,"slug":696,"order_index":366,"cornerstone":25,"reading_time_minutes":172},135,"Mobile-First & the Viewport","mobile-first-and-the-viewport",{"id":698,"title":699,"slug":700,"order_index":300,"cornerstone":25,"reading_time_minutes":168},136,"Media Queries","media-queries",{"id":702,"title":703,"slug":704,"order_index":305,"cornerstone":25,"reading_time_minutes":168},137,"Responsive Images & Video","responsive-images-and-video",{"id":706,"title":707,"slug":708,"order_index":310,"cornerstone":25,"reading_time_minutes":172},138,"Fluid Typography with clamp()","fluid-typography-with-clamp",{"id":710,"title":711,"slug":712,"order_index":315,"cornerstone":25,"reading_time_minutes":172},139,"Container Queries","container-queries",{"id":714,"title":715,"slug":716,"order_index":320,"cornerstone":25,"reading_time_minutes":184},140,"Responsive Navigation Pattern","responsive-navigation-pattern",{"id":237,"name":718,"slug":719,"order_index":453,"topics":720},"Transitions & Animation","transitions-animation",[721,725,729,733,737,741,745],{"id":722,"title":723,"slug":724,"order_index":325,"cornerstone":25,"reading_time_minutes":153},141,"CSS Transitions: Smooth State Changes with transition, @starting-style and allow-discrete","css-transitions",{"id":726,"title":727,"slug":728,"order_index":334,"cornerstone":25,"reading_time_minutes":149},142,"CSS 2D Transforms: translate, rotate, scale, skew and transform-origin","css-2d-transforms",{"id":730,"title":731,"slug":732,"order_index":339,"cornerstone":25,"reading_time_minutes":153},143,"CSS 3D Transforms: perspective, preserve-3d, rotateX\u002FY and backface-visibility","css-3d-transforms",{"id":734,"title":735,"slug":736,"order_index":348,"cornerstone":25,"reading_time_minutes":153},144,"CSS Keyframe Animations: @keyframes, animation shorthand, fill-mode and @property","css-keyframe-animations",{"id":738,"title":739,"slug":740,"order_index":353,"cornerstone":25,"reading_time_minutes":153},145,"CSS Scroll-Driven Animations: animation-timeline, scroll() and view()","css-scroll-driven-animations",{"id":742,"title":743,"slug":744,"order_index":358,"cornerstone":25,"reading_time_minutes":153},146,"CSS View Transitions API: Progressive Enhancement for Page and State Animations","css-view-transitions",{"id":746,"title":747,"slug":748,"order_index":363,"cornerstone":25,"reading_time_minutes":24},147,"Motion Accessibility and Performance: prefers-reduced-motion, will-change and Smooth 60fps Animations","motion-accessibility-prefers-reduced-motion-performance"]