[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"course-tree":6,"blog-categories":646,"topic:position-relative-absolute-fixed-sticky":670},{"data":4},{"google_site_verification":5,"ga4_measurement_id":5,"site_name":5,"default_og_image":5,"twitter_handle":5},null,{"data":7},[8,334],{"id":9,"name":10,"slug":11,"icon":5,"icon_url":5,"short_description":12,"meta_title":13,"meta_description":14,"og_image":15,"locale":16,"subcategories":17},1,"HTML","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",[18,46,82,106,182,216,230,258,282,298],{"id":9,"name":19,"slug":20,"order_index":9,"topics":21},"HTML Fundamentals & Setup","html-fundamentals-setup",[22,27,30,34,38,42],{"id":23,"title":24,"slug":25,"order_index":9,"cornerstone":26,"reading_time_minutes":23},2,"HTML Editors & Environment Setup","html-editors-and-environment-setup",false,{"id":9,"title":28,"slug":29,"order_index":9,"cornerstone":26,"reading_time_minutes":9},"HTML Introduction & History","html-introduction-and-history",{"id":31,"title":32,"slug":33,"order_index":31,"cornerstone":26,"reading_time_minutes":23},3,"HTML Basic Syntax & Document Structure","html-basic-syntax-document-structure",{"id":35,"title":36,"slug":37,"order_index":35,"cornerstone":26,"reading_time_minutes":23},4,"HTML Elements & Tags Explained","html-elements-tags-explained",{"id":39,"title":40,"slug":41,"order_index":39,"cornerstone":26,"reading_time_minutes":23},5,"HTML Attributes (Global & Standard)","html-attributes-global-standard",{"id":43,"title":44,"slug":45,"order_index":43,"cornerstone":26,"reading_time_minutes":23},6,"Understanding the DOCTYPE & HTML5 Boilerplate","understanding-doctype-html5-boilerplate",{"id":23,"name":47,"slug":48,"order_index":23,"topics":49},"Text & Content Basics","text-content-basics",[50,54,58,62,66,70,74,78],{"id":51,"title":52,"slug":53,"order_index":51,"cornerstone":26,"reading_time_minutes":23},7,"HTML Headings (H1–H6) & SEO Best Practices","html-headings-h1-h6-seo-best-practices",{"id":55,"title":56,"slug":57,"order_index":55,"cornerstone":26,"reading_time_minutes":23},8,"HTML Paragraphs & Line Breaks","html-paragraphs-line-breaks",{"id":59,"title":60,"slug":61,"order_index":59,"cornerstone":26,"reading_time_minutes":9},9,"HTML Text Formatting (Bold, Italic, Mark, etc.)","html-text-formatting-bold-italic-mark",{"id":63,"title":64,"slug":65,"order_index":63,"cornerstone":26,"reading_time_minutes":23},10,"HTML Styles (Inline CSS Basics)","html-styles-inline-css-basics",{"id":67,"title":68,"slug":69,"order_index":67,"cornerstone":26,"reading_time_minutes":23},11,"HTML Quotations & Citations (blockquote, q, cite)","html-quotations-citations-blockquote-q-cite",{"id":71,"title":72,"slug":73,"order_index":71,"cornerstone":26,"reading_time_minutes":23},12,"HTML Comments (Best Practices)","html-comments-best-practices",{"id":75,"title":76,"slug":77,"order_index":75,"cornerstone":26,"reading_time_minutes":23},13,"HTML Colors (Names, HEX, RGB, HSL)","html-colors-names-hex-rgb-hsl",{"id":79,"title":80,"slug":81,"order_index":79,"cornerstone":26,"reading_time_minutes":23},14,"HTML & CSS Integration (Inline, Internal, External)","html-css-integration-inline-internal-external",{"id":31,"name":83,"slug":84,"order_index":31,"topics":85},"Links, Media & Navigation","links-media-navigation",[86,90,94,98,102],{"id":87,"title":88,"slug":89,"order_index":87,"cornerstone":26,"reading_time_minutes":23},15,"HTML Links (Anchor Tags & Hyperlinks)","html-links-anchor-tags-hyperlinks",{"id":91,"title":92,"slug":93,"order_index":91,"cornerstone":26,"reading_time_minutes":23},16,"HTML Images (Alt Text, Lazy Loading, Formats)","html-images-alt-text-lazy-loading-formats",{"id":95,"title":96,"slug":97,"order_index":95,"cornerstone":26,"reading_time_minutes":9},17,"HTML Favicon Setup","html-favicon-setup",{"id":99,"title":100,"slug":101,"order_index":99,"cornerstone":26,"reading_time_minutes":23},18,"HTML Page Title & Meta Tags (SEO Essentials)","html-page-title-meta-tags-seo-essentials",{"id":103,"title":104,"slug":105,"order_index":103,"cornerstone":26,"reading_time_minutes":23},19,"HTML File Paths (Absolute vs Relative)","html-file-paths-absolute-vs-relative",{"id":35,"name":107,"slug":108,"order_index":35,"topics":109},"Structuring Content","structuring-content",[110,115,120,125,130,134,138,142,146,150,154,158,162,166,170,174,178],{"id":111,"title":112,"slug":113,"order_index":114,"cornerstone":26,"reading_time_minutes":23},24,"HTML Tables Explained: Rows, Columns & Merging Cells","html-tables-rows-columns-merging-cells",20,{"id":116,"title":117,"slug":118,"order_index":119,"cornerstone":26,"reading_time_minutes":23},25,"HTML Lists: Ordered, Unordered & Description Lists","html-lists-ordered-unordered-description",21,{"id":121,"title":122,"slug":123,"order_index":124,"cornerstone":26,"reading_time_minutes":23},26,"HTML Block vs Inline Elements Explained","html-block-vs-inline-elements",22,{"id":126,"title":127,"slug":128,"order_index":129,"cornerstone":26,"reading_time_minutes":9},27,"HTML Div & Span: Generic Containers Explained","html-div-and-span-containers",23,{"id":131,"title":132,"slug":133,"order_index":111,"cornerstone":26,"reading_time_minutes":23},28,"HTML Classes vs ID: Selectors Explained","html-classes-vs-id-selectors-explained",{"id":135,"title":136,"slug":137,"order_index":116,"cornerstone":26,"reading_time_minutes":9},29,"HTML Iframes: Embedding External Content","html-iframes-embedding-content",{"id":139,"title":140,"slug":141,"order_index":121,"cornerstone":26,"reading_time_minutes":23},30,"HTML Head Element Deep Dive","html-head-element-deep-dive",{"id":143,"title":144,"slug":145,"order_index":126,"cornerstone":26,"reading_time_minutes":23},31,"HTML Layout Techniques: Header, Nav & Footer","html-layout-techniques-header-nav-footer",{"id":147,"title":148,"slug":149,"order_index":131,"cornerstone":26,"reading_time_minutes":23},32,"Responsive HTML Design: Mobile-First Approach","responsive-html-design-mobile-first-approach",{"id":151,"title":152,"slug":153,"order_index":135,"cornerstone":26,"reading_time_minutes":31},74,"HTML Semantic Elements (article, section, aside, nav)","html-semantic-elements-article-section-aside-nav",{"id":155,"title":156,"slug":157,"order_index":139,"cornerstone":26,"reading_time_minutes":23},75,"HTML Style Guide & Coding Conventions","html-style-guide-coding-conventions",{"id":159,"title":160,"slug":161,"order_index":143,"cornerstone":26,"reading_time_minutes":23},76,"HTML Entities & Special Characters","html-entities-special-characters",{"id":163,"title":164,"slug":165,"order_index":147,"cornerstone":26,"reading_time_minutes":9},77,"HTML Symbols","html-symbols",{"id":167,"title":168,"slug":169,"order_index":167,"cornerstone":26,"reading_time_minutes":9},33,"HTML Emojis 😀: How to Use Them in Web Pages","html-emojis-trending-guide",{"id":171,"title":172,"slug":173,"order_index":171,"cornerstone":26,"reading_time_minutes":23},34,"HTML Character Sets: UTF-8 & Encoding Explained","html-character-sets-utf-8-encoding",{"id":175,"title":176,"slug":177,"order_index":175,"cornerstone":26,"reading_time_minutes":9},35,"HTML URL Encoding Explained","html-url-encoding-explained",{"id":179,"title":180,"slug":181,"order_index":179,"cornerstone":26,"reading_time_minutes":9},36,"HTML vs XHTML: Key Differences","html-vs-xhtml-key-differences",{"id":51,"name":183,"slug":184,"order_index":39,"topics":185},"Forms & User Input","forms-user-input",[186,191,196,201,206,211],{"id":187,"title":188,"slug":189,"order_index":190,"cornerstone":26,"reading_time_minutes":23},49,"HTML Forms Introduction","html-forms-introduction",37,{"id":192,"title":193,"slug":194,"order_index":195,"cornerstone":26,"reading_time_minutes":9},50,"HTML Form Attributes (action, method, etc.)","html-form-attributes-action-method",38,{"id":197,"title":198,"slug":199,"order_index":200,"cornerstone":26,"reading_time_minutes":9},51,"HTML Form Elements (input, select, textarea, button)","html-form-elements-input-select-textarea-button",39,{"id":202,"title":203,"slug":204,"order_index":205,"cornerstone":26,"reading_time_minutes":23},52,"HTML Input Types (Modern Types: email, date, color, range)","html-input-types-modern-email-date-color-range",40,{"id":207,"title":208,"slug":209,"order_index":210,"cornerstone":26,"reading_time_minutes":23},53,"HTML Input Attributes (required, placeholder, pattern)","html-input-attributes-required-placeholder-pattern",41,{"id":212,"title":213,"slug":214,"order_index":215,"cornerstone":26,"reading_time_minutes":23},54,"HTML Form Validation (Client-Side)","html-form-validation-client-side",42,{"id":55,"name":217,"slug":218,"order_index":43,"topics":219},"Graphics & Visuals","graphics-visuals",[220,225],{"id":221,"title":222,"slug":223,"order_index":224,"cornerstone":26,"reading_time_minutes":31},55,"HTML Canvas (2D Drawing API) 🔥","html-canvas-2d-drawing-api",43,{"id":226,"title":227,"slug":228,"order_index":229,"cornerstone":26,"reading_time_minutes":31},56,"HTML SVG (Scalable Vector Graphics)","html-svg-scalable-vector-graphics",44,{"id":59,"name":231,"slug":232,"order_index":51,"topics":233},"Multimedia","multimedia",[234,239,244,249,254],{"id":235,"title":236,"slug":237,"order_index":238,"cornerstone":26,"reading_time_minutes":23},57,"HTML Media Overview","html-media-overview",45,{"id":240,"title":241,"slug":242,"order_index":243,"cornerstone":26,"reading_time_minutes":23},58,"HTML Video Embedding (Native Player)","html-video-embedding-native-player",46,{"id":245,"title":246,"slug":247,"order_index":248,"cornerstone":26,"reading_time_minutes":23},59,"HTML Audio Embedding","html-audio-embedding",47,{"id":250,"title":251,"slug":252,"order_index":253,"cornerstone":26,"reading_time_minutes":23},60,"HTML Plug-ins (Object & Embed Tags)","html-plugins-object-embed-tags",48,{"id":255,"title":256,"slug":257,"order_index":187,"cornerstone":26,"reading_time_minutes":23},61,"Embedding YouTube Videos in HTML","embedding-youtube-videos-in-html",{"id":63,"name":259,"slug":260,"order_index":55,"topics":261},"HTML5 Web APIs (Advanced\u002FTrending)","html5-web-apis-advancedtrending",[262,266,270,274,278],{"id":263,"title":264,"slug":265,"order_index":192,"cornerstone":26,"reading_time_minutes":23},62,"HTML Geolocation API","html-geolocation-api",{"id":267,"title":268,"slug":269,"order_index":197,"cornerstone":26,"reading_time_minutes":23},63,"HTML Drag & Drop API","html-drag-and-drop-api",{"id":271,"title":272,"slug":273,"order_index":202,"cornerstone":26,"reading_time_minutes":23},64,"HTML Web Storage (localStorage & sessionStorage)","html-web-storage-localstorage-sessionstorage",{"id":275,"title":276,"slug":277,"order_index":207,"cornerstone":26,"reading_time_minutes":23},65,"HTML Web Workers (Background Processing)","html-web-workers-background-processing",{"id":279,"title":280,"slug":281,"order_index":212,"cornerstone":26,"reading_time_minutes":23},66,"HTML Server-Sent Events (SSE)","html-server-sent-events-sse",{"id":67,"name":283,"slug":284,"order_index":59,"topics":285},"Accessibility & Best Practices (High-Demand  Skill) �","accessibility-best-practices-high-demand-skill",[286,290,294],{"id":287,"title":288,"slug":289,"order_index":221,"cornerstone":26,"reading_time_minutes":23},67,"HTML Accessibility (ARIA, Screen Readers)","html-accessibility-aria-screen-readers",{"id":291,"title":292,"slug":293,"order_index":226,"cornerstone":26,"reading_time_minutes":23},68,"Writing Semantic & SEO-Friendly HTML","writing-semantic-and-seo-friendly-html",{"id":295,"title":296,"slug":297,"order_index":235,"cornerstone":26,"reading_time_minutes":23},69,"HTML Performance Optimization Basics","html-performance-optimization-basics",{"id":71,"name":299,"slug":300,"order_index":63,"topics":301},"Reference & Practice","reference-practice",[302,306,310,314,318,322,326,330],{"id":303,"title":304,"slug":305,"order_index":9,"cornerstone":26,"reading_time_minutes":23},70,"HTML Tag List (Full Reference)","html-tag-list-full-reference",{"id":307,"title":308,"slug":309,"order_index":23,"cornerstone":26,"reading_time_minutes":23},71,"HTML Global Attributes Reference","html-global-attributes-reference",{"id":311,"title":312,"slug":313,"order_index":31,"cornerstone":26,"reading_time_minutes":23},72,"HTML Events Reference","html-events-reference",{"id":315,"title":316,"slug":317,"order_index":35,"cornerstone":26,"reading_time_minutes":23},73,"HTML Browser Support & Compatibility","html-browser-support-compatibility",{"id":319,"title":320,"slug":321,"order_index":39,"cornerstone":26,"reading_time_minutes":23},78,"HTML Doctypes Reference","html-doctypes-reference",{"id":323,"title":324,"slug":325,"order_index":43,"cornerstone":26,"reading_time_minutes":23},79,"HTTP Methods & Messages (Basics for Forms\u002FAPIs)","http-methods-messages-basics",{"id":327,"title":328,"slug":329,"order_index":51,"cornerstone":26,"reading_time_minutes":31},80,"HTML Interview Preparation (Top Q&A)","html-interview-preparation-top-qa",{"id":331,"title":332,"slug":333,"order_index":55,"cornerstone":26,"reading_time_minutes":9},81,"HTML Quiz & Practice Exercises","html-quiz-practice-exercises",{"id":23,"name":335,"slug":336,"icon":5,"icon_url":5,"short_description":337,"meta_title":338,"meta_description":339,"og_image":5,"locale":16,"subcategories":340},"CSS","css","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.",[341,370,394,430,462,494,526,558,586,614],{"id":129,"name":342,"slug":343,"order_index":344,"topics":345},"UI Components","ui-components",0,[346,350,354,358,362,366],{"id":347,"title":348,"slug":349,"order_index":255,"cornerstone":26,"reading_time_minutes":43},148,"CSS Buttons: Variants, States, Sizes and Accessible Button Design","css-buttons",{"id":351,"title":352,"slug":353,"order_index":263,"cornerstone":26,"reading_time_minutes":43},149,"CSS Card Component: Layouts with Flexbox, Grid, Container Queries and Subgrid","css-cards",{"id":355,"title":356,"slug":357,"order_index":267,"cornerstone":26,"reading_time_minutes":51},150,"CSS Navbar and Dropdown Menus: Responsive, Sticky and Accessible Navigation","css-navbar-dropdowns",{"id":359,"title":360,"slug":361,"order_index":271,"cornerstone":26,"reading_time_minutes":43},151,"HTML and CSS Forms and Inputs: Styled, Accessible and Validated Form Controls","css-forms-inputs",{"id":363,"title":364,"slug":365,"order_index":275,"cornerstone":26,"reading_time_minutes":43},152,"CSS Tooltips and Popovers: Popover API, Anchor Positioning and Accessible Overlays","css-tooltips-popovers",{"id":367,"title":368,"slug":369,"order_index":279,"cornerstone":26,"reading_time_minutes":43},153,"Pagination and Breadcrumbs: Accessible Navigation Patterns with HTML, CSS and Schema","pagination-breadcrumbs",{"id":75,"name":371,"slug":372,"order_index":344,"topics":373},"CSS Fundamentals & Setup","css-fundamentals-setup",[374,378,382,386,390],{"id":375,"title":376,"slug":377,"order_index":9,"cornerstone":26,"reading_time_minutes":35},82,"CSS Introduction & History: What Is CSS and Why It Matters","css-introduction-and-history",{"id":379,"title":380,"slug":381,"order_index":23,"cornerstone":26,"reading_time_minutes":35},83,"CSS Syntax & How Browsers Apply Styles","css-syntax-how-browsers-apply-styles",{"id":383,"title":384,"slug":385,"order_index":31,"cornerstone":26,"reading_time_minutes":31},84,"Setting Up Your CSS Workspace: Linking Files & Live Server","setting-up-css-workspace-linking-files-live-server",{"id":387,"title":388,"slug":389,"order_index":35,"cornerstone":26,"reading_time_minutes":31},85,"CSS Comments & Code Formatting Best Practices","css-comments-and-code-formatting",{"id":391,"title":392,"slug":393,"order_index":39,"cornerstone":26,"reading_time_minutes":39},86,"Browser DevTools for CSS: Inspect, Debug & Edit Styles Live","browser-devtools-for-css",{"id":79,"name":395,"slug":396,"order_index":344,"topics":397},"Selectors & the Cascade","selectors-the-cascade",[398,402,406,410,414,418,422,426],{"id":399,"title":400,"slug":401,"order_index":43,"cornerstone":26,"reading_time_minutes":35},87,"CSS Basic Selectors: Type, Class, ID, Universal & Grouping","css-basic-selectors",{"id":403,"title":404,"slug":405,"order_index":51,"cornerstone":26,"reading_time_minutes":35},88,"CSS Combinators: Descendant, Child, Adjacent & General Sibling","css-combinators",{"id":407,"title":408,"slug":409,"order_index":55,"cornerstone":26,"reading_time_minutes":35},89,"CSS Attribute Selectors: [attr], ^=, $=, *= and More","css-attribute-selectors",{"id":411,"title":412,"slug":413,"order_index":59,"cornerstone":26,"reading_time_minutes":43},90,"CSS Pseudo-classes: :hover, :focus, :nth-child & Modern Selectors","css-pseudo-classes",{"id":415,"title":416,"slug":417,"order_index":63,"cornerstone":26,"reading_time_minutes":39},91,"CSS Pseudo-elements (::before, ::after)","css-pseudo-elements-before-after",{"id":419,"title":420,"slug":421,"order_index":67,"cornerstone":26,"reading_time_minutes":39},92,"Modern CSS Selectors: :is(), :where(), :has()","modern-css-selectors-is-where-has",{"id":423,"title":424,"slug":425,"order_index":71,"cornerstone":26,"reading_time_minutes":35},93,"CSS Specificity Explained","css-specificity-explained",{"id":427,"title":428,"slug":429,"order_index":75,"cornerstone":26,"reading_time_minutes":39},94,"Cascade, Inheritance & !important","css-cascade-inheritance-important",{"id":87,"name":431,"slug":432,"order_index":344,"topics":433},"Colors, Backgrounds & Effects","colors-backgrounds-effects",[434,438,442,446,450,454,458],{"id":435,"title":436,"slug":437,"order_index":79,"cornerstone":26,"reading_time_minutes":39},95,"CSS Colors (HEX, RGB, HSL, OKLCH)","css-colors-hex-rgb-hsl-oklch",{"id":439,"title":440,"slug":441,"order_index":87,"cornerstone":26,"reading_time_minutes":35},96,"CSS Backgrounds","css-backgrounds",{"id":443,"title":444,"slug":445,"order_index":91,"cornerstone":26,"reading_time_minutes":39},97,"CSS Gradients (Linear, Radial, Conic)","css-gradients-linear-radial-conic",{"id":447,"title":448,"slug":449,"order_index":95,"cornerstone":26,"reading_time_minutes":39},98,"CSS Borders, Outlines & Rounded Corners","css-borders-outlines-rounded-corners",{"id":451,"title":452,"slug":453,"order_index":99,"cornerstone":26,"reading_time_minutes":43},99,"CSS Box Shadow & Text Shadow","css-box-shadow-text-shadow",{"id":455,"title":456,"slug":457,"order_index":103,"cornerstone":26,"reading_time_minutes":39},100,"CSS Opacity & Blend Modes","css-opacity-blend-modes",{"id":459,"title":460,"slug":461,"order_index":114,"cornerstone":26,"reading_time_minutes":43},101,"CSS Filters & backdrop-filter (Glassmorphism)","css-filters-backdrop-filter-glassmorphism",{"id":91,"name":463,"slug":464,"order_index":344,"topics":465},"Box Model & Spacing","box-model-spacing",[466,470,474,478,482,486,490],{"id":467,"title":468,"slug":469,"order_index":119,"cornerstone":26,"reading_time_minutes":51},102,"The CSS Box Model: Content, Padding, Border and Margin","css-box-model",{"id":471,"title":472,"slug":473,"order_index":124,"cornerstone":26,"reading_time_minutes":51},103,"CSS Margin and Margin Collapse","css-margin-and-margin-collapse",{"id":475,"title":476,"slug":477,"order_index":129,"cornerstone":26,"reading_time_minutes":43},104,"CSS Padding: Shorthand, Percentages and Best Practices","css-padding",{"id":479,"title":480,"slug":481,"order_index":111,"cornerstone":26,"reading_time_minutes":59},105,"CSS Width, Height, Min-Width, Max-Width, Min-Height & Max-Height","css-width-height-min-max",{"id":483,"title":484,"slug":485,"order_index":116,"cornerstone":26,"reading_time_minutes":39},106,"CSS box-sizing: content-box vs border-box","css-box-sizing",{"id":487,"title":488,"slug":489,"order_index":121,"cornerstone":26,"reading_time_minutes":51},107,"CSS Overflow: hidden, scroll, auto, clip and Text Truncation","css-overflow",{"id":491,"title":492,"slug":493,"order_index":126,"cornerstone":26,"reading_time_minutes":51},108,"CSS Units: px, rem, em, %, vw, vh and dvh","css-units",{"id":95,"name":495,"slug":496,"order_index":344,"topics":497},"Typography & Text","typography-text",[498,502,506,510,514,518,522],{"id":499,"title":500,"slug":501,"order_index":131,"cornerstone":26,"reading_time_minutes":51},109,"CSS Text Properties: Alignment, Spacing, Decoration and Wrapping","css-text-properties",{"id":503,"title":504,"slug":505,"order_index":135,"cornerstone":26,"reading_time_minutes":51},110,"CSS Fonts and font-family: Font Stacks, Weights and System Fonts","css-fonts-font-family",{"id":507,"title":508,"slug":509,"order_index":139,"cornerstone":26,"reading_time_minutes":51},111,"Web Fonts: Google Fonts, @font-face and Variable Fonts","web-fonts",{"id":511,"title":512,"slug":513,"order_index":143,"cornerstone":26,"reading_time_minutes":51},112,"CSS Text Effects: text-wrap balance, line-clamp, Ellipsis and More","css-text-effects",{"id":515,"title":516,"slug":517,"order_index":147,"cornerstone":26,"reading_time_minutes":55},113,"Styling Links","styling-links-css",{"id":519,"title":520,"slug":521,"order_index":167,"cornerstone":26,"reading_time_minutes":51},114,"Styling Lists & Tables","styling-lists-and-tables-css",{"id":523,"title":524,"slug":525,"order_index":171,"cornerstone":26,"reading_time_minutes":63},115,"Icons (SVG & Icon Fonts)","icons-svg-and-icon-fonts",{"id":99,"name":527,"slug":528,"order_index":344,"topics":529},"Display, Position & Layout Basics","display-position-layout-basics",[530,534,538,542,546,550,554],{"id":531,"title":532,"slug":533,"order_index":175,"cornerstone":26,"reading_time_minutes":51},116,"Display & Inline-block","display-and-inline-block",{"id":535,"title":536,"slug":537,"order_index":179,"cornerstone":26,"reading_time_minutes":43},117,"Position (relative, absolute, fixed, sticky)","position-relative-absolute-fixed-sticky",{"id":539,"title":540,"slug":541,"order_index":190,"cornerstone":26,"reading_time_minutes":43},118,"Z-index & Stacking Contexts","z-index-and-stacking-contexts",{"id":543,"title":544,"slug":545,"order_index":195,"cornerstone":26,"reading_time_minutes":39},119,"Float & Clear (Legacy, and Why to Avoid It)","float-and-clear",{"id":547,"title":548,"slug":549,"order_index":200,"cornerstone":26,"reading_time_minutes":43},120,"Centering Techniques","centering-techniques",{"id":551,"title":552,"slug":553,"order_index":205,"cornerstone":26,"reading_time_minutes":51},121,"aspect-ratio & object-fit","aspect-ratio-and-object-fit",{"id":555,"title":556,"slug":557,"order_index":210,"cornerstone":26,"reading_time_minutes":55},122,"Website Layout Basics","website-layout-basics",{"id":114,"name":559,"slug":560,"order_index":344,"topics":561},"The Modern CSS Toolkit","the-modern-css-toolkit",[562,566,570,574,578,582],{"id":563,"title":564,"slug":565,"order_index":215,"cornerstone":26,"reading_time_minutes":55},129,"CSS Variables (Custom Properties)","css-variables-custom-properties",{"id":567,"title":568,"slug":569,"order_index":224,"cornerstone":26,"reading_time_minutes":55},130,"Math Functions (calc, min, max, clamp)","math-functions-calc-min-max-clamp",{"id":571,"title":572,"slug":573,"order_index":229,"cornerstone":26,"reading_time_minutes":51},131,"Native CSS Nesting","native-css-nesting",{"id":575,"title":576,"slug":577,"order_index":238,"cornerstone":26,"reading_time_minutes":51},132,"Cascade Layers (@layer)","cascade-layers-at-layer",{"id":579,"title":580,"slug":581,"order_index":243,"cornerstone":26,"reading_time_minutes":59},133,"Dark Mode (prefers-color-scheme, light-dark())","dark-mode-prefers-color-scheme-light-dark",{"id":583,"title":584,"slug":585,"order_index":248,"cornerstone":26,"reading_time_minutes":55},134,"CSS Reset & Normalize","css-reset-and-normalize",{"id":119,"name":587,"slug":588,"order_index":344,"topics":589},"Responsive Design","responsive-design",[590,594,598,602,606,610],{"id":591,"title":592,"slug":593,"order_index":253,"cornerstone":26,"reading_time_minutes":59},135,"Mobile-First & the Viewport","mobile-first-and-the-viewport",{"id":595,"title":596,"slug":597,"order_index":187,"cornerstone":26,"reading_time_minutes":55},136,"Media Queries","media-queries",{"id":599,"title":600,"slug":601,"order_index":192,"cornerstone":26,"reading_time_minutes":55},137,"Responsive Images & Video","responsive-images-and-video",{"id":603,"title":604,"slug":605,"order_index":197,"cornerstone":26,"reading_time_minutes":59},138,"Fluid Typography with clamp()","fluid-typography-with-clamp",{"id":607,"title":608,"slug":609,"order_index":202,"cornerstone":26,"reading_time_minutes":59},139,"Container Queries","container-queries",{"id":611,"title":612,"slug":613,"order_index":207,"cornerstone":26,"reading_time_minutes":71},140,"Responsive Navigation Pattern","responsive-navigation-pattern",{"id":124,"name":615,"slug":616,"order_index":344,"topics":617},"Transitions & Animation","transitions-animation",[618,622,626,630,634,638,642],{"id":619,"title":620,"slug":621,"order_index":212,"cornerstone":26,"reading_time_minutes":39},141,"CSS Transitions: Smooth State Changes with transition, @starting-style and allow-discrete","css-transitions",{"id":623,"title":624,"slug":625,"order_index":221,"cornerstone":26,"reading_time_minutes":35},142,"CSS 2D Transforms: translate, rotate, scale, skew and transform-origin","css-2d-transforms",{"id":627,"title":628,"slug":629,"order_index":226,"cornerstone":26,"reading_time_minutes":39},143,"CSS 3D Transforms: perspective, preserve-3d, rotateX\u002FY and backface-visibility","css-3d-transforms",{"id":631,"title":632,"slug":633,"order_index":235,"cornerstone":26,"reading_time_minutes":39},144,"CSS Keyframe Animations: @keyframes, animation shorthand, fill-mode and @property","css-keyframe-animations",{"id":635,"title":636,"slug":637,"order_index":240,"cornerstone":26,"reading_time_minutes":39},145,"CSS Scroll-Driven Animations: animation-timeline, scroll() and view()","css-scroll-driven-animations",{"id":639,"title":640,"slug":641,"order_index":245,"cornerstone":26,"reading_time_minutes":39},146,"CSS View Transitions API: Progressive Enhancement for Page and State Animations","css-view-transitions",{"id":643,"title":644,"slug":645,"order_index":250,"cornerstone":26,"reading_time_minutes":43},147,"Motion Accessibility and Performance: prefers-reduced-motion, will-change and Smooth 60fps Animations","motion-accessibility-prefers-reduced-motion-performance",{"data":647},[648,651,655,660,665],{"name":335,"slug":336,"description":649,"post_count":23,"subcategories":650},"Learn CSS with practical tutorials and examples covering layouts, Flexbox, Grid, responsive design, typography, positioning, animations, and more.",[],{"name":10,"slug":652,"description":653,"post_count":23,"subcategories":654},"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":656,"slug":657,"description":658,"post_count":9,"subcategories":659},"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":661,"slug":662,"description":663,"post_count":9,"subcategories":664},"Python","python","Learn Python with practical tutorials covering strings, lists, functions, exceptions, files, packages, virtual environments, modules, classes, and beginner programming concepts.",[],{"name":666,"slug":667,"description":668,"post_count":9,"subcategories":669},"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":671},{"id":535,"title":536,"slug":537,"content":672,"course":673,"subcategory":674,"author":675,"reading_time_minutes":43,"cornerstone":26,"schema_type":681,"faq_json":5,"video_url":5,"canonical_url":682,"meta_title":683,"meta_description":684,"og_image":5,"toc_json":685,"code_examples":746,"quiz":5,"exercises":770,"published_at":5,"updated_at":785,"prev":786,"next":787},"\u003Ch2 id=\"css-position-property-relative-absolute-fixed-and-sticky\">CSS Position Property: Relative, Absolute, Fixed and Sticky\u003C\u002Fh2>\u003Cp>\u003Cstrong>Focus keyword: CSS position.\u003C\u002Fstrong> The position property lets you take elements out of normal flow or pin them to a spot. It powers badges, tooltips, dropdown menus, sticky headers, modals and overlays. In this lesson you will learn all five values, the offset properties, how the containing block works, and the most common mistakes. All examples are live and editable.\u003C\u002Fp>\u003Ch3 id=\"trending-keywords-covered-in-this-lesson\">Trending keywords covered in this lesson\u003C\u002Fh3>\u003Cp>position relative vs absolute, position fixed, position sticky header, inset shorthand, containing block, offset properties top right bottom left, sticky not working, overflow and sticky, CSS tooltip, notification badge, overlay, scroll-margin-top, CSS anchor positioning, dvh units, position center.\u003C\u002Fp>\u003Ch2 id=\"1-the-five-position-values\">1. The Five Position Values\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cstrong>static\u003C\u002Fstrong> (default): normal flow. Offsets and z-index do not work.\u003C\u002Fli>\u003Cli>\u003Cstrong>relative\u003C\u002Fstrong>: stays in flow, and can be nudged with offsets. Its original space is kept.\u003C\u002Fli>\u003Cli>\u003Cstrong>absolute\u003C\u002Fstrong>: removed from flow and placed relative to its nearest positioned ancestor.\u003C\u002Fli>\u003Cli>\u003Cstrong>fixed\u003C\u002Fstrong>: removed from flow and placed relative to the viewport. It stays in place while scrolling.\u003C\u002Fli>\u003Cli>\u003Cstrong>sticky\u003C\u002Fstrong>: behaves like relative until a scroll threshold is reached, then sticks like fixed inside its scroll container.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"2-offset-properties-top-right-bottom-left-and-inset\">2. Offset Properties: top, right, bottom, left and inset\u003C\u002Fh2>\u003Cp>Offsets only work on positioned elements (anything except static). The shorthand \u003Ccode>inset\u003C\u002Fcode> sets all four at once: \u003Ccode>inset: 0\u003C\u002Fcode> means top, right, bottom and left are all 0. Logical versions exist too: \u003Ccode>inset-block\u003C\u002Fcode> and \u003Ccode>inset-inline\u003C\u002Fcode>, which adapt to writing direction.\u003C\u002Fp>\u003Ch2 id=\"3-position-relative\">3. position: relative\u003C\u002Fh2>\u003Cp>With relative, \u003Ccode>top: 20px\u003C\u002Fcode> moves the element 20px down from where it would normally be, without affecting neighbours. Its most common job is not to move anything, but to act as the \u003Cstrong>anchor (containing block) for absolute children\u003C\u002Fstrong>. That is why you often see \u003Ccode>position: relative\u003C\u002Fcode> with no offsets.\u003C\u002Fp>\u003Ch2 id=\"4-position-absolute\">4. position: absolute\u003C\u002Fh2>\u003Cul>\u003Cli>Takes no space in the normal flow, so siblings move up to fill the gap.\u003C\u002Fli>\u003Cli>Positions itself against the nearest ancestor whose position is not static. If there is none, it uses the initial containing block (the page).\u003C\u002Fli>\u003Cli>Without width or offsets, it shrinks to fit its content.\u003C\u002Fli>\u003Cli>With \u003Ccode>inset: 0\u003C\u002Fcode> it stretches to fill its containing block, perfect for overlays and background layers.\u003C\u002Fli>\u003Cli>Typical uses: badges, close buttons, tooltips, dropdown panels, image captions.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"5-position-fixed\">5. position: fixed\u003C\u002Fh2>\u003Cp>Fixed elements are positioned against the viewport, so they do not move on scroll. Use it for top bars, floating action buttons, cookie banners and modals. Notes: a fixed element is removed from flow, so add padding or margin to the page content to avoid overlap. If any ancestor has \u003Ccode>transform\u003C\u002Fcode>, \u003Ccode>filter\u003C\u002Fcode> or \u003Ccode>perspective\u003C\u002Fcode>, fixed positioning is calculated from that ancestor instead of the viewport. On mobile use \u003Ccode>100dvh\u003C\u002Fcode> instead of \u003Ccode>100vh\u003C\u002Fcode> for full-height layers because browser toolbars change the visible height.\u003C\u002Fp>\u003Ch2 id=\"6-position-sticky\">6. position: sticky\u003C\u002Fh2>\u003Cp>Sticky needs a threshold such as \u003Ccode>top: 0\u003C\u002Fcode>. The element scrolls normally until it reaches that offset, then stays there until its parent ends. Sticky is ideal for table headers, sidebars, section titles and table of contents.\u003C\u002Fp>\u003Ch3 id=\"why-sticky-is-not-working\">Why sticky is not working\u003C\u002Fh3>\u003Cul>\u003Cli>No \u003Ccode>top\u003C\u002Fcode>, \u003Ccode>bottom\u003C\u002Fcode>, \u003Ccode>left\u003C\u002Fcode> or \u003Ccode>right\u003C\u002Fcode> value is set.\u003C\u002Fli>\u003Cli>An ancestor has \u003Ccode>overflow: hidden\u003C\u002Fcode>, \u003Ccode>auto\u003C\u002Fcode> or \u003Ccode>scroll\u003C\u002Fcode>, which becomes the scroll container. (Use \u003Ccode>overflow: clip\u003C\u002Fcode> instead of hidden when you only want clipping.)\u003C\u002Fli>\u003Cli>The parent is exactly as tall as the sticky element, so there is no room to stick.\u003C\u002Fli>\u003Cli>In a flex container, the item stretches to full height. Add \u003Ccode>align-self: start\u003C\u002Fcode>.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"7-containing-block-cheat-sheet\">7. Containing Block Cheat Sheet\u003C\u002Fh2>\u003Cul>\u003Cli>relative: itself (for its offsets)\u003C\u002Fli>\u003Cli>absolute: nearest positioned ancestor (padding box)\u003C\u002Fli>\u003Cli>fixed: viewport (unless a transformed ancestor exists)\u003C\u002Fli>\u003Cli>sticky: nearest scrolling ancestor\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"8-anchored-headers-and-scroll-margin-top\">8. Anchored Headers and scroll-margin-top\u003C\u002Fh2>\u003Cp>When you have a sticky or fixed header, links to \u003Ccode>#section\u003C\u002Fcode> may scroll content under it. Fix it with \u003Ccode>scroll-margin-top\u003C\u002Fcode> on the target, for example \u003Ccode>section { scroll-margin-top: 80px; }\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch2 id=\"9-the-new-css-anchor-positioning\">9. The New CSS Anchor Positioning\u003C\u002Fh2>\u003Cp>Modern browsers are adding \u003Cstrong>CSS anchor positioning\u003C\u002Fstrong> (\u003Ccode>anchor-name\u003C\u002Fcode>, \u003Ccode>position-anchor\u003C\u002Fcode> and \u003Ccode>anchor()\u003C\u002Fcode>) so tooltips and popovers can attach to any element without JavaScript or a relative parent. Check browser support and keep a fallback. The HTML \u003Ccode>popover\u003C\u002Fcode> attribute and \u003Ccode>dialog\u003C\u002Fcode> element pair well with it.\u003C\u002Fp>\u003Ch2 id=\"10-accessibility-notes\">10. Accessibility Notes\u003C\u002Fh2>\u003Cul>\u003Cli>Positioned elements can change visual order, but keyboard order follows the HTML. Keep them in sync.\u003C\u002Fli>\u003Cli>Do not cover focused elements with sticky or fixed bars.\u003C\u002Fli>\u003Cli>Make sure overlays can be closed with the Escape key.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"11-common-mistakes\">11. Common Mistakes\u003C\u002Fh2>\u003Cul>\u003Cli>Using absolute without a positioned parent, so the element flies to the page corner.\u003C\u002Fli>\u003Cli>Forgetting that absolute and fixed elements do not add height to the parent.\u003C\u002Fli>\u003Cli>Using top and bottom offsets on static elements.\u003C\u002Fli>\u003Cli>Sticky headers that never stick because of an overflow ancestor.\u003C\u002Fli>\u003Cli>Positioning entire page layouts with absolute instead of grid or flexbox.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"key-takeaways\">Key Takeaways\u003C\u002Fh2>\u003Cp>Relative keeps flow and creates an anchor, absolute pins to that anchor, fixed pins to the viewport, sticky switches between relative and fixed based on scroll. Use inset for short code and prefer flex and grid for page layout.\u003C\u002Fp>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font: 18px system-ui, sans-serif; padding: 16px; }\n  .wrap { border: 2px dashed #888; padding: 10px; margin-bottom: 16px; }\n  .box { width: 100px; height: 50px; background: #2a9d8f; color: #fff; padding: 4px; }\n  .rel { position: relative; top: 15px; left: 30px; background: #e76f51; }\n&lt;\u002Fstyle&gt;\n&lt;div class='wrap'&gt;\n  &lt;div class='box'&gt;Static&lt;\u002Fdiv&gt;\n  &lt;div class='box rel'&gt;Relative (moved 15px down, 30px right)&lt;\u002Fdiv&gt;\n  &lt;div class='box'&gt;Static (space of relative box is still kept)&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  body { font: 18px system-ui, sans-serif; padding: 24px; }\n  .card { position: relative; width: 260px; padding: 20px; border: 1px solid #ccc; border-radius: 12px; }\n  .badge { position: absolute; top: -10px; right: -10px; background: #e63946; color: #fff; font-size: 14px; padding: 4px 10px; border-radius: 999px; }\n  .close { position: absolute; inset: 8px 8px auto auto; border: 0; background: none; font-size: 20px; cursor: pointer; }\n&lt;\u002Fstyle&gt;\n&lt;div class='card'&gt;\n  &lt;span class='badge'&gt;New&lt;\u002Fspan&gt;\n  &lt;button class='close' aria-label='Close'&gt;x&lt;\u002Fbutton&gt;\n  &lt;h3&gt;Product card&lt;\u002Fh3&gt;\n  &lt;p&gt;The badge and close button are absolute, the card is relative.&lt;\u002Fp&gt;\n&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font: 18px system-ui, sans-serif; padding: 40px; }\n  .tip { position: relative; display: inline-block; border-bottom: 1px dotted #333; cursor: help; }\n  .tip::after {\n    content: attr(data-tip);\n    position: absolute; bottom: 130%; left: 50%; transform: translateX(-50%);\n    background: #222; color: #fff; font-size: 14px; padding: 6px 10px; border-radius: 6px;\n    white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .2s;\n  }\n  .tip:hover::after, .tip:focus-visible::after { opacity: 1; }\n&lt;\u002Fstyle&gt;\n&lt;p&gt;Hover or focus this word: &lt;span class='tip' tabindex='0' data-tip='Cascading Style Sheets'&gt;CSS&lt;\u002Fspan&gt;&lt;\u002Fp&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { margin: 0; font: 18px\u002F1.6 system-ui, sans-serif; padding-top: 60px; }\n  header { position: fixed; inset: 0 0 auto 0; height: 60px; background: #264653; color: #fff; display: flex; align-items: center; padding: 0 20px; z-index: 10; }\n  main { padding: 20px; height: 1500px; }\n  .fab { position: fixed; right: 20px; bottom: 20px; width: 56px; height: 56px; border-radius: 50%; border: 0; background: #e76f51; color: #fff; font-size: 24px; }\n&lt;\u002Fstyle&gt;\n&lt;header&gt;Fixed header (stays on scroll)&lt;\u002Fheader&gt;\n&lt;main&gt;&lt;p&gt;Scroll this preview down. The header and the round button stay in place.&lt;\u002Fp&gt;&lt;\u002Fmain&gt;\n&lt;button class='fab' aria-label='Add'&gt;+&lt;\u002Fbutton&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font: 18px\u002F1.6 system-ui, sans-serif; margin: 0; }\n  .scroll { height: 240px; overflow: auto; border: 2px solid #264653; }\n  h3 { position: sticky; top: 0; margin: 0; padding: 10px; background: #e9c46a; }\n  p { padding: 0 10px; height: 120px; }\n&lt;\u002Fstyle&gt;\n&lt;div class='scroll'&gt;\n  &lt;h3&gt;Section A&lt;\u002Fh3&gt;&lt;p&gt;Scroll inside this box. Each title sticks to the top.&lt;\u002Fp&gt;\n  &lt;h3&gt;Section B&lt;\u002Fh3&gt;&lt;p&gt;More content here.&lt;\u002Fp&gt;\n  &lt;h3&gt;Section C&lt;\u002Fh3&gt;&lt;p&gt;More content here.&lt;\u002Fp&gt;\n&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  body { font: 18px system-ui, sans-serif; padding: 16px; }\n  .hero { position: relative; height: 200px; background: linear-gradient(135deg, #8ecae6, #219ebc); border-radius: 12px; overflow: hidden; }\n  .hero::before { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, .35); }\n  .hero h2 { position: absolute; inset: auto 20px 20px 20px; margin: 0; color: #fff; }\n&lt;\u002Fstyle&gt;\n&lt;div class='hero'&gt;&lt;h2&gt;Overlay text on top of a hero&lt;\u002Fh2&gt;&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-javascript\">\u003Cpre>\u003Ccode>const positions = {\n  static: 'normal flow, offsets ignored',\n  relative: 'normal flow, offsets move it visually',\n  absolute: 'out of flow, relative to nearest positioned ancestor',\n  fixed: 'out of flow, relative to viewport',\n  sticky: 'relative until threshold, then fixed inside scroll container'\n};\n\nObject.keys(positions).forEach(function (key) {\n  console.log(key + ': ' + positions[key]);\n});\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>",{"name":335,"slug":336},{"name":527,"slug":528},{"slug":676,"display_name":677,"job_title":5,"short_bio":5,"expertise_tags":678,"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":679,"posts":680},"badar-khalil","Badar Khalil",[],[],[],"Article","https:\u002F\u002Fwpfsharp.com\u002Ftopics\u002Fposition-relative-absolute-fixed-sticky","CSS Position: Relative, Absolute, Fixed & Sticky Explained","Understand CSS position: static, relative, absolute, fixed and sticky with offsets, inset shorthand, containing blocks, sticky headers and live examples.",[686,694,698,702,706,710,714,722,726,730,734,738,742],{"id":687,"text":688,"level":23,"children":689},"css-position-property-relative-absolute-fixed-and-sticky","CSS Position Property: Relative, Absolute, Fixed and Sticky",[690],{"id":691,"text":692,"level":31,"children":693},"trending-keywords-covered-in-this-lesson","Trending keywords covered in this lesson",[],{"id":695,"text":696,"level":23,"children":697},"1-the-five-position-values","1. The Five Position Values",[],{"id":699,"text":700,"level":23,"children":701},"2-offset-properties-top-right-bottom-left-and-inset","2. Offset Properties: top, right, bottom, left and inset",[],{"id":703,"text":704,"level":23,"children":705},"3-position-relative","3. position: relative",[],{"id":707,"text":708,"level":23,"children":709},"4-position-absolute","4. position: absolute",[],{"id":711,"text":712,"level":23,"children":713},"5-position-fixed","5. position: fixed",[],{"id":715,"text":716,"level":23,"children":717},"6-position-sticky","6. position: sticky",[718],{"id":719,"text":720,"level":31,"children":721},"why-sticky-is-not-working","Why sticky is not working",[],{"id":723,"text":724,"level":23,"children":725},"7-containing-block-cheat-sheet","7. Containing Block Cheat Sheet",[],{"id":727,"text":728,"level":23,"children":729},"8-anchored-headers-and-scroll-margin-top","8. Anchored Headers and scroll-margin-top",[],{"id":731,"text":732,"level":23,"children":733},"9-the-new-css-anchor-positioning","9. The New CSS Anchor Positioning",[],{"id":735,"text":736,"level":23,"children":737},"10-accessibility-notes","10. Accessibility Notes",[],{"id":739,"text":740,"level":23,"children":741},"11-common-mistakes","11. Common Mistakes",[],{"id":743,"text":744,"level":23,"children":745},"key-takeaways","Key Takeaways",[],[747,751,754,757,760,763,766],{"id":748,"language":652,"code":749,"is_editable":750},406,"\u003Cstyle>\n  body { font: 18px system-ui, sans-serif; padding: 16px; }\n  .wrap { border: 2px dashed #888; padding: 10px; margin-bottom: 16px; }\n  .box { width: 100px; height: 50px; background: #2a9d8f; color: #fff; padding: 4px; }\n  .rel { position: relative; top: 15px; left: 30px; background: #e76f51; }\n\u003C\u002Fstyle>\n\u003Cdiv class='wrap'>\n  \u003Cdiv class='box'>Static\u003C\u002Fdiv>\n  \u003Cdiv class='box rel'>Relative (moved 15px down, 30px right)\u003C\u002Fdiv>\n  \u003Cdiv class='box'>Static (space of relative box is still kept)\u003C\u002Fdiv>\n\u003C\u002Fdiv>",true,{"id":752,"language":652,"code":753,"is_editable":750},407,"\u003Cstyle>\n  body { font: 18px system-ui, sans-serif; padding: 24px; }\n  .card { position: relative; width: 260px; padding: 20px; border: 1px solid #ccc; border-radius: 12px; }\n  .badge { position: absolute; top: -10px; right: -10px; background: #e63946; color: #fff; font-size: 14px; padding: 4px 10px; border-radius: 999px; }\n  .close { position: absolute; inset: 8px 8px auto auto; border: 0; background: none; font-size: 20px; cursor: pointer; }\n\u003C\u002Fstyle>\n\u003Cdiv class='card'>\n  \u003Cspan class='badge'>New\u003C\u002Fspan>\n  \u003Cbutton class='close' aria-label='Close'>x\u003C\u002Fbutton>\n  \u003Ch3>Product card\u003C\u002Fh3>\n  \u003Cp>The badge and close button are absolute, the card is relative.\u003C\u002Fp>\n\u003C\u002Fdiv>",{"id":755,"language":652,"code":756,"is_editable":750},408,"\u003Cstyle>\n  body { font: 18px system-ui, sans-serif; padding: 40px; }\n  .tip { position: relative; display: inline-block; border-bottom: 1px dotted #333; cursor: help; }\n  .tip::after {\n    content: attr(data-tip);\n    position: absolute; bottom: 130%; left: 50%; transform: translateX(-50%);\n    background: #222; color: #fff; font-size: 14px; padding: 6px 10px; border-radius: 6px;\n    white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .2s;\n  }\n  .tip:hover::after, .tip:focus-visible::after { opacity: 1; }\n\u003C\u002Fstyle>\n\u003Cp>Hover or focus this word: \u003Cspan class='tip' tabindex='0' data-tip='Cascading Style Sheets'>CSS\u003C\u002Fspan>\u003C\u002Fp>",{"id":758,"language":652,"code":759,"is_editable":750},409,"\u003Cstyle>\n  body { margin: 0; font: 18px\u002F1.6 system-ui, sans-serif; padding-top: 60px; }\n  header { position: fixed; inset: 0 0 auto 0; height: 60px; background: #264653; color: #fff; display: flex; align-items: center; padding: 0 20px; z-index: 10; }\n  main { padding: 20px; height: 1500px; }\n  .fab { position: fixed; right: 20px; bottom: 20px; width: 56px; height: 56px; border-radius: 50%; border: 0; background: #e76f51; color: #fff; font-size: 24px; }\n\u003C\u002Fstyle>\n\u003Cheader>Fixed header (stays on scroll)\u003C\u002Fheader>\n\u003Cmain>\u003Cp>Scroll this preview down. The header and the round button stay in place.\u003C\u002Fp>\u003C\u002Fmain>\n\u003Cbutton class='fab' aria-label='Add'>+\u003C\u002Fbutton>",{"id":761,"language":652,"code":762,"is_editable":750},410,"\u003Cstyle>\n  body { font: 18px\u002F1.6 system-ui, sans-serif; margin: 0; }\n  .scroll { height: 240px; overflow: auto; border: 2px solid #264653; }\n  h3 { position: sticky; top: 0; margin: 0; padding: 10px; background: #e9c46a; }\n  p { padding: 0 10px; height: 120px; }\n\u003C\u002Fstyle>\n\u003Cdiv class='scroll'>\n  \u003Ch3>Section A\u003C\u002Fh3>\u003Cp>Scroll inside this box. Each title sticks to the top.\u003C\u002Fp>\n  \u003Ch3>Section B\u003C\u002Fh3>\u003Cp>More content here.\u003C\u002Fp>\n  \u003Ch3>Section C\u003C\u002Fh3>\u003Cp>More content here.\u003C\u002Fp>\n\u003C\u002Fdiv>",{"id":764,"language":652,"code":765,"is_editable":750},411,"\u003Cstyle>\n  body { font: 18px system-ui, sans-serif; padding: 16px; }\n  .hero { position: relative; height: 200px; background: linear-gradient(135deg, #8ecae6, #219ebc); border-radius: 12px; overflow: hidden; }\n  .hero::before { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, .35); }\n  .hero h2 { position: absolute; inset: auto 20px 20px 20px; margin: 0; color: #fff; }\n\u003C\u002Fstyle>\n\u003Cdiv class='hero'>\u003Ch2>Overlay text on top of a hero\u003C\u002Fh2>\u003C\u002Fdiv>",{"id":767,"language":768,"code":769,"is_editable":750},412,"javascript","const positions = {\n  static: 'normal flow, offsets ignored',\n  relative: 'normal flow, offsets move it visually',\n  absolute: 'out of flow, relative to nearest positioned ancestor',\n  fixed: 'out of flow, relative to viewport',\n  sticky: 'relative until threshold, then fixed inside scroll container'\n};\n\nObject.keys(positions).forEach(function (key) {\n  console.log(key + ': ' + positions[key]);\n});",[771,778],{"id":772,"title":773,"slug":774,"prompt":775,"starter_code":776,"expected_output":777,"language":652,"order_index":9},157,"Place a Badge on a Card","place-badge-on-card","Make the SALE badge sit in the top right corner of the card, half outside the edge. Decide which element needs position relative and which needs position absolute.","\u003Cstyle>\n  .card { width: 240px; padding: 20px; border: 1px solid #ccc; }\n  .badge { background: red; color: white; padding: 4px 10px; }\n\u003C\u002Fstyle>\n\u003Cdiv class='card'>\u003Cspan class='badge'>SALE\u003C\u002Fspan>\u003Cp>Headphones\u003C\u002Fp>\u003C\u002Fdiv>","Card is position relative, badge is position absolute with negative top and right offsets",{"id":779,"title":780,"slug":781,"prompt":782,"starter_code":783,"expected_output":784,"language":652,"order_index":23},158,"Create a Sticky Table Header","create-sticky-table-header","Make the table header stay visible while the list scrolls inside the 200px tall container. Remember to set a top value and a solid background.","\u003Cstyle>\n  .box { height: 200px; overflow: auto; }\n  th { background: #eee; }\n\u003C\u002Fstyle>\n\u003Cdiv class='box'>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Name\u003C\u002Fth>\u003Cth>Score\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>A\u003C\u002Ftd>\u003Ctd>1\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>B\u003C\u002Ftd>\u003Ctd>2\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>C\u003C\u002Ftd>\u003Ctd>3\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>D\u003C\u002Ftd>\u003Ctd>4\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>E\u003C\u002Ftd>\u003Ctd>5\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>F\u003C\u002Ftd>\u003Ctd>6\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>G\u003C\u002Ftd>\u003Ctd>7\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>H\u003C\u002Ftd>\u003Ctd>8\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>","th uses position: sticky with top: 0 and a solid background","2026-09-30T18:00:08+00:00",{"id":531,"slug":533,"title":532},{"id":539,"slug":541,"title":540}]