[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"course-tree":6,"blog-categories":646,"topic:css-2d-transforms":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":623,"title":624,"slug":625,"content":672,"course":673,"subcategory":674,"author":675,"reading_time_minutes":35,"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":717,"quiz":5,"exercises":734,"published_at":5,"updated_at":742,"prev":743,"next":744},"\u003Ch2 id=\"what-are-css-2d-transforms\">What are CSS 2D transforms?\u003C\u002Fh2>\u003Cp>\u003Cstrong>CSS 2D transforms\u003C\u002Fstrong> let you move, rotate, resize and skew an element in a flat, two-dimensional plane using the \u003Ccode>transform\u003C\u002Fcode> property. They do not change the document flow: the element's original space is still reserved, so neighbors do not move. That makes transforms ideal for animation, because the browser can often hand them to the GPU compositor without recalculating layout.\u003C\u002Fp>\u003Cp>Focus keyword: \u003Cstrong>CSS 2D transforms\u003C\u002Fstrong>. Related trending keywords: \u003Cem>CSS translate property\u003C\u002Fem>, \u003Cem>individual transform properties\u003C\u002Fem>, \u003Cem>transform-origin\u003C\u002Fem>, \u003Cem>CSS rotate scale\u003C\u002Fem>, \u003Cem>hardware accelerated transforms\u003C\u002Fem>, \u003Cem>center element with transform\u003C\u002Fem>, \u003Cem>hover zoom effect\u003C\u002Fem>.\u003C\u002Fp>\u003Ch2 id=\"the-2d-transform-functions\">The 2D transform functions\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Ccode>translate(x, y)\u003C\u002Fcode>, \u003Ccode>translateX()\u003C\u002Fcode>, \u003Ccode>translateY()\u003C\u002Fcode>: move the element. Percentages are relative to the element's own size, not its parent.\u003C\u002Fli>\u003Cli>\u003Ccode>rotate(angle)\u003C\u002Fcode>: rotate clockwise for positive values. Units: \u003Ccode>deg\u003C\u002Fcode>, \u003Ccode>rad\u003C\u002Fcode>, \u003Ccode>grad\u003C\u002Fcode>, \u003Ccode>turn\u003C\u002Fcode> (for example \u003Ccode>0.25turn\u003C\u002Fcode>).\u003C\u002Fli>\u003Cli>\u003Ccode>scale(x, y)\u003C\u002Fcode>, \u003Ccode>scaleX()\u003C\u002Fcode>, \u003Ccode>scaleY()\u003C\u002Fcode>: resize. \u003Ccode>1\u003C\u002Fcode> is normal size, \u003Ccode>2\u003C\u002Fcode> doubles it and negative values flip it.\u003C\u002Fli>\u003Cli>\u003Ccode>skew(x-angle, y-angle)\u003C\u002Fcode>, \u003Ccode>skewX()\u003C\u002Fcode>, \u003Ccode>skewY()\u003C\u002Fcode>: slant the element.\u003C\u002Fli>\u003Cli>\u003Ccode>matrix(a, b, c, d, tx, ty)\u003C\u002Fcode>: all 2D transforms combined into one matrix. Rarely written by hand, but it is what the browser computes.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"combining-transforms-and-the-order-rule\">Combining transforms and the order rule\u003C\u002Fh2>\u003Cp>List multiple functions in one declaration, separated by spaces: \u003Ccode>transform: translateX(100px) rotate(45deg) scale(1.2);\u003C\u002Fcode>. \u003Cstrong>Order matters\u003C\u002Fstrong>. Functions apply right to left in terms of coordinate space: rotating first and then translating moves the element along the rotated axis, while translating first and then rotating moves it along the original axis. If an animation looks wrong, check the order.\u003C\u002Fp>\u003Cp>Also remember that a second \u003Ccode>transform\u003C\u002Fcode> declaration replaces the first. To add to an existing transform you must repeat all functions, or use the individual properties below.\u003C\u002Fp>\u003Ch2 id=\"transform-origin\">transform-origin\u003C\u002Fh2>\u003Cp>By default, transforms happen around the element's center (\u003Ccode>50% 50%\u003C\u002Fcode>). The \u003Ccode>transform-origin\u003C\u002Fcode> property changes the pivot point. For example, \u003Ccode>transform-origin: top left\u003C\u002Fcode> makes a rotation swing like a door hinge, and \u003Ccode>transform-origin: bottom center\u003C\u002Fcode> makes a scale grow upward from the base.\u003C\u002Fp>\u003Ch2 id=\"individual-transform-properties-translate-rotate-scale\">Individual transform properties: translate, rotate, scale\u003C\u002Fh2>\u003Cp>Modern CSS has separate \u003Ccode>translate\u003C\u002Fcode>, \u003Ccode>rotate\u003C\u002Fcode> and \u003Ccode>scale\u003C\u002Fcode> properties. They are applied in a fixed order (translate, then rotate, then scale, then the regular transform), and you can change or transition one of them without rewriting the others. This is very handy for hover states and keyframes. Example: \u003Ccode>.card:hover { scale: 1.05; }\u003C\u002Fcode> while another rule sets \u003Ccode>rotate: 3deg\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch2 id=\"centering-with-translate\">Centering with translate\u003C\u002Fh2>\u003Cp>A classic pattern for absolutely positioned elements is \u003Ccode>top: 50%; left: 50%; transform: translate(-50%, -50%);\u003C\u002Fcode>. Today, \u003Ccode>place-items: center\u003C\u002Fcode> on a grid parent or \u003Ccode>inset: 0; margin: auto\u003C\u002Fcode> is often simpler, but the translate technique is still common in legacy code and interviews.\u003C\u002Fp>\u003Ch2 id=\"important-behavior-to-remember\">Important behavior to remember\u003C\u002Fh2>\u003Cul>\u003Cli>Transforms do not affect layout, only visual rendering. Scrolling area may still be affected by overflow.\u003C\u002Fli>\u003Cli>A transformed element becomes a containing block for fixed-position descendants and creates a new stacking context.\u003C\u002Fli>\u003Cli>Non-replaced inline elements (like a plain \u003Ccode>span\u003C\u002Fcode>) cannot be transformed. Use \u003Ccode>display: inline-block\u003C\u002Fcode>.\u003C\u002Fli>\u003Cli>Scaling text can make it look blurry during animation. Prefer animating from a slightly larger size down, or use \u003Ccode>will-change\u003C\u002Fcode> sparingly.\u003C\u002Fli>\u003Cli>Always make sure interactive targets stay large enough for touch after scaling or rotating.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2 id=\"quick-summary\">Quick summary\u003C\u002Fh2>\u003Cp>Use \u003Cstrong>CSS 2D transforms\u003C\u002Fstrong> for movement, rotation, zoom and skew effects. Combine them carefully, set the right \u003Ccode>transform-origin\u003C\u002Fcode>, and prefer the individual properties when you need to animate parts separately.\u003C\u002Fp>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  .grid { display: grid; grid-template-columns: repeat(4, 110px); gap: 28px; padding: 30px; font-family: system-ui, sans-serif; }\n  .cell { text-align: center; font-size: 12px; }\n  .box { height: 70px; background: #6366f1; color: #fff; display: grid; place-items: center; border-radius: 8px; transition: transform .4s; }\n  .t:hover .box { transform: translate(20px, 10px); }\n  .r:hover .box { transform: rotate(25deg); }\n  .s:hover .box { transform: scale(1.3); }\n  .k:hover .box { transform: skew(20deg, 5deg); }\n&lt;\u002Fstyle&gt;\n&lt;div class='grid'&gt;\n  &lt;div class='cell t'&gt;&lt;div class='box'&gt;translate&lt;\u002Fdiv&gt;hover&lt;\u002Fdiv&gt;\n  &lt;div class='cell r'&gt;&lt;div class='box'&gt;rotate&lt;\u002Fdiv&gt;hover&lt;\u002Fdiv&gt;\n  &lt;div class='cell s'&gt;&lt;div class='box'&gt;scale&lt;\u002Fdiv&gt;hover&lt;\u002Fdiv&gt;\n  &lt;div class='cell k'&gt;&lt;div class='box'&gt;skew&lt;\u002Fdiv&gt;hover&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  .wrap { display: flex; gap: 70px; padding: 40px; font-family: system-ui, sans-serif; }\n  .item { text-align: center; font-size: 12px; }\n  .sq { width: 80px; height: 80px; background: #10b981; margin: 0 auto 8px; border-radius: 6px; opacity: .85; transition: transform .6s; }\n  .center .sq { transform-origin: center; }\n  .corner .sq { transform-origin: top left; }\n  .bottom .sq { transform-origin: bottom center; }\n  .item:hover .sq { transform: rotate(45deg); }\n  .bottom:hover .sq { transform: scale(1.5); }\n&lt;\u002Fstyle&gt;\n&lt;div class='wrap'&gt;\n  &lt;div class='item center'&gt;&lt;div class='sq'&gt;&lt;\u002Fdiv&gt;origin: center&lt;\u002Fdiv&gt;\n  &lt;div class='item corner'&gt;&lt;div class='sq'&gt;&lt;\u002Fdiv&gt;origin: top left&lt;\u002Fdiv&gt;\n  &lt;div class='item bottom'&gt;&lt;div class='sq'&gt;&lt;\u002Fdiv&gt;bottom center (scale)&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  .demo { display: flex; gap: 60px; padding: 40px; font-family: system-ui, sans-serif; font-size: 12px; text-align: center; }\n  .a, .b { width: 80px; height: 80px; margin: 0 auto 10px; border-radius: 8px; background: #f59e0b; transition: transform .5s; }\n  .b { background: #ef4444; }\n  \u002F* Order 1: translate, then rotate *\u002F\n  .demo .x:hover .a { transform: translateX(60px) rotate(45deg); }\n  \u002F* Order 2: rotate, then translate (moves along the rotated axis) *\u002F\n  .demo .y:hover .b { transform: rotate(45deg) translateX(60px); }\n&lt;\u002Fstyle&gt;\n&lt;div class='demo'&gt;\n  &lt;div class='x'&gt;&lt;div class='a'&gt;&lt;\u002Fdiv&gt;translateX then rotate&lt;\u002Fdiv&gt;\n  &lt;div class='y'&gt;&lt;div class='b'&gt;&lt;\u002Fdiv&gt;rotate then translateX&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  .card {\n    width: 180px; height: 120px; margin: 40px;\n    background: linear-gradient(135deg, #8b5cf6, #ec4899);\n    color: #fff; display: grid; place-items: center; border-radius: 14px;\n    font: 600 16px system-ui, sans-serif;\n    rotate: -4deg;\n    transition: scale .3s ease, rotate .3s ease, translate .3s ease;\n  }\n  \u002F* Change each property independently, no need to repeat the others *\u002F\n  .card:hover { scale: 1.1; rotate: 0deg; translate: 0 -8px; }\n&lt;\u002Fstyle&gt;\n&lt;div class='card'&gt;Individual props&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-html\">\u003Cpre>\u003Ccode>&lt;style&gt;\n  .stage { position: relative; height: 220px; background: #0f172a; border-radius: 12px; }\n  .modal {\n    position: absolute; top: 50%; left: 50%;\n    transform: translate(-50%, -50%);\n    background: #fff; color: #0f172a; padding: 20px 28px; border-radius: 12px;\n    font: 600 16px system-ui, sans-serif;\n  }\n&lt;\u002Fstyle&gt;\n&lt;div class='stage'&gt;&lt;div class='modal'&gt;Perfectly centered with translate(-50%, -50%)&lt;\u002Fdiv&gt;&lt;\u002Fdiv&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>",{"name":335,"slug":336},{"name":615,"slug":616},{"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\u002Fcss-2d-transforms","CSS 2D Transforms: translate, rotate, scale, skew Guide","Master CSS 2D transforms: translate, rotate, scale, skew, matrix, transform-origin and individual transform properties with live, editable examples.",[686,690,694,698,701,705,709,713],{"id":687,"text":688,"level":23,"children":689},"what-are-css-2d-transforms","What are CSS 2D transforms?",[],{"id":691,"text":692,"level":23,"children":693},"the-2d-transform-functions","The 2D transform functions",[],{"id":695,"text":696,"level":23,"children":697},"combining-transforms-and-the-order-rule","Combining transforms and the order rule",[],{"id":699,"text":699,"level":23,"children":700},"transform-origin",[],{"id":702,"text":703,"level":23,"children":704},"individual-transform-properties-translate-rotate-scale","Individual transform properties: translate, rotate, scale",[],{"id":706,"text":707,"level":23,"children":708},"centering-with-translate","Centering with translate",[],{"id":710,"text":711,"level":23,"children":712},"important-behavior-to-remember","Important behavior to remember",[],{"id":714,"text":715,"level":23,"children":716},"quick-summary","Quick summary",[],[718,722,725,728,731],{"id":719,"language":652,"code":720,"is_editable":721},577,"\u003Cstyle>\n  .grid { display: grid; grid-template-columns: repeat(4, 110px); gap: 28px; padding: 30px; font-family: system-ui, sans-serif; }\n  .cell { text-align: center; font-size: 12px; }\n  .box { height: 70px; background: #6366f1; color: #fff; display: grid; place-items: center; border-radius: 8px; transition: transform .4s; }\n  .t:hover .box { transform: translate(20px, 10px); }\n  .r:hover .box { transform: rotate(25deg); }\n  .s:hover .box { transform: scale(1.3); }\n  .k:hover .box { transform: skew(20deg, 5deg); }\n\u003C\u002Fstyle>\n\u003Cdiv class='grid'>\n  \u003Cdiv class='cell t'>\u003Cdiv class='box'>translate\u003C\u002Fdiv>hover\u003C\u002Fdiv>\n  \u003Cdiv class='cell r'>\u003Cdiv class='box'>rotate\u003C\u002Fdiv>hover\u003C\u002Fdiv>\n  \u003Cdiv class='cell s'>\u003Cdiv class='box'>scale\u003C\u002Fdiv>hover\u003C\u002Fdiv>\n  \u003Cdiv class='cell k'>\u003Cdiv class='box'>skew\u003C\u002Fdiv>hover\u003C\u002Fdiv>\n\u003C\u002Fdiv>",true,{"id":723,"language":652,"code":724,"is_editable":721},578,"\u003Cstyle>\n  .wrap { display: flex; gap: 70px; padding: 40px; font-family: system-ui, sans-serif; }\n  .item { text-align: center; font-size: 12px; }\n  .sq { width: 80px; height: 80px; background: #10b981; margin: 0 auto 8px; border-radius: 6px; opacity: .85; transition: transform .6s; }\n  .center .sq { transform-origin: center; }\n  .corner .sq { transform-origin: top left; }\n  .bottom .sq { transform-origin: bottom center; }\n  .item:hover .sq { transform: rotate(45deg); }\n  .bottom:hover .sq { transform: scale(1.5); }\n\u003C\u002Fstyle>\n\u003Cdiv class='wrap'>\n  \u003Cdiv class='item center'>\u003Cdiv class='sq'>\u003C\u002Fdiv>origin: center\u003C\u002Fdiv>\n  \u003Cdiv class='item corner'>\u003Cdiv class='sq'>\u003C\u002Fdiv>origin: top left\u003C\u002Fdiv>\n  \u003Cdiv class='item bottom'>\u003Cdiv class='sq'>\u003C\u002Fdiv>bottom center (scale)\u003C\u002Fdiv>\n\u003C\u002Fdiv>",{"id":726,"language":652,"code":727,"is_editable":721},579,"\u003Cstyle>\n  .demo { display: flex; gap: 60px; padding: 40px; font-family: system-ui, sans-serif; font-size: 12px; text-align: center; }\n  .a, .b { width: 80px; height: 80px; margin: 0 auto 10px; border-radius: 8px; background: #f59e0b; transition: transform .5s; }\n  .b { background: #ef4444; }\n  \u002F* Order 1: translate, then rotate *\u002F\n  .demo .x:hover .a { transform: translateX(60px) rotate(45deg); }\n  \u002F* Order 2: rotate, then translate (moves along the rotated axis) *\u002F\n  .demo .y:hover .b { transform: rotate(45deg) translateX(60px); }\n\u003C\u002Fstyle>\n\u003Cdiv class='demo'>\n  \u003Cdiv class='x'>\u003Cdiv class='a'>\u003C\u002Fdiv>translateX then rotate\u003C\u002Fdiv>\n  \u003Cdiv class='y'>\u003Cdiv class='b'>\u003C\u002Fdiv>rotate then translateX\u003C\u002Fdiv>\n\u003C\u002Fdiv>",{"id":729,"language":652,"code":730,"is_editable":721},580,"\u003Cstyle>\n  .card {\n    width: 180px; height: 120px; margin: 40px;\n    background: linear-gradient(135deg, #8b5cf6, #ec4899);\n    color: #fff; display: grid; place-items: center; border-radius: 14px;\n    font: 600 16px system-ui, sans-serif;\n    rotate: -4deg;\n    transition: scale .3s ease, rotate .3s ease, translate .3s ease;\n  }\n  \u002F* Change each property independently, no need to repeat the others *\u002F\n  .card:hover { scale: 1.1; rotate: 0deg; translate: 0 -8px; }\n\u003C\u002Fstyle>\n\u003Cdiv class='card'>Individual props\u003C\u002Fdiv>",{"id":732,"language":652,"code":733,"is_editable":721},581,"\u003Cstyle>\n  .stage { position: relative; height: 220px; background: #0f172a; border-radius: 12px; }\n  .modal {\n    position: absolute; top: 50%; left: 50%;\n    transform: translate(-50%, -50%);\n    background: #fff; color: #0f172a; padding: 20px 28px; border-radius: 12px;\n    font: 600 16px system-ui, sans-serif;\n  }\n\u003C\u002Fstyle>\n\u003Cdiv class='stage'>\u003Cdiv class='modal'>Perfectly centered with translate(-50%, -50%)\u003C\u002Fdiv>\u003C\u002Fdiv>",[735],{"id":736,"title":737,"slug":738,"prompt":739,"starter_code":740,"expected_output":741,"language":652,"order_index":9},206,"Create a hinged door rotation","transform-hinge-door","Make the .door rotate 35 degrees around its top-left corner when hovering the .frame. Use transform-origin and a 400ms transition. Do not use the transform shorthand on hover: use the individual rotate property instead.","\u003Cstyle>\n  .frame { width: 140px; height: 180px; border: 3px solid #334155; margin: 40px; }\n  .door { width: 100%; height: 100%; background: #f59e0b; }\n  \u002F* TODO: add transform-origin, transition and hover rule *\u002F\n\u003C\u002Fstyle>\n\u003Cdiv class='frame'>\u003Cdiv class='door'>\u003C\u002Fdiv>\u003C\u002Fdiv>","On hover the orange panel swings 35 degrees around its top-left corner like a door hinge.","2026-09-30T18:50:34+00:00",{"id":619,"slug":621,"title":620},{"id":627,"slug":629,"title":628}]