41554 blogs · [ { "id": "01a0876f-358d-721b-8a22-a958db6bdfe4", "title": "Build a 3D Renderer from Scratch in a 2D Canvas [Interactive Guide]", "url": "https://douiri.org/blog/3d-renderer-2d-api/", "published_at": "2026-03-06T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958dc3f5f46", "title": "Pure CSS Masonry is Finally Here: Intro to Grid-Lanes", "url": "https://douiri.org/blog/grid-lanes-masonry/", "published_at": "2026-01-01T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958dcc440bc", "title": "MR. Robot Tech Terms for non-specialists ( no spoiler)", "url": "https://douiri.org/blog/mr-robot-tech-terms/", "published_at": "2025-12-17T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958dd4026ee", "title": "How to Make an Inverted border-radius in CSS (with diagrams)", "url": "https://douiri.org/blog/inverted-border-radius/", "published_at": "2025-08-24T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958dd9f61cf", "title": "Beginner's Guide to Web Hosting Types (With Pros and Cons)", "url": "https://douiri.org/blog/types-of-web-hosting/", "published_at": "2025-07-28T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958de681400", "title": "How to Map Values from one Range to Another in JavaScript", "url": "https://douiri.org/blog/range-mapping/", "published_at": "2025-07-08T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958dedc7e61", "title": "How to Make Gradient Borders with CSS", "url": "https://douiri.org/blog/css-gradient-border/", "published_at": "2025-06-10T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958dfb3cb41", "title": "async vs defer Attributes for script Elements", "url": "https://douiri.org/blog/defer-vs-async/", "published_at": "2025-03-23T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e09aefc2", "title": "Best Free Static Website Hosting Providers - Pros and Cons of Each", "url": "https://douiri.org/blog/free-website-host/", "published_at": "2025-02-22T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e13dcc24", "title": "How to Trigger \"Unsaved Changes\" Alert in Your Web App to prevent Data Loss", "url": "https://douiri.org/blog/unsaved-changes-alert/", "published_at": "2025-02-08T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e21b5618", "title": "Keep Footer at Page Bottom with CSS (Even with Little Content)", "url": "https://douiri.org/blog/fix-footer-bottom-css/", "published_at": "2025-02-04T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e2c53744", "title": "January 2025 Web Roundup", "url": "https://douiri.org/blog/round-up-january-2025/", "published_at": "2025-02-01T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e3789f07", "title": "Toggle Switches - What are They and How to Make Them Accessible for The Web", "url": "https://douiri.org/blog/toggle-switch-css-only/", "published_at": "2025-01-23T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e3817873", "title": "Month Round-up: What You Missed in December 2024", "url": "https://douiri.org/blog/web-recap-december-2024/", "published_at": "2025-01-02T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e3935661", "title": "How to Animate to Height Auto in Modern CSS", "url": "https://douiri.org/blog/animate-to-height-auto-in-css/", "published_at": "2024-12-15T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e45b791d", "title": "Advanced Chrome DevTools Features Every Developer Should Know", "url": "https://douiri.org/blog/chrome-devtools-features/", "published_at": "2024-11-23T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e4e9fe61", "title": "Text Fragment: How to Link Any Text on The Web", "url": "https://douiri.org/blog/how-to-use-text-fragments/", "published_at": "2024-11-11T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e530c556", "title": "Visualizing CSS Margin and Padding For beginners", "url": "https://douiri.org/blog/margin-padding-visualization/", "published_at": "2024-10-27T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e555378a", "title": "Mastering Form Handling in React 19: Actions and new Hooks", "url": "https://douiri.org/blog/form-handling-react-19/", "published_at": "2024-07-07T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e56fe19a", "title": "5 Essential Resources to Escape Tutorial Hell as a Developer", "url": "https://douiri.org/blog/5-resources-escape-tutorial-hell-frontend/", "published_at": "2024-06-30T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e5b2ba3f", "title": "How to Create a CSS Only Floating Label for Input Fields", "url": "https://douiri.org/blog/css-floating-label/", "published_at": "2024-06-22T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e643c770", "title": "Overlay With One Line of CSS Guide", "url": "https://douiri.org/blog/css-one-line-overlay/", "published_at": "2024-06-15T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e6edc7fd", "title": "Top 10 Chrome Extensions for Frontend Developers in 2024", "url": "https://douiri.org/blog/frontend-chrome-extensions/", "published_at": "2024-06-09T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e7af8149", "title": "Calculating Relative Mouse Angles in JavaScript Using atan2()", "url": "https://douiri.org/blog/javascript-mouse-angle/", "published_at": "2024-05-18T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e8359e2e", "title": "Build Responsive Layouts with no Media Queries", "url": "https://douiri.org/blog/no-media-query-responsive-css/", "published_at": "2024-04-29T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958e90ec7bf", "title": "Write Clean JavaScript Code: Essential Tips", "url": "https://douiri.org/blog/clean-javascript-tips/", "published_at": "2024-04-14T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958ea0e5213", "title": "CSS New Features You Should Know in 2024", "url": "https://douiri.org/blog/css-new-features-2024/", "published_at": "2024-04-08T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958eb0234c5", "title": "Best 15 VSCode Extensions for better coding experience", "url": "https://douiri.org/blog/best-vscode-extensions/", "published_at": "2024-03-18T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958eb49f445", "title": "Write HTML & CSS faster with Emmet Abbreviations", "url": "https://douiri.org/blog/code-faster-with-emmet-abbreviations/", "published_at": "2024-03-09T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958eb7de994", "title": "Top 13 vs code shortcuts to increase your productivity", "url": "https://douiri.org/blog/top-13-vs-code-shortcuts/", "published_at": "2024-03-02T00:00:00+00:00" }, { "id": "01a0876f-358d-721b-8a22-a958ec098457", "title": "How to Type Fast on Keyboard with Touch Typing", "url": "https://douiri.org/blog/master-your-keyboard/", "published_at": "2024-02-23T00:00:00+00:00" } ] posts Claim your blog
Back to douiri.org
Blog · corpus.blog/blogs/douiri.org/posts

douiri.org

douiri.org

2026

2025

2024