[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"topic:website-layout-basics":6,"blog-categories":147,"course-tree":171},{"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":97,"quiz":5,"exercises":122,"published_at":5,"updated_at":138,"prev":139,"next":143},122,"Website Layout Basics","website-layout-basics","\u003Ch2 id=\"website-layout-basics-build-a-complete-page-layout-with-css\">Website Layout Basics: Build a Complete Page Layout with CSS\u003C\u002Fh2>\u003Cp>\u003Cstrong>Focus keyword: website layout basics.\u003C\u002Fstrong> A website layout is the structure that organises content into header, navigation, main content, sidebar and footer. In this lesson you will combine everything from this chapter (display, position, z-index, centering and media) with flexbox and grid to build a clean, responsive, accessible page layout. All examples are live, so edit them and resize the preview.\u003C\u002Fp>\u003Ch3 id=\"trending-keywords-covered-in-this-lesson\">Trending keywords covered in this lesson\u003C\u002Fh3>\u003Cp>CSS layout tutorial, responsive web design, mobile-first CSS, CSS grid layout, grid-template-areas, flexbox navigation, holy grail layout, sticky footer, semantic HTML5 layout, max-width container, box-sizing border-box, clamp() fluid spacing, media queries, container queries, auto-fit minmax, CSS gap, logical properties, dvh, accessibility landmarks, skip link.\u003C\u002Fp>\u003Ch2 id=\"1-start-with-semantic-html\">1. Start with Semantic HTML\u003C\u002Fh2>\u003Cp>Use meaningful elements. They give structure to search engines and assistive technology (landmarks):\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>header\u003C\u002Fcode>: site or section heading area (logo, title).\u003C\u002Fli>\u003Cli>\u003Ccode>nav\u003C\u002Fcode>: main navigation links.\u003C\u002Fli>\u003Cli>\u003Ccode>main\u003C\u002Fcode>: the unique main content (one per page).\u003C\u002Fli>\u003Cli>\u003Ccode>article\u003C\u002Fcode> and \u003Ccode>section\u003C\u002Fcode>: self-contained content and thematic groups.\u003C\u002Fli>\u003Cli>\u003Ccode>aside\u003C\u002Fcode>: sidebar or related content.\u003C\u002Fli>\u003Cli>\u003Ccode>footer\u003C\u002Fcode>: copyright, links, contact.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Add a \u003Cstrong>skip link\u003C\u002Fstrong> at the top (\u003Ccode>a href='#main'\u003C\u002Fcode>) so keyboard users can jump past the navigation.\u003C\u002Fp>\u003Ch2 id=\"2-global-reset-for-layout\">2. Global Reset for Layout\u003C\u002Fh2>\u003Cp>Start every project with a small reset:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>*, *::before, *::after { box-sizing: border-box; }\u003C\u002Fcode> so padding and border are included in width.\u003C\u002Fli>\u003Cli>\u003Ccode>body { margin: 0; }\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>\u003Ccode>img, video { max-width: 100%; height: auto; display: block; }\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>A readable base: \u003Ccode>font: 1rem\u002F1.6 system-ui, sans-serif;\u003C\u002Fcode>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"3-the-container-pattern\">3. The Container Pattern\u003C\u002Fh2>\u003Cp>Text that runs across a huge screen is hard to read. Limit width and center the content: \u003Ccode>.container { width: min(100% - 2rem, 1100px); margin-inline: auto; }\u003C\u002Fcode>. The \u003Ccode>min()\u003C\u002Fcode> function gives a 1rem side gap on small screens and stops at 1100px on large screens. Keep paragraphs around 60 to 75 characters wide using \u003Ccode>max-width: 65ch\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch2 id=\"4-choosing-the-right-layout-tool\">4. Choosing the Right Layout Tool\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cstrong>Normal flow:\u003C\u002Fstrong> default stacking of blocks, perfect for articles.\u003C\u002Fli>\u003Cli>\u003Cstrong>Flexbox:\u003C\u002Fstrong> one dimension (rows or columns). Use for navbars, button groups, cards content and centering.\u003C\u002Fli>\u003Cli>\u003Cstrong>Grid:\u003C\u002Fstrong> two dimensions. Use for page skeletons, galleries and dashboards.\u003C\u002Fli>\u003Cli>\u003Cstrong>Position:\u003C\u002Fstrong> small adjustments, overlays, badges and sticky elements.\u003C\u002Fli>\u003Cli>\u003Cstrong>Float:\u003C\u002Fstrong> only for text wrap.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"5-page-skeleton-with-css-grid-areas\">5. Page Skeleton with CSS Grid Areas\u003C\u002Fh2>\u003Cp>Name your regions with \u003Ccode>grid-template-areas\u003C\u002Fcode> and assign them using \u003Ccode>grid-area\u003C\u002Fcode>. It is readable and easy to change for each breakpoint. A classic holy grail layout (header, sidebar, content, footer) takes only a few lines. On small screens show a single column, then on wider screens define two columns.\u003C\u002Fp>\u003Ch2 id=\"6-sticky-footer\">6. Sticky Footer\u003C\u002Fh2>\u003Cp>To keep the footer at the bottom on short pages, make the body a grid or flex column with \u003Ccode>min-height: 100dvh\u003C\u002Fcode>, and let the main area grow. With grid use \u003Ccode>grid-template-rows: auto 1fr auto\u003C\u002Fcode>. With flex use \u003Ccode>flex: 1\u003C\u002Fcode> on main.\u003C\u002Fp>\u003Ch2 id=\"7-navigation-bar-with-flexbox\">7. Navigation Bar with Flexbox\u003C\u002Fh2>\u003Cp>Use \u003Ccode>display: flex; align-items: center; gap: 1rem;\u003C\u002Fcode> on the nav list, remove bullets, and push the last item away with \u003Ccode>margin-left: auto\u003C\u002Fcode>. Wrap links on small screens with \u003Ccode>flex-wrap: wrap\u003C\u002Fcode>. Keep tap targets at least 44px tall. Make the header sticky with \u003Ccode>position: sticky; top: 0;\u003C\u002Fcode> and a z-index from your scale.\u003C\u002Fp>\u003Ch2 id=\"8-responsive-design-mobile-first\">8. Responsive Design: Mobile First\u003C\u002Fh2>\u003Cp>Write the small screen styles first and add complexity with \u003Ccode>min-width\u003C\u002Fcode> media queries. Add \u003Ccode>meta name='viewport' content='width=device-width, initial-scale=1'\u003C\u002Fcode> in the HTML head, otherwise mobile browsers zoom out and your layout will not respond. Common breakpoints: 600px (large phone), 900px (tablet), 1200px (desktop), but let your content decide when to break.\u003C\u002Fp>\u003Ch3 id=\"fluid-techniques-that-reduce-media-queries\">Fluid techniques that reduce media queries\u003C\u002Fh3>\u003Cul>\u003Cli>\u003Ccode>repeat(auto-fit, minmax(240px, 1fr))\u003C\u002Fcode> builds a card grid that wraps by itself.\u003C\u002Fli>\u003Cli>\u003Ccode>clamp(1rem, 2vw + 0.5rem, 1.5rem)\u003C\u002Fcode> creates fluid font sizes and spacing.\u003C\u002Fli>\u003Cli>\u003Ccode>flex-wrap: wrap\u003C\u002Fcode> with \u003Ccode>flex: 1 1 240px\u003C\u002Fcode> on items.\u003C\u002Fli>\u003Cli>\u003Cstrong>Container queries\u003C\u002Fstrong> (\u003Ccode>container-type: inline-size\u003C\u002Fcode> and \u003Ccode>@container\u003C\u002Fcode>) let a component adapt to its parent width instead of the viewport.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"9-spacing-system\">9. Spacing System\u003C\u002Fh2>\u003Cp>Use a consistent scale with custom properties such as \u003Ccode>--space-1: .25rem\u003C\u002Fcode>, \u003Ccode>--space-2: .5rem\u003C\u002Fcode>, \u003Ccode>--space-3: 1rem\u003C\u002Fcode>, \u003Ccode>--space-4: 2rem\u003C\u002Fcode>, \u003Ccode>--space-5: 4rem\u003C\u002Fcode>. Use \u003Ccode>gap\u003C\u002Fcode> instead of margins between siblings, and \u003Ccode>padding-block\u003C\u002Fcode> for vertical section spacing.\u003C\u002Fp>\u003Ch2 id=\"10-layout-accessibility-checklist\">10. Layout Accessibility Checklist\u003C\u002Fh2>\u003Cul>\u003Cli>Use landmarks (header, nav, main, aside, footer) and only one \u003Ccode>main\u003C\u002Fcode>.\u003C\u002Fli>\u003Cli>Keep DOM order equal to the visual order.\u003C\u002Fli>\u003Cli>Provide a visible focus style and a skip link.\u003C\u002Fli>\u003Cli>Do not disable zoom, and use rem and relative units.\u003C\u002Fli>\u003Cli>Check contrast and test with the keyboard only.\u003C\u002Fli>\u003Cli>Respect \u003Ccode>prefers-reduced-motion\u003C\u002Fcode> for animations.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"11-build-order-workflow\">11. Build Order Workflow\u003C\u002Fh2>\u003Col>\u003Cli>Write semantic HTML with no CSS and check the reading order.\u003C\u002Fli>\u003Cli>Add the reset, typography and the container.\u003C\u002Fli>\u003Cli>Build the mobile layout in a single column.\u003C\u002Fli>\u003Cli>Add the grid or flex skeleton at the first breakpoint.\u003C\u002Fli>\u003Cli>Polish components: navbar, cards, buttons and footer.\u003C\u002Fli>\u003Cli>Test on real devices, zoom and keyboard.\u003C\u002Fli>\u003C\u002Fol>\u003Ch2 id=\"12-common-mistakes\">12. Common Mistakes\u003C\u002Fh2>\u003Cul>\u003Cli>Forgetting the viewport meta tag.\u003C\u002Fli>\u003Cli>Using fixed pixel widths that overflow on phones.\u003C\u002Fli>\u003Cli>Using tables or floats for page layout.\u003C\u002Fli>\u003Cli>Nesting too many wrappers (div soup).\u003C\u002Fli>\u003Cli>Using height: 100vh for full-page sections and cutting content on mobile (use min-height with dvh).\u003C\u002Fli>\u003Cli>Adding horizontal scroll by using width: 100vw together with a vertical scrollbar.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"key-takeaways\">Key Takeaways\u003C\u002Fh2>\u003Cp>Start with semantic HTML, reset box sizing, constrain the width with a container, use grid for the page skeleton and flexbox for components, build mobile first, and rely on fluid techniques like auto-fit and clamp. Good layouts are simple, accessible and flexible.\u003C\u002Fp>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px\u002F1.6 system-ui, sans-serif; display: grid; grid-template-rows: auto 1fr auto; min-height: 100dvh; }\n  header, footer { background: #264653; color: #fff; padding: 16px; }\n  .container { width: min(100% - 2rem, 1000px); margin-inline: auto; }\n  main { padding: 24px 0; }\n  .layout { display: grid; gap: 16px; grid-template-areas: 'content' 'side'; }\n  .content { grid-area: content; background: #f1f5f9; padding: 16px; }\n  .side { grid-area: side; background: #e9c46a; padding: 16px; }\n  @media (min-width: 700px) {\n    .layout { grid-template-columns: 1fr 260px; grid-template-areas: 'content side'; }\n  }\n&lt;\u002Fstyle&gt;\n&lt;header&gt;&lt;div class='container'&gt;&lt;strong&gt;My Website&lt;\u002Fstrong&gt;&lt;\u002Fdiv&gt;&lt;\u002Fheader&gt;\n&lt;main&gt;\n  &lt;div class='container layout'&gt;\n    &lt;article class='content'&gt;&lt;h2&gt;Main content&lt;\u002Fh2&gt;&lt;p&gt;Resize the preview. Below 700px the sidebar moves under the content.&lt;\u002Fp&gt;&lt;\u002Farticle&gt;\n    &lt;aside class='side'&gt;&lt;h3&gt;Sidebar&lt;\u002Fh3&gt;&lt;p&gt;Related links&lt;\u002Fp&gt;&lt;\u002Faside&gt;\n  &lt;\u002Fdiv&gt;\n&lt;\u002Fmain&gt;\n&lt;footer&gt;&lt;div class='container'&gt;Sticky footer, always at the bottom&lt;\u002Fdiv&gt;&lt;\u002Ffooter&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; min-height: 200px; }\n  .skip { position: absolute; left: -999px; top: 0; background: #ffb703; padding: 8px 12px; }\n  .skip:focus { left: 8px; top: 8px; z-index: 1000; }\n  .header { position: sticky; top: 0; z-index: 200; background: #0b2545; color: #fff; }\n  .nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; padding: 12px 16px; }\n  .nav .logo { font-weight: 800; font-size: 20px; }\n  .nav a { color: #fff; text-decoration: none; padding: 10px 4px; min-height: 44px; }\n  .nav a:hover, .nav a:focus-visible { text-decoration: underline; text-underline-offset: .25em; }\n  .nav .push { margin-left: auto; background: #13a89e; padding: 10px 18px; border-radius: 999px; }\n&lt;\u002Fstyle&gt;\n&lt;a class='skip' href='#main'&gt;Skip to content&lt;\u002Fa&gt;\n&lt;header class='header'&gt;\n  &lt;nav class='nav' aria-label='Main'&gt;\n    &lt;span class='logo'&gt;Brand&lt;\u002Fspan&gt;\n    &lt;a href='#'&gt;Home&lt;\u002Fa&gt;&lt;a href='#'&gt;Courses&lt;\u002Fa&gt;&lt;a href='#'&gt;Blog&lt;\u002Fa&gt;\n    &lt;a class='push' href='#'&gt;Sign in&lt;\u002Fa&gt;\n  &lt;\u002Fnav&gt;\n&lt;\u002Fheader&gt;\n&lt;main id='main' style='padding:16px'&gt;Press Tab to reveal the skip link. Resize to see the nav wrap.&lt;\u002Fmain&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; padding: 16px; }\n  .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }\n  .card { border: 1px solid #d0d7de; border-radius: 12px; padding: 16px; background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.06); }\n  .card h3 { margin-top: 0; font-size: clamp(1.1rem, 1vw + 0.9rem, 1.5rem); }\n&lt;\u002Fstyle&gt;\n&lt;div class='cards'&gt;\n  &lt;article class='card'&gt;&lt;h3&gt;HTML&lt;\u002Fh3&gt;&lt;p&gt;Structure of every page.&lt;\u002Fp&gt;&lt;\u002Farticle&gt;\n  &lt;article class='card'&gt;&lt;h3&gt;CSS&lt;\u002Fh3&gt;&lt;p&gt;Design and layout.&lt;\u002Fp&gt;&lt;\u002Farticle&gt;\n  &lt;article class='card'&gt;&lt;h3&gt;JavaScript&lt;\u002Fh3&gt;&lt;p&gt;Interactivity.&lt;\u002Fp&gt;&lt;\u002Farticle&gt;\n  &lt;article class='card'&gt;&lt;h3&gt;Accessibility&lt;\u002Fh3&gt;&lt;p&gt;Usable by everyone.&lt;\u002Fp&gt;&lt;\u002Farticle&gt;\n&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; display: flex; flex-direction: column; min-height: 100dvh; }\n  header { background: #264653; color: #fff; padding: 16px; }\n  main { flex: 1; padding: 16px; }\n  footer { background: #111; color: #fff; padding: 16px; text-align: center; }\n&lt;\u002Fstyle&gt;\n&lt;header&gt;Header&lt;\u002Fheader&gt;\n&lt;main&gt;Short content. The footer still sticks to the bottom because main uses flex: 1.&lt;\u002Fmain&gt;\n&lt;footer&gt;Footer&lt;\u002Ffooter&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; padding: 16px; }\n  .wrap { container-type: inline-size; resize: horizontal; overflow: auto; border: 2px dashed #888; padding: 12px; max-width: 100%; }\n  .product { display: grid; gap: 12px; padding: 12px; background: #f1f5f9; border-radius: 12px; }\n  .thumb { background: #219ebc; aspect-ratio: 4 \u002F 3; border-radius: 8px; }\n  @container (min-width: 480px) {\n    .product { grid-template-columns: 180px 1fr; align-items: center; }\n  }\n&lt;\u002Fstyle&gt;\n&lt;p&gt;Drag the bottom right corner of the dashed box to resize it:&lt;\u002Fp&gt;\n&lt;div class='wrap'&gt;\n  &lt;div class='product'&gt;&lt;div class='thumb'&gt;&lt;\u002Fdiv&gt;&lt;div&gt;&lt;h3&gt;Container query card&lt;\u002Fh3&gt;&lt;p&gt;This card changes layout based on its parent width, not the screen width.&lt;\u002Fp&gt;&lt;\u002Fdiv&gt;&lt;\u002Fdiv&gt;\n&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  :root {\n    --space-1: .25rem; --space-2: .5rem; --space-3: 1rem; --space-4: 2rem; --space-5: 4rem;\n    --brand: #0b5fff;\n  }\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 1rem\u002F1.6 system-ui, sans-serif; }\n  .section { padding-block: var(--space-5); }\n  .container { width: min(100% - 2rem, 960px); margin-inline: auto; }\n  .hero { background: linear-gradient(135deg, #e0ecff, #ffffff); text-align: center; }\n  .hero h1 { font-size: clamp(2rem, 4vw + 1rem, 3.5rem); margin: 0 0 var(--space-3); }\n  .hero p { max-width: 60ch; margin-inline: auto; }\n  .btn { display: inline-block; margin-top: var(--space-3); padding: var(--space-2) var(--space-4); background: var(--brand); color: #fff; border-radius: 999px; text-decoration: none; }\n&lt;\u002Fstyle&gt;\n&lt;section class='section hero'&gt;\n  &lt;div class='container'&gt;\n    &lt;h1&gt;Build modern layouts&lt;\u002Fh1&gt;\n    &lt;p&gt;Fluid type, a spacing scale and a centered container give you a solid base for every website.&lt;\u002Fp&gt;\n    &lt;a class='btn' href='#'&gt;Start learning&lt;\u002Fa&gt;\n  &lt;\u002Fdiv&gt;\n&lt;\u002Fsection&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-javascript\">\u003Cpre>\u003Ccode>const layoutChecklist = [\n  'Semantic HTML landmarks',\n  'Viewport meta tag',\n  'box-sizing: border-box reset',\n  'Container with max-width',\n  'Grid for page skeleton',\n  'Flexbox for components',\n  'Mobile first media queries',\n  'Visible focus and skip link'\n];\n\nlayoutChecklist.forEach(function (item, index) {\n  console.log('[ ] ' + (index + 1) + '. ' + item);\n});\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>",{"name":13,"slug":14},"CSS","css",{"name":16,"slug":17},"Display, Position & Layout Basics","display-position-layout-basics",{"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",[],[],[],8,false,"Article","https:\u002F\u002Fwpfsharp.com\u002Ftopics\u002Fwebsite-layout-basics","Website Layout Basics: Header, Grid, Flexbox & Responsive","Learn website layout basics with CSS: semantic HTML, header, nav, main, sidebar, footer, grid areas, sticky footer, container width, responsive design and best practices.",[31,41,45,49,53,57,61,65,69,77,81,85,89,93],{"id":32,"text":33,"level":34,"children":35},"website-layout-basics-build-a-complete-page-layout-with-css","Website Layout Basics: Build a Complete Page Layout with CSS",2,[36],{"id":37,"text":38,"level":39,"children":40},"trending-keywords-covered-in-this-lesson","Trending keywords covered in this lesson",3,[],{"id":42,"text":43,"level":34,"children":44},"1-start-with-semantic-html","1. Start with Semantic HTML",[],{"id":46,"text":47,"level":34,"children":48},"2-global-reset-for-layout","2. Global Reset for Layout",[],{"id":50,"text":51,"level":34,"children":52},"3-the-container-pattern","3. The Container Pattern",[],{"id":54,"text":55,"level":34,"children":56},"4-choosing-the-right-layout-tool","4. Choosing the Right Layout Tool",[],{"id":58,"text":59,"level":34,"children":60},"5-page-skeleton-with-css-grid-areas","5. Page Skeleton with CSS Grid Areas",[],{"id":62,"text":63,"level":34,"children":64},"6-sticky-footer","6. Sticky Footer",[],{"id":66,"text":67,"level":34,"children":68},"7-navigation-bar-with-flexbox","7. Navigation Bar with Flexbox",[],{"id":70,"text":71,"level":34,"children":72},"8-responsive-design-mobile-first","8. Responsive Design: Mobile First",[73],{"id":74,"text":75,"level":39,"children":76},"fluid-techniques-that-reduce-media-queries","Fluid techniques that reduce media queries",[],{"id":78,"text":79,"level":34,"children":80},"9-spacing-system","9. Spacing System",[],{"id":82,"text":83,"level":34,"children":84},"10-layout-accessibility-checklist","10. Layout Accessibility Checklist",[],{"id":86,"text":87,"level":34,"children":88},"11-build-order-workflow","11. Build Order Workflow",[],{"id":90,"text":91,"level":34,"children":92},"12-common-mistakes","12. Common Mistakes",[],{"id":94,"text":95,"level":34,"children":96},"key-takeaways","Key Takeaways",[],[98,103,106,109,112,115,118],{"id":99,"language":100,"code":101,"is_editable":102},439,"html","\u003Cstyle>\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px\u002F1.6 system-ui, sans-serif; display: grid; grid-template-rows: auto 1fr auto; min-height: 100dvh; }\n  header, footer { background: #264653; color: #fff; padding: 16px; }\n  .container { width: min(100% - 2rem, 1000px); margin-inline: auto; }\n  main { padding: 24px 0; }\n  .layout { display: grid; gap: 16px; grid-template-areas: 'content' 'side'; }\n  .content { grid-area: content; background: #f1f5f9; padding: 16px; }\n  .side { grid-area: side; background: #e9c46a; padding: 16px; }\n  @media (min-width: 700px) {\n    .layout { grid-template-columns: 1fr 260px; grid-template-areas: 'content side'; }\n  }\n\u003C\u002Fstyle>\n\u003Cheader>\u003Cdiv class='container'>\u003Cstrong>My Website\u003C\u002Fstrong>\u003C\u002Fdiv>\u003C\u002Fheader>\n\u003Cmain>\n  \u003Cdiv class='container layout'>\n    \u003Carticle class='content'>\u003Ch2>Main content\u003C\u002Fh2>\u003Cp>Resize the preview. Below 700px the sidebar moves under the content.\u003C\u002Fp>\u003C\u002Farticle>\n    \u003Caside class='side'>\u003Ch3>Sidebar\u003C\u002Fh3>\u003Cp>Related links\u003C\u002Fp>\u003C\u002Faside>\n  \u003C\u002Fdiv>\n\u003C\u002Fmain>\n\u003Cfooter>\u003Cdiv class='container'>Sticky footer, always at the bottom\u003C\u002Fdiv>\u003C\u002Ffooter>",true,{"id":104,"language":100,"code":105,"is_editable":102},440,"\u003Cstyle>\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; min-height: 200px; }\n  .skip { position: absolute; left: -999px; top: 0; background: #ffb703; padding: 8px 12px; }\n  .skip:focus { left: 8px; top: 8px; z-index: 1000; }\n  .header { position: sticky; top: 0; z-index: 200; background: #0b2545; color: #fff; }\n  .nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; padding: 12px 16px; }\n  .nav .logo { font-weight: 800; font-size: 20px; }\n  .nav a { color: #fff; text-decoration: none; padding: 10px 4px; min-height: 44px; }\n  .nav a:hover, .nav a:focus-visible { text-decoration: underline; text-underline-offset: .25em; }\n  .nav .push { margin-left: auto; background: #13a89e; padding: 10px 18px; border-radius: 999px; }\n\u003C\u002Fstyle>\n\u003Ca class='skip' href='#main'>Skip to content\u003C\u002Fa>\n\u003Cheader class='header'>\n  \u003Cnav class='nav' aria-label='Main'>\n    \u003Cspan class='logo'>Brand\u003C\u002Fspan>\n    \u003Ca href='#'>Home\u003C\u002Fa>\u003Ca href='#'>Courses\u003C\u002Fa>\u003Ca href='#'>Blog\u003C\u002Fa>\n    \u003Ca class='push' href='#'>Sign in\u003C\u002Fa>\n  \u003C\u002Fnav>\n\u003C\u002Fheader>\n\u003Cmain id='main' style='padding:16px'>Press Tab to reveal the skip link. Resize to see the nav wrap.\u003C\u002Fmain>",{"id":107,"language":100,"code":108,"is_editable":102},441,"\u003Cstyle>\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; padding: 16px; }\n  .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }\n  .card { border: 1px solid #d0d7de; border-radius: 12px; padding: 16px; background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.06); }\n  .card h3 { margin-top: 0; font-size: clamp(1.1rem, 1vw + 0.9rem, 1.5rem); }\n\u003C\u002Fstyle>\n\u003Cdiv class='cards'>\n  \u003Carticle class='card'>\u003Ch3>HTML\u003C\u002Fh3>\u003Cp>Structure of every page.\u003C\u002Fp>\u003C\u002Farticle>\n  \u003Carticle class='card'>\u003Ch3>CSS\u003C\u002Fh3>\u003Cp>Design and layout.\u003C\u002Fp>\u003C\u002Farticle>\n  \u003Carticle class='card'>\u003Ch3>JavaScript\u003C\u002Fh3>\u003Cp>Interactivity.\u003C\u002Fp>\u003C\u002Farticle>\n  \u003Carticle class='card'>\u003Ch3>Accessibility\u003C\u002Fh3>\u003Cp>Usable by everyone.\u003C\u002Fp>\u003C\u002Farticle>\n\u003C\u002Fdiv>",{"id":110,"language":100,"code":111,"is_editable":102},442,"\u003Cstyle>\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; display: flex; flex-direction: column; min-height: 100dvh; }\n  header { background: #264653; color: #fff; padding: 16px; }\n  main { flex: 1; padding: 16px; }\n  footer { background: #111; color: #fff; padding: 16px; text-align: center; }\n\u003C\u002Fstyle>\n\u003Cheader>Header\u003C\u002Fheader>\n\u003Cmain>Short content. The footer still sticks to the bottom because main uses flex: 1.\u003C\u002Fmain>\n\u003Cfooter>Footer\u003C\u002Ffooter>",{"id":113,"language":100,"code":114,"is_editable":102},443,"\u003Cstyle>\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 16px system-ui, sans-serif; padding: 16px; }\n  .wrap { container-type: inline-size; resize: horizontal; overflow: auto; border: 2px dashed #888; padding: 12px; max-width: 100%; }\n  .product { display: grid; gap: 12px; padding: 12px; background: #f1f5f9; border-radius: 12px; }\n  .thumb { background: #219ebc; aspect-ratio: 4 \u002F 3; border-radius: 8px; }\n  @container (min-width: 480px) {\n    .product { grid-template-columns: 180px 1fr; align-items: center; }\n  }\n\u003C\u002Fstyle>\n\u003Cp>Drag the bottom right corner of the dashed box to resize it:\u003C\u002Fp>\n\u003Cdiv class='wrap'>\n  \u003Cdiv class='product'>\u003Cdiv class='thumb'>\u003C\u002Fdiv>\u003Cdiv>\u003Ch3>Container query card\u003C\u002Fh3>\u003Cp>This card changes layout based on its parent width, not the screen width.\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003C\u002Fdiv>",{"id":116,"language":100,"code":117,"is_editable":102},444,"\u003Cstyle>\n  :root {\n    --space-1: .25rem; --space-2: .5rem; --space-3: 1rem; --space-4: 2rem; --space-5: 4rem;\n    --brand: #0b5fff;\n  }\n  *, *::before, *::after { box-sizing: border-box; }\n  body { margin: 0; font: 1rem\u002F1.6 system-ui, sans-serif; }\n  .section { padding-block: var(--space-5); }\n  .container { width: min(100% - 2rem, 960px); margin-inline: auto; }\n  .hero { background: linear-gradient(135deg, #e0ecff, #ffffff); text-align: center; }\n  .hero h1 { font-size: clamp(2rem, 4vw + 1rem, 3.5rem); margin: 0 0 var(--space-3); }\n  .hero p { max-width: 60ch; margin-inline: auto; }\n  .btn { display: inline-block; margin-top: var(--space-3); padding: var(--space-2) var(--space-4); background: var(--brand); color: #fff; border-radius: 999px; text-decoration: none; }\n\u003C\u002Fstyle>\n\u003Csection class='section hero'>\n  \u003Cdiv class='container'>\n    \u003Ch1>Build modern layouts\u003C\u002Fh1>\n    \u003Cp>Fluid type, a spacing scale and a centered container give you a solid base for every website.\u003C\u002Fp>\n    \u003Ca class='btn' href='#'>Start learning\u003C\u002Fa>\n  \u003C\u002Fdiv>\n\u003C\u002Fsection>",{"id":119,"language":120,"code":121,"is_editable":102},445,"javascript","const layoutChecklist = [\n  'Semantic HTML landmarks',\n  'Viewport meta tag',\n  'box-sizing: border-box reset',\n  'Container with max-width',\n  'Grid for page skeleton',\n  'Flexbox for components',\n  'Mobile first media queries',\n  'Visible focus and skip link'\n];\n\nlayoutChecklist.forEach(function (item, index) {\n  console.log('[ ] ' + (index + 1) + '. ' + item);\n});",[123,131],{"id":124,"title":125,"slug":126,"prompt":127,"starter_code":128,"expected_output":129,"language":100,"order_index":130},167,"Build a Holy Grail Layout","build-holy-grail-layout","Use grid-template-areas to create a page with a header on top, a footer at the bottom, and a sidebar and main content in between. On screens under 700px stack everything in one column. Make the footer stick to the bottom on short pages.","\u003Cstyle>\n  body { margin: 0; font-family: system-ui, sans-serif; }\n  \u002F* your grid here *\u002F\n\u003C\u002Fstyle>\n\u003Cheader>Header\u003C\u002Fheader>\n\u003Caside>Sidebar\u003C\u002Faside>\n\u003Cmain>Main content\u003C\u002Fmain>\n\u003Cfooter>Footer\u003C\u002Ffooter>","Body uses display: grid with grid-template-areas, min-height: 100dvh, two columns on wide screens and one column on small screens",1,{"id":132,"title":133,"slug":134,"prompt":135,"starter_code":136,"expected_output":137,"language":100,"order_index":34},168,"Responsive Card Grid Without Media Queries","responsive-card-grid-no-media-queries","Turn the list of cards into a responsive grid that shows as many 220px minimum columns as fit, using auto-fit and minmax, with a 16px gap. Do not use any media query.","\u003Cstyle>\n  .card { background: #eef2f7; padding: 16px; border-radius: 8px; }\n\u003C\u002Fstyle>\n\u003Cdiv class='cards'>\u003Cdiv class='card'>1\u003C\u002Fdiv>\u003Cdiv class='card'>2\u003C\u002Fdiv>\u003Cdiv class='card'>3\u003C\u002Fdiv>\u003Cdiv class='card'>4\u003C\u002Fdiv>\u003Cdiv class='card'>5\u003C\u002Fdiv>\u003C\u002Fdiv>","Container uses display: grid, grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) and gap: 16px","2026-09-30T18:00:08+00:00",{"id":140,"slug":141,"title":142},121,"aspect-ratio-and-object-fit","aspect-ratio & object-fit",{"id":144,"slug":145,"title":146},129,"css-variables-custom-properties","CSS Variables (Custom Properties)",{"data":148},[149,152,156,161,166],{"name":13,"slug":14,"description":150,"post_count":34,"subcategories":151},"Learn CSS with practical tutorials and examples covering layouts, Flexbox, Grid, responsive design, typography, positioning, animations, and more.",[],{"name":153,"slug":100,"description":154,"post_count":34,"subcategories":155},"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":157,"slug":158,"description":159,"post_count":130,"subcategories":160},"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":162,"slug":163,"description":164,"post_count":130,"subcategories":165},"Python","python","Learn Python with practical tutorials covering strings, lists, functions, exceptions, files, packages, virtual environments, modules, classes, and beginner programming concepts.",[],{"name":167,"slug":168,"description":169,"post_count":130,"subcategories":170},"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":172},[173,493],{"id":130,"name":153,"slug":174,"icon":5,"icon_url":5,"short_description":175,"meta_title":176,"meta_description":177,"og_image":178,"locale":179,"subcategories":180},"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",[181,206,241,265,341,375,389,417,441,457],{"id":130,"name":182,"slug":183,"order_index":130,"topics":184},"HTML Fundamentals & Setup","html-fundamentals-setup",[185,188,191,194,198,202],{"id":34,"title":186,"slug":187,"order_index":130,"cornerstone":25,"reading_time_minutes":34},"HTML Editors & Environment Setup","html-editors-and-environment-setup",{"id":130,"title":189,"slug":190,"order_index":130,"cornerstone":25,"reading_time_minutes":130},"HTML Introduction & History","html-introduction-and-history",{"id":39,"title":192,"slug":193,"order_index":39,"cornerstone":25,"reading_time_minutes":34},"HTML Basic Syntax & Document Structure","html-basic-syntax-document-structure",{"id":195,"title":196,"slug":197,"order_index":195,"cornerstone":25,"reading_time_minutes":34},4,"HTML Elements & Tags Explained","html-elements-tags-explained",{"id":199,"title":200,"slug":201,"order_index":199,"cornerstone":25,"reading_time_minutes":34},5,"HTML Attributes (Global & Standard)","html-attributes-global-standard",{"id":203,"title":204,"slug":205,"order_index":203,"cornerstone":25,"reading_time_minutes":34},6,"Understanding the DOCTYPE & HTML5 Boilerplate","understanding-doctype-html5-boilerplate",{"id":34,"name":207,"slug":208,"order_index":34,"topics":209},"Text & Content Basics","text-content-basics",[210,214,217,221,225,229,233,237],{"id":211,"title":212,"slug":213,"order_index":211,"cornerstone":25,"reading_time_minutes":34},7,"HTML Headings (H1–H6) & SEO Best Practices","html-headings-h1-h6-seo-best-practices",{"id":24,"title":215,"slug":216,"order_index":24,"cornerstone":25,"reading_time_minutes":34},"HTML Paragraphs & Line Breaks","html-paragraphs-line-breaks",{"id":218,"title":219,"slug":220,"order_index":218,"cornerstone":25,"reading_time_minutes":130},9,"HTML Text Formatting (Bold, Italic, Mark, etc.)","html-text-formatting-bold-italic-mark",{"id":222,"title":223,"slug":224,"order_index":222,"cornerstone":25,"reading_time_minutes":34},10,"HTML Styles (Inline CSS Basics)","html-styles-inline-css-basics",{"id":226,"title":227,"slug":228,"order_index":226,"cornerstone":25,"reading_time_minutes":34},11,"HTML Quotations & Citations (blockquote, q, cite)","html-quotations-citations-blockquote-q-cite",{"id":230,"title":231,"slug":232,"order_index":230,"cornerstone":25,"reading_time_minutes":34},12,"HTML Comments (Best Practices)","html-comments-best-practices",{"id":234,"title":235,"slug":236,"order_index":234,"cornerstone":25,"reading_time_minutes":34},13,"HTML Colors (Names, HEX, RGB, HSL)","html-colors-names-hex-rgb-hsl",{"id":238,"title":239,"slug":240,"order_index":238,"cornerstone":25,"reading_time_minutes":34},14,"HTML & CSS Integration (Inline, Internal, External)","html-css-integration-inline-internal-external",{"id":39,"name":242,"slug":243,"order_index":39,"topics":244},"Links, Media & Navigation","links-media-navigation",[245,249,253,257,261],{"id":246,"title":247,"slug":248,"order_index":246,"cornerstone":25,"reading_time_minutes":34},15,"HTML Links (Anchor Tags & Hyperlinks)","html-links-anchor-tags-hyperlinks",{"id":250,"title":251,"slug":252,"order_index":250,"cornerstone":25,"reading_time_minutes":34},16,"HTML Images (Alt Text, Lazy Loading, Formats)","html-images-alt-text-lazy-loading-formats",{"id":254,"title":255,"slug":256,"order_index":254,"cornerstone":25,"reading_time_minutes":130},17,"HTML Favicon Setup","html-favicon-setup",{"id":258,"title":259,"slug":260,"order_index":258,"cornerstone":25,"reading_time_minutes":34},18,"HTML Page Title & Meta Tags (SEO Essentials)","html-page-title-meta-tags-seo-essentials",{"id":262,"title":263,"slug":264,"order_index":262,"cornerstone":25,"reading_time_minutes":34},19,"HTML File Paths (Absolute vs Relative)","html-file-paths-absolute-vs-relative",{"id":195,"name":266,"slug":267,"order_index":195,"topics":268},"Structuring Content","structuring-content",[269,274,279,284,289,293,297,301,305,309,313,317,321,325,329,333,337],{"id":270,"title":271,"slug":272,"order_index":273,"cornerstone":25,"reading_time_minutes":34},24,"HTML Tables Explained: Rows, Columns & Merging Cells","html-tables-rows-columns-merging-cells",20,{"id":275,"title":276,"slug":277,"order_index":278,"cornerstone":25,"reading_time_minutes":34},25,"HTML Lists: Ordered, Unordered & Description Lists","html-lists-ordered-unordered-description",21,{"id":280,"title":281,"slug":282,"order_index":283,"cornerstone":25,"reading_time_minutes":34},26,"HTML Block vs Inline Elements Explained","html-block-vs-inline-elements",22,{"id":285,"title":286,"slug":287,"order_index":288,"cornerstone":25,"reading_time_minutes":130},27,"HTML Div & Span: Generic Containers Explained","html-div-and-span-containers",23,{"id":290,"title":291,"slug":292,"order_index":270,"cornerstone":25,"reading_time_minutes":34},28,"HTML Classes vs ID: Selectors Explained","html-classes-vs-id-selectors-explained",{"id":294,"title":295,"slug":296,"order_index":275,"cornerstone":25,"reading_time_minutes":130},29,"HTML Iframes: Embedding External Content","html-iframes-embedding-content",{"id":298,"title":299,"slug":300,"order_index":280,"cornerstone":25,"reading_time_minutes":34},30,"HTML Head Element Deep Dive","html-head-element-deep-dive",{"id":302,"title":303,"slug":304,"order_index":285,"cornerstone":25,"reading_time_minutes":34},31,"HTML Layout Techniques: Header, Nav & Footer","html-layout-techniques-header-nav-footer",{"id":306,"title":307,"slug":308,"order_index":290,"cornerstone":25,"reading_time_minutes":34},32,"Responsive HTML Design: Mobile-First Approach","responsive-html-design-mobile-first-approach",{"id":310,"title":311,"slug":312,"order_index":294,"cornerstone":25,"reading_time_minutes":39},74,"HTML Semantic Elements (article, section, aside, nav)","html-semantic-elements-article-section-aside-nav",{"id":314,"title":315,"slug":316,"order_index":298,"cornerstone":25,"reading_time_minutes":34},75,"HTML Style Guide & Coding Conventions","html-style-guide-coding-conventions",{"id":318,"title":319,"slug":320,"order_index":302,"cornerstone":25,"reading_time_minutes":34},76,"HTML Entities & Special Characters","html-entities-special-characters",{"id":322,"title":323,"slug":324,"order_index":306,"cornerstone":25,"reading_time_minutes":130},77,"HTML Symbols","html-symbols",{"id":326,"title":327,"slug":328,"order_index":326,"cornerstone":25,"reading_time_minutes":130},33,"HTML Emojis 😀: How to Use Them in Web Pages","html-emojis-trending-guide",{"id":330,"title":331,"slug":332,"order_index":330,"cornerstone":25,"reading_time_minutes":34},34,"HTML Character Sets: UTF-8 & Encoding Explained","html-character-sets-utf-8-encoding",{"id":334,"title":335,"slug":336,"order_index":334,"cornerstone":25,"reading_time_minutes":130},35,"HTML URL Encoding Explained","html-url-encoding-explained",{"id":338,"title":339,"slug":340,"order_index":338,"cornerstone":25,"reading_time_minutes":130},36,"HTML vs XHTML: Key Differences","html-vs-xhtml-key-differences",{"id":211,"name":342,"slug":343,"order_index":199,"topics":344},"Forms & User Input","forms-user-input",[345,350,355,360,365,370],{"id":346,"title":347,"slug":348,"order_index":349,"cornerstone":25,"reading_time_minutes":34},49,"HTML Forms Introduction","html-forms-introduction",37,{"id":351,"title":352,"slug":353,"order_index":354,"cornerstone":25,"reading_time_minutes":130},50,"HTML Form Attributes (action, method, etc.)","html-form-attributes-action-method",38,{"id":356,"title":357,"slug":358,"order_index":359,"cornerstone":25,"reading_time_minutes":130},51,"HTML Form Elements (input, select, textarea, button)","html-form-elements-input-select-textarea-button",39,{"id":361,"title":362,"slug":363,"order_index":364,"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":366,"title":367,"slug":368,"order_index":369,"cornerstone":25,"reading_time_minutes":34},53,"HTML Input Attributes (required, placeholder, pattern)","html-input-attributes-required-placeholder-pattern",41,{"id":371,"title":372,"slug":373,"order_index":374,"cornerstone":25,"reading_time_minutes":34},54,"HTML Form Validation (Client-Side)","html-form-validation-client-side",42,{"id":24,"name":376,"slug":377,"order_index":203,"topics":378},"Graphics & Visuals","graphics-visuals",[379,384],{"id":380,"title":381,"slug":382,"order_index":383,"cornerstone":25,"reading_time_minutes":39},55,"HTML Canvas (2D Drawing API) 🔥","html-canvas-2d-drawing-api",43,{"id":385,"title":386,"slug":387,"order_index":388,"cornerstone":25,"reading_time_minutes":39},56,"HTML SVG (Scalable Vector Graphics)","html-svg-scalable-vector-graphics",44,{"id":218,"name":390,"slug":391,"order_index":211,"topics":392},"Multimedia","multimedia",[393,398,403,408,413],{"id":394,"title":395,"slug":396,"order_index":397,"cornerstone":25,"reading_time_minutes":34},57,"HTML Media Overview","html-media-overview",45,{"id":399,"title":400,"slug":401,"order_index":402,"cornerstone":25,"reading_time_minutes":34},58,"HTML Video Embedding (Native Player)","html-video-embedding-native-player",46,{"id":404,"title":405,"slug":406,"order_index":407,"cornerstone":25,"reading_time_minutes":34},59,"HTML Audio Embedding","html-audio-embedding",47,{"id":409,"title":410,"slug":411,"order_index":412,"cornerstone":25,"reading_time_minutes":34},60,"HTML Plug-ins (Object & Embed Tags)","html-plugins-object-embed-tags",48,{"id":414,"title":415,"slug":416,"order_index":346,"cornerstone":25,"reading_time_minutes":34},61,"Embedding YouTube Videos in HTML","embedding-youtube-videos-in-html",{"id":222,"name":418,"slug":419,"order_index":24,"topics":420},"HTML5 Web APIs (Advanced\u002FTrending)","html5-web-apis-advancedtrending",[421,425,429,433,437],{"id":422,"title":423,"slug":424,"order_index":351,"cornerstone":25,"reading_time_minutes":34},62,"HTML Geolocation API","html-geolocation-api",{"id":426,"title":427,"slug":428,"order_index":356,"cornerstone":25,"reading_time_minutes":34},63,"HTML Drag & Drop API","html-drag-and-drop-api",{"id":430,"title":431,"slug":432,"order_index":361,"cornerstone":25,"reading_time_minutes":34},64,"HTML Web Storage (localStorage & sessionStorage)","html-web-storage-localstorage-sessionstorage",{"id":434,"title":435,"slug":436,"order_index":366,"cornerstone":25,"reading_time_minutes":34},65,"HTML Web Workers (Background Processing)","html-web-workers-background-processing",{"id":438,"title":439,"slug":440,"order_index":371,"cornerstone":25,"reading_time_minutes":34},66,"HTML Server-Sent Events (SSE)","html-server-sent-events-sse",{"id":226,"name":442,"slug":443,"order_index":218,"topics":444},"Accessibility & Best Practices (High-Demand  Skill) �","accessibility-best-practices-high-demand-skill",[445,449,453],{"id":446,"title":447,"slug":448,"order_index":380,"cornerstone":25,"reading_time_minutes":34},67,"HTML Accessibility (ARIA, Screen Readers)","html-accessibility-aria-screen-readers",{"id":450,"title":451,"slug":452,"order_index":385,"cornerstone":25,"reading_time_minutes":34},68,"Writing Semantic & SEO-Friendly HTML","writing-semantic-and-seo-friendly-html",{"id":454,"title":455,"slug":456,"order_index":394,"cornerstone":25,"reading_time_minutes":34},69,"HTML Performance Optimization Basics","html-performance-optimization-basics",{"id":230,"name":458,"slug":459,"order_index":222,"topics":460},"Reference & Practice","reference-practice",[461,465,469,473,477,481,485,489],{"id":462,"title":463,"slug":464,"order_index":130,"cornerstone":25,"reading_time_minutes":34},70,"HTML Tag List (Full Reference)","html-tag-list-full-reference",{"id":466,"title":467,"slug":468,"order_index":34,"cornerstone":25,"reading_time_minutes":34},71,"HTML Global Attributes Reference","html-global-attributes-reference",{"id":470,"title":471,"slug":472,"order_index":39,"cornerstone":25,"reading_time_minutes":34},72,"HTML Events Reference","html-events-reference",{"id":474,"title":475,"slug":476,"order_index":195,"cornerstone":25,"reading_time_minutes":34},73,"HTML Browser Support & Compatibility","html-browser-support-compatibility",{"id":478,"title":479,"slug":480,"order_index":199,"cornerstone":25,"reading_time_minutes":34},78,"HTML Doctypes Reference","html-doctypes-reference",{"id":482,"title":483,"slug":484,"order_index":203,"cornerstone":25,"reading_time_minutes":34},79,"HTTP Methods & Messages (Basics for Forms\u002FAPIs)","http-methods-messages-basics",{"id":486,"title":487,"slug":488,"order_index":211,"cornerstone":25,"reading_time_minutes":39},80,"HTML Interview Preparation (Top Q&A)","html-interview-preparation-top-qa",{"id":490,"title":491,"slug":492,"order_index":24,"cornerstone":25,"reading_time_minutes":130},81,"HTML Quiz & Practice Exercises","html-quiz-practice-exercises",{"id":34,"name":13,"slug":14,"icon":5,"icon_url":5,"short_description":494,"meta_title":495,"meta_description":496,"og_image":5,"locale":179,"subcategories":497},"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.",[498,527,551,587,619,651,683,707,732,760],{"id":288,"name":499,"slug":500,"order_index":501,"topics":502},"UI Components","ui-components",0,[503,507,511,515,519,523],{"id":504,"title":505,"slug":506,"order_index":414,"cornerstone":25,"reading_time_minutes":203},148,"CSS Buttons: Variants, States, Sizes and Accessible Button Design","css-buttons",{"id":508,"title":509,"slug":510,"order_index":422,"cornerstone":25,"reading_time_minutes":203},149,"CSS Card Component: Layouts with Flexbox, Grid, Container Queries and Subgrid","css-cards",{"id":512,"title":513,"slug":514,"order_index":426,"cornerstone":25,"reading_time_minutes":211},150,"CSS Navbar and Dropdown Menus: Responsive, Sticky and Accessible Navigation","css-navbar-dropdowns",{"id":516,"title":517,"slug":518,"order_index":430,"cornerstone":25,"reading_time_minutes":203},151,"HTML and CSS Forms and Inputs: Styled, Accessible and Validated Form Controls","css-forms-inputs",{"id":520,"title":521,"slug":522,"order_index":434,"cornerstone":25,"reading_time_minutes":203},152,"CSS Tooltips and Popovers: Popover API, Anchor Positioning and Accessible Overlays","css-tooltips-popovers",{"id":524,"title":525,"slug":526,"order_index":438,"cornerstone":25,"reading_time_minutes":203},153,"Pagination and Breadcrumbs: Accessible Navigation Patterns with HTML, CSS and Schema","pagination-breadcrumbs",{"id":234,"name":528,"slug":529,"order_index":501,"topics":530},"CSS Fundamentals & Setup","css-fundamentals-setup",[531,535,539,543,547],{"id":532,"title":533,"slug":534,"order_index":130,"cornerstone":25,"reading_time_minutes":195},82,"CSS Introduction & History: What Is CSS and Why It Matters","css-introduction-and-history",{"id":536,"title":537,"slug":538,"order_index":34,"cornerstone":25,"reading_time_minutes":195},83,"CSS Syntax & How Browsers Apply Styles","css-syntax-how-browsers-apply-styles",{"id":540,"title":541,"slug":542,"order_index":39,"cornerstone":25,"reading_time_minutes":39},84,"Setting Up Your CSS Workspace: Linking Files & Live Server","setting-up-css-workspace-linking-files-live-server",{"id":544,"title":545,"slug":546,"order_index":195,"cornerstone":25,"reading_time_minutes":39},85,"CSS Comments & Code Formatting Best Practices","css-comments-and-code-formatting",{"id":548,"title":549,"slug":550,"order_index":199,"cornerstone":25,"reading_time_minutes":199},86,"Browser DevTools for CSS: Inspect, Debug & Edit Styles Live","browser-devtools-for-css",{"id":238,"name":552,"slug":553,"order_index":501,"topics":554},"Selectors & the Cascade","selectors-the-cascade",[555,559,563,567,571,575,579,583],{"id":556,"title":557,"slug":558,"order_index":203,"cornerstone":25,"reading_time_minutes":195},87,"CSS Basic Selectors: Type, Class, ID, Universal & Grouping","css-basic-selectors",{"id":560,"title":561,"slug":562,"order_index":211,"cornerstone":25,"reading_time_minutes":195},88,"CSS Combinators: Descendant, Child, Adjacent & General Sibling","css-combinators",{"id":564,"title":565,"slug":566,"order_index":24,"cornerstone":25,"reading_time_minutes":195},89,"CSS Attribute Selectors: [attr], ^=, $=, *= and More","css-attribute-selectors",{"id":568,"title":569,"slug":570,"order_index":218,"cornerstone":25,"reading_time_minutes":203},90,"CSS Pseudo-classes: :hover, :focus, :nth-child & Modern Selectors","css-pseudo-classes",{"id":572,"title":573,"slug":574,"order_index":222,"cornerstone":25,"reading_time_minutes":199},91,"CSS Pseudo-elements (::before, ::after)","css-pseudo-elements-before-after",{"id":576,"title":577,"slug":578,"order_index":226,"cornerstone":25,"reading_time_minutes":199},92,"Modern CSS Selectors: :is(), :where(), :has()","modern-css-selectors-is-where-has",{"id":580,"title":581,"slug":582,"order_index":230,"cornerstone":25,"reading_time_minutes":195},93,"CSS Specificity Explained","css-specificity-explained",{"id":584,"title":585,"slug":586,"order_index":234,"cornerstone":25,"reading_time_minutes":199},94,"Cascade, Inheritance & !important","css-cascade-inheritance-important",{"id":246,"name":588,"slug":589,"order_index":501,"topics":590},"Colors, Backgrounds & Effects","colors-backgrounds-effects",[591,595,599,603,607,611,615],{"id":592,"title":593,"slug":594,"order_index":238,"cornerstone":25,"reading_time_minutes":199},95,"CSS Colors (HEX, RGB, HSL, OKLCH)","css-colors-hex-rgb-hsl-oklch",{"id":596,"title":597,"slug":598,"order_index":246,"cornerstone":25,"reading_time_minutes":195},96,"CSS Backgrounds","css-backgrounds",{"id":600,"title":601,"slug":602,"order_index":250,"cornerstone":25,"reading_time_minutes":199},97,"CSS Gradients (Linear, Radial, Conic)","css-gradients-linear-radial-conic",{"id":604,"title":605,"slug":606,"order_index":254,"cornerstone":25,"reading_time_minutes":199},98,"CSS Borders, Outlines & Rounded Corners","css-borders-outlines-rounded-corners",{"id":608,"title":609,"slug":610,"order_index":258,"cornerstone":25,"reading_time_minutes":203},99,"CSS Box Shadow & Text Shadow","css-box-shadow-text-shadow",{"id":612,"title":613,"slug":614,"order_index":262,"cornerstone":25,"reading_time_minutes":199},100,"CSS Opacity & Blend Modes","css-opacity-blend-modes",{"id":616,"title":617,"slug":618,"order_index":273,"cornerstone":25,"reading_time_minutes":203},101,"CSS Filters & backdrop-filter (Glassmorphism)","css-filters-backdrop-filter-glassmorphism",{"id":250,"name":620,"slug":621,"order_index":501,"topics":622},"Box Model & Spacing","box-model-spacing",[623,627,631,635,639,643,647],{"id":624,"title":625,"slug":626,"order_index":278,"cornerstone":25,"reading_time_minutes":211},102,"The CSS Box Model: Content, Padding, Border and Margin","css-box-model",{"id":628,"title":629,"slug":630,"order_index":283,"cornerstone":25,"reading_time_minutes":211},103,"CSS Margin and Margin Collapse","css-margin-and-margin-collapse",{"id":632,"title":633,"slug":634,"order_index":288,"cornerstone":25,"reading_time_minutes":203},104,"CSS Padding: Shorthand, Percentages and Best Practices","css-padding",{"id":636,"title":637,"slug":638,"order_index":270,"cornerstone":25,"reading_time_minutes":218},105,"CSS Width, Height, Min-Width, Max-Width, Min-Height & Max-Height","css-width-height-min-max",{"id":640,"title":641,"slug":642,"order_index":275,"cornerstone":25,"reading_time_minutes":199},106,"CSS box-sizing: content-box vs border-box","css-box-sizing",{"id":644,"title":645,"slug":646,"order_index":280,"cornerstone":25,"reading_time_minutes":211},107,"CSS Overflow: hidden, scroll, auto, clip and Text Truncation","css-overflow",{"id":648,"title":649,"slug":650,"order_index":285,"cornerstone":25,"reading_time_minutes":211},108,"CSS Units: px, rem, em, %, vw, vh and dvh","css-units",{"id":254,"name":652,"slug":653,"order_index":501,"topics":654},"Typography & Text","typography-text",[655,659,663,667,671,675,679],{"id":656,"title":657,"slug":658,"order_index":290,"cornerstone":25,"reading_time_minutes":211},109,"CSS Text Properties: Alignment, Spacing, Decoration and Wrapping","css-text-properties",{"id":660,"title":661,"slug":662,"order_index":294,"cornerstone":25,"reading_time_minutes":211},110,"CSS Fonts and font-family: Font Stacks, Weights and System Fonts","css-fonts-font-family",{"id":664,"title":665,"slug":666,"order_index":298,"cornerstone":25,"reading_time_minutes":211},111,"Web Fonts: Google Fonts, @font-face and Variable Fonts","web-fonts",{"id":668,"title":669,"slug":670,"order_index":302,"cornerstone":25,"reading_time_minutes":211},112,"CSS Text Effects: text-wrap balance, line-clamp, Ellipsis and More","css-text-effects",{"id":672,"title":673,"slug":674,"order_index":306,"cornerstone":25,"reading_time_minutes":24},113,"Styling Links","styling-links-css",{"id":676,"title":677,"slug":678,"order_index":326,"cornerstone":25,"reading_time_minutes":211},114,"Styling Lists & Tables","styling-lists-and-tables-css",{"id":680,"title":681,"slug":682,"order_index":330,"cornerstone":25,"reading_time_minutes":222},115,"Icons (SVG & Icon Fonts)","icons-svg-and-icon-fonts",{"id":258,"name":16,"slug":17,"order_index":501,"topics":684},[685,689,693,697,701,705,706],{"id":686,"title":687,"slug":688,"order_index":334,"cornerstone":25,"reading_time_minutes":211},116,"Display & Inline-block","display-and-inline-block",{"id":690,"title":691,"slug":692,"order_index":338,"cornerstone":25,"reading_time_minutes":203},117,"Position (relative, absolute, fixed, sticky)","position-relative-absolute-fixed-sticky",{"id":694,"title":695,"slug":696,"order_index":349,"cornerstone":25,"reading_time_minutes":203},118,"Z-index & Stacking Contexts","z-index-and-stacking-contexts",{"id":698,"title":699,"slug":700,"order_index":354,"cornerstone":25,"reading_time_minutes":199},119,"Float & Clear (Legacy, and Why to Avoid It)","float-and-clear",{"id":702,"title":703,"slug":704,"order_index":359,"cornerstone":25,"reading_time_minutes":203},120,"Centering Techniques","centering-techniques",{"id":140,"title":142,"slug":141,"order_index":364,"cornerstone":25,"reading_time_minutes":211},{"id":8,"title":9,"slug":10,"order_index":369,"cornerstone":25,"reading_time_minutes":24},{"id":273,"name":708,"slug":709,"order_index":501,"topics":710},"The Modern CSS Toolkit","the-modern-css-toolkit",[711,712,716,720,724,728],{"id":144,"title":146,"slug":145,"order_index":374,"cornerstone":25,"reading_time_minutes":24},{"id":713,"title":714,"slug":715,"order_index":383,"cornerstone":25,"reading_time_minutes":24},130,"Math Functions (calc, min, max, clamp)","math-functions-calc-min-max-clamp",{"id":717,"title":718,"slug":719,"order_index":388,"cornerstone":25,"reading_time_minutes":211},131,"Native CSS Nesting","native-css-nesting",{"id":721,"title":722,"slug":723,"order_index":397,"cornerstone":25,"reading_time_minutes":211},132,"Cascade Layers (@layer)","cascade-layers-at-layer",{"id":725,"title":726,"slug":727,"order_index":402,"cornerstone":25,"reading_time_minutes":218},133,"Dark Mode (prefers-color-scheme, light-dark())","dark-mode-prefers-color-scheme-light-dark",{"id":729,"title":730,"slug":731,"order_index":407,"cornerstone":25,"reading_time_minutes":24},134,"CSS Reset & Normalize","css-reset-and-normalize",{"id":278,"name":733,"slug":734,"order_index":501,"topics":735},"Responsive Design","responsive-design",[736,740,744,748,752,756],{"id":737,"title":738,"slug":739,"order_index":412,"cornerstone":25,"reading_time_minutes":218},135,"Mobile-First & the Viewport","mobile-first-and-the-viewport",{"id":741,"title":742,"slug":743,"order_index":346,"cornerstone":25,"reading_time_minutes":24},136,"Media Queries","media-queries",{"id":745,"title":746,"slug":747,"order_index":351,"cornerstone":25,"reading_time_minutes":24},137,"Responsive Images & Video","responsive-images-and-video",{"id":749,"title":750,"slug":751,"order_index":356,"cornerstone":25,"reading_time_minutes":218},138,"Fluid Typography with clamp()","fluid-typography-with-clamp",{"id":753,"title":754,"slug":755,"order_index":361,"cornerstone":25,"reading_time_minutes":218},139,"Container Queries","container-queries",{"id":757,"title":758,"slug":759,"order_index":366,"cornerstone":25,"reading_time_minutes":230},140,"Responsive Navigation Pattern","responsive-navigation-pattern",{"id":283,"name":761,"slug":762,"order_index":501,"topics":763},"Transitions & Animation","transitions-animation",[764,768,772,776,780,784,788],{"id":765,"title":766,"slug":767,"order_index":371,"cornerstone":25,"reading_time_minutes":199},141,"CSS Transitions: Smooth State Changes with transition, @starting-style and allow-discrete","css-transitions",{"id":769,"title":770,"slug":771,"order_index":380,"cornerstone":25,"reading_time_minutes":195},142,"CSS 2D Transforms: translate, rotate, scale, skew and transform-origin","css-2d-transforms",{"id":773,"title":774,"slug":775,"order_index":385,"cornerstone":25,"reading_time_minutes":199},143,"CSS 3D Transforms: perspective, preserve-3d, rotateX\u002FY and backface-visibility","css-3d-transforms",{"id":777,"title":778,"slug":779,"order_index":394,"cornerstone":25,"reading_time_minutes":199},144,"CSS Keyframe Animations: @keyframes, animation shorthand, fill-mode and @property","css-keyframe-animations",{"id":781,"title":782,"slug":783,"order_index":399,"cornerstone":25,"reading_time_minutes":199},145,"CSS Scroll-Driven Animations: animation-timeline, scroll() and view()","css-scroll-driven-animations",{"id":785,"title":786,"slug":787,"order_index":404,"cornerstone":25,"reading_time_minutes":199},146,"CSS View Transitions API: Progressive Enhancement for Page and State Animations","css-view-transitions",{"id":789,"title":790,"slug":791,"order_index":409,"cornerstone":25,"reading_time_minutes":203},147,"Motion Accessibility and Performance: prefers-reduced-motion, will-change and Smooth 60fps Animations","motion-accessibility-prefers-reduced-motion-performance"]