[{"data":1,"prerenderedAt":78},["Reactive",2],{"blog-post-markdown-multi-column-layouts-complete-guide":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":52,"related":53},"markdown-multi-column-layouts-complete-guide","Markdown Multi-Column Layouts: Complete Guide for Professional Documentation and Responsive Design","Master multi-column layouts in Markdown using CSS Grid, Flexbox, and HTML techniques. Learn responsive design, content organization, and platform-specific implementations for professional documentation.","Multi-column layouts in Markdown enable sophisticated content organization that transforms standard linear documentation into visually engaging, space-efficient presentations. While basic Markdown…","2025-08-26","Tutorial","Matthew Rathbone","markdown multi-column, markdown columns, markdown layout, css grid markdown, flexbox markdown, responsive markdown design, multi-column documentation",14,"\u003Cp>Multi-column layouts in Markdown enable sophisticated content organization that transforms standard linear documentation into visually engaging, space-efficient presentations. While basic Markdown provides excellent content structure, multi-column techniques allow you to create professional documentation layouts, comparison sections, and responsive designs that adapt to different screen sizes and reading contexts.\u003C/p>\n\u003Ch2 id=\"why-use-multi-column-layouts\">Why Use Multi-Column Layouts?\u003C/h2>\n\u003Cp>Multi-column layouts provide significant advantages for professional documentation:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Space Efficiency\u003C/strong>: Maximize content density without overwhelming readers\u003C/li>\n\u003Cli>\u003Cstrong>Visual Organization\u003C/strong>: Create clear content relationships and improve scanning\u003C/li>\n\u003Cli>\u003Cstrong>Responsive Design\u003C/strong>: Adapt content presentation to different screen sizes\u003C/li>\n\u003Cli>\u003Cstrong>Professional Appearance\u003C/strong>: Achieve publication-quality layout standards\u003C/li>\n\u003Cli>\u003Cstrong>Content Comparison\u003C/strong>: Present related information side-by-side for easy comparison\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"css-grid-approach\">CSS Grid Approach\u003C/h2>\n\u003Cp>CSS Grid provides the most powerful and flexible foundation for multi-column Markdown layouts:\u003C/p>\n\u003Ch3 id=\"basic-two-column-grid\">Basic Two-Column Grid\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;two-column-grid&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column&quot;\u003C/span>&gt;\u003C/span>\n    \n## Left Column Content\n\nThis content appears in the left column. You can include:\n\n- Regular Markdown formatting\n- **Bold** and *italic* text\n- Code snippets: `console.log(&#x27;Hello&#x27;)`\n- Lists and other elements\n\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column&quot;\u003C/span>&gt;\u003C/span>\n    \n## Right Column Content\n\nThis content appears in the right column with:\n\n- Independent formatting\n- Different content types\n- Images and media\n- Tables and data\n\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">style\u003C/span>&gt;\u003C/span>\u003Cspan class=\"language-css\">\n\u003Cspan class=\"hljs-selector-class\">.two-column-grid\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n  \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">30px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">margin\u003C/span>: \u003Cspan class=\"hljs-number\">20px\u003C/span> \u003Cspan class=\"hljs-number\">0\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-selector-class\">.column\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">padding\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">768px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.two-column-grid\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n    \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">20px\u003C/span>;\n  }\n}\n\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">style\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"advanced-three-column-layout\">Advanced Three-Column Layout\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;three-column-grid&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column-main&quot;\u003C/span>&gt;\u003C/span>\n    \n## Main Content\n\nPrimary content goes here with full Markdown support:\n\n\n```javascript\nfunction processData(data) {\n  return data.map(item =&gt; ({\n    id: item.id,\n    name: item.name.trim(),\n    processed: true\n  }));\n}\n\u003C/code>\u003C/pre>\u003Cp>The main column takes up more space than the sidebars.\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"column-sidebar\">\n    \n\u003Ch2 id=\"quick-tips\">Quick Tips\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cp>Always validate input data\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Use consistent naming conventions\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Handle edge cases gracefully\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Write comprehensive tests\u003C/p>\n\u003C/div>\n\u003Cdiv class=\"column-reference\">\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"related-apis\">Related APIs\u003C/h2>\n\u003Cp>\u003Cstrong>Data Processing\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>Array.map()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>Object.keys()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>JSON.parse()\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Validation\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Ccode>typeof operator\u003C/code>\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Ccode>instanceof\u003C/code>\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Custom validators\u003C/p>\n\u003C/div>\u003C/li>\n\u003C/ul>\n\u003C/div>\n\n\u003Cstyle>\n.three-column-grid {\n  display: grid;\n  grid-template-columns: 2fr 1fr 1fr;\n  gap: 25px;\n  margin: 30px 0;\n  background: #f8f9fa;\n  padding: 25px;\n  border-radius: 8px;\n}\n\n.column-main {\n  padding-right: 20px;\n  border-right: 1px solid #e1e8ed;\n}\n\n.column-sidebar,\n.column-reference {\n  font-size: 0.9em;\n}\n\n.column-sidebar h2,\n.column-reference h2 {\n  font-size: 1.1em;\n  color: #007bff;\n  margin-top: 0;\n}\n\n@media (max-width: 1024px) {\n  .three-column-grid {\n    grid-template-columns: 1fr;\n    gap: 20px;\n  }\n  \n  .column-main {\n    border-right: none;\n    border-bottom: 1px solid #e1e8ed;\n    padding-right: 0;\n    padding-bottom: 20px;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n## Flexbox Multi-Column Solutions\n\nFlexbox provides excellent browser compatibility and flexible column behavior:\n\n### Equal Width Columns\n\n```html\n&lt;div class=&quot;flex-columns&quot;&gt;\n  &lt;div class=&quot;flex-column&quot;&gt;\n    \n### Development Environment\n\n**Prerequisites:**\n- Node.js 16.0 or higher\n- npm 8.0 or higher\n- Git for version control\n\n**Installation:**\n\n```bash\nnpm install\nnpm run dev\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Configuration:\u003C/strong>\u003Cbr>Create \u003Ccode>.env.local\u003C/code> file with required environment variables.\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"flex-column\">\n    \n\u003Ch3 id=\"production-deployment\">Production Deployment\u003C/h3>\n\u003Cp>\u003Cstrong>Build Process:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Run comprehensive tests\u003C/li>\n\u003Cli>Generate production bundle\u003C/li>\n\u003Cli>Optimize assets and images\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Deployment Steps:\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-bash\">npm run build\nnpm run deploy\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Monitoring:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cp>Check application logs\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Verify all endpoints\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Monitor performance metrics\u003C/p>\n\u003C/div>\u003C/li>\n\u003C/ul>\n\u003C/div>\n\n\u003Cstyle>\n.flex-columns {\n  display: flex;\n  gap: 30px;\n  margin: 25px 0;\n}\n\n.flex-column {\n  flex: 1;\n  padding: 20px;\n  background: #f8f9fa;\n  border-radius: 8px;\n  border-left: 4px solid #007bff;\n}\n\n.flex-column h3 {\n  margin-top: 0;\n  color: #333;\n  border-bottom: 2px solid #e1e8ed;\n  padding-bottom: 10px;\n}\n\n@media (max-width: 768px) {\n  .flex-columns {\n    flex-direction: column;\n    gap: 20px;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n### Variable Width Columns\n\n```html\n&lt;div class=&quot;flex-variable&quot;&gt;\n  &lt;div class=&quot;flex-main&quot;&gt;\n    \n## Implementation Guide\n\nMulti-column layouts require careful consideration of content flow and responsive behavior. Here&#39;s a comprehensive approach:\n\n### Content Planning\n\nBefore implementing multi-column layouts:\n\n1. **Analyze Content Relationships**: Identify which content works well side-by-side\n2. **Consider Reading Flow**: Ensure logical progression across columns\n3. **Plan for Mobile**: Design mobile-first responsive behavior\n4. **Test Accessibility**: Verify screen reader compatibility\n\n### Implementation Strategy\n\n\n```css\n/* Progressive enhancement approach */\n.layout-container {\n  /* Mobile-first: single column */\n  display: block;\n}\n\n@media (min-width: 768px) {\n  .layout-container {\n    /* Tablet: two columns */\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n@media (min-width: 1024px) {\n  .layout-container {\n    /* Desktop: three columns */\n    grid-template-columns: 2fr 1fr 1fr;\n  }\n}\n\u003C/code>\u003C/pre>  \u003C/div>\n  \u003Cdiv class=\"flex-sidebar\">\n    \n\u003Ch3 id=\"key-benefits\">Key Benefits\u003C/h3>\n\u003Cp>\u003Cstrong>Space Efficiency\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Reduce page length\u003C/li>\n\u003Cli>Improve content density\u003C/li>\n\u003Cli>Better information hierarchy\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>User Experience\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Faster content scanning\u003C/li>\n\u003Cli>Clear content relationships\u003C/li>\n\u003Cli>Professional appearance\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>SEO Advantages\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Better content structure\u003C/li>\n\u003Cli>Improved user engagement\u003C/li>\n\u003Cli>Enhanced readability metrics\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"common-pitfalls\">Common Pitfalls\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cp>Overusing columns\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Poor mobile experience\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Content imbalance\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Accessibility issues\u003C/p>\n\u003C/div>\u003C/li>\n\u003C/ul>\n\u003C/div>\n\n\u003Cstyle>\n.flex-variable {\n  display: flex;\n  gap: 30px;\n  margin: 30px 0;\n}\n\n.flex-main {\n  flex: 2;\n  padding-right: 20px;\n  border-right: 1px solid #e1e8ed;\n}\n\n.flex-sidebar {\n  flex: 1;\n  background: #f0f8ff;\n  padding: 20px;\n  border-radius: 8px;\n  font-size: 0.9em;\n}\n\n.flex-sidebar h3 {\n  color: #007bff;\n  margin-top: 0;\n  font-size: 1.1em;\n}\n\n.flex-sidebar h4 {\n  color: #333;\n  margin-top: 20px;\n  margin-bottom: 8px;\n}\n\n@media (max-width: 768px) {\n  .flex-variable {\n    flex-direction: column;\n    gap: 20px;\n  }\n  \n  .flex-main {\n    border-right: none;\n    border-bottom: 1px solid #e1e8ed;\n    padding-right: 0;\n    padding-bottom: 20px;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n## Responsive Design Patterns\n\n### Adaptive Column Behavior\n\nCreate layouts that intelligently adapt to screen size:\n\n```html\n&lt;div class=&quot;adaptive-columns&quot;&gt;\n  &lt;article class=&quot;primary-content&quot;&gt;\n    \n## Primary Article Content\n\nThis main content area contains the primary information that should always be prominently displayed across all device sizes.\n\n### Implementation Details\n\nThe adaptive column system uses CSS media queries to provide optimal reading experiences:\n\n- **Mobile (&lt; 768px)**: Single column, full width\n- **Tablet (768px - 1024px)**: Two columns with sidebar\n- **Desktop (&gt; 1024px)**: Three columns with enhanced sidebars\n\n```css\n.adaptive-columns {\n  display: grid;\n  gap: 20px;\n}\n\n/* Mobile: Stack vertically */\n@media (max-width: 767px) {\n  .adaptive-columns {\n    grid-template-columns: 1fr;\n  }\n}\n\n/* Tablet: Two columns */\n@media (min-width: 768px) and (max-width: 1023px) {\n  .adaptive-columns {\n    grid-template-columns: 2fr 1fr;\n  }\n}\n\n/* Desktop: Three columns */\n@media (min-width: 1024px) {\n  .adaptive-columns {\n    grid-template-columns: 2fr 1fr 1fr;\n  }\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"best-practices\">Best Practices\u003C/h3>\n\u003Col>\n\u003Cli>\u003Cstrong>Content Priority\u003C/strong>: Most important content should be in the first column\u003C/li>\n\u003Cli>\u003Cstrong>Responsive Testing\u003C/strong>: Test on actual devices, not just browser dev tools\u003C/li>\n\u003Cli>\u003Cstrong>Performance\u003C/strong>: Avoid unnecessary CSS complexity\u003C/li>\n\u003Cli>\u003Cstrong>Accessibility\u003C/strong>: Maintain logical reading order\u003C/li>\n\u003C/ol>\n  \u003C/article>\n  \u003Caside class=\"secondary-content\">\n    \n\u003Ch3 id=\"related-topics\">Related Topics\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"/\">CSS Grid Layouts\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"/\">Responsive Design\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"/\">Mobile-First Development\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"quick-reference\">Quick Reference\u003C/h3>\n\u003Cp>\u003Cstrong>Grid Properties:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>grid-template-columns\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>grid-gap\u003C/code> / \u003Ccode>gap\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>grid-auto-flow\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Responsive Units:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Ccode>fr\u003C/code> (fractional units)\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Ccode>minmax()\u003C/code>\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Ccode>auto-fit\u003C/code> / \u003Ccode>auto-fill\u003C/code>\u003C/p>\n\u003C/aside>\n\u003Caside class=\"tertiary-content\">\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"code-examples\">Code Examples\u003C/h3>\n\u003Cp>\u003Cstrong>Basic Grid:\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-selector-class\">.grid\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n}\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Responsive Grid:\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">768px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.grid\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n  }\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"tools--resources\">Tools &amp; Resources\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cp>Firefox Grid Inspector\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Chrome DevTools\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>CSS Grid Generator\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Responsive Design Mode\u003C/p>\n\u003C/aside>\u003C/li>\n\u003C/ul>\n\u003C/div>\n\n\u003Cstyle>\n.adaptive-columns {\n  display: grid;\n  gap: 25px;\n  margin: 30px 0;\n}\n\n.primary-content {\n  background: white;\n  padding: 25px;\n  border-radius: 8px;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.secondary-content,\n.tertiary-content {\n  background: #f8f9fa;\n  padding: 20px;\n  border-radius: 8px;\n  border-left: 4px solid #007bff;\n  font-size: 0.9em;\n}\n\n.secondary-content h3,\n.tertiary-content h3 {\n  color: #007bff;\n  margin-top: 0;\n  font-size: 1.1em;\n}\n\n/* Mobile: Stack vertically */\n@media (max-width: 767px) {\n  .adaptive-columns {\n    grid-template-columns: 1fr;\n  }\n}\n\n/* Tablet: Two columns */\n@media (min-width: 768px) and (max-width: 1023px) {\n  .adaptive-columns {\n    grid-template-columns: 2fr 1fr;\n  }\n  \n  .tertiary-content {\n    grid-column: 1 / -1;\n    margin-top: 10px;\n  }\n}\n\n/* Desktop: Three columns */\n@media (min-width: 1024px) {\n  .adaptive-columns {\n    grid-template-columns: 2fr 1fr 1fr;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n## Content Organization Strategies\n\n### Comparison Layouts\n\nPerfect for feature comparisons, pros/cons, or before/after scenarios:\n\n```html\n&lt;div class=&quot;comparison-layout&quot;&gt;\n  &lt;div class=&quot;comparison-item&quot;&gt;\n    \n## Traditional Approach\n\n### Implementation\n```javascript\n// Traditional callback approach\nfunction fetchData(callback) {\n  setTimeout(() =&gt; {\n    callback(null, { data: &#39;result&#39; });\n  }, 1000);\n}\n\nfetchData((err, result) =&gt; {\n  if (err) {\n    console.error(&#39;Error:&#39;, err);\n  } else {\n    console.log(&#39;Data:&#39;, result);\n  }\n});\n\u003C/code>\u003C/pre>\u003Ch3 id=\"pros\">Pros\u003C/h3>\n\u003Cul>\n\u003Cli>Wide browser support\u003C/li>\n\u003Cli>Well-understood pattern\u003C/li>\n\u003Cli>Simple implementation\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"cons\">Cons\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cp>Callback hell potential\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Error handling complexity\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Difficult to compose\u003C/p>\n\u003C/div>\n\u003Cdiv class=\"comparison-item\">\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"modern-approach\">Modern Approach\u003C/h2>\n\u003Ch3 id=\"implementation\">Implementation\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// Modern async/await approach\u003C/span>\n\u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-keyword\">function\u003C/span> \u003Cspan class=\"hljs-title function_\">fetchData\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n  \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Promise\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">resolve\u003C/span>) =&gt;\u003C/span> {\n    \u003Cspan class=\"hljs-built_in\">setTimeout\u003C/span>(\u003Cspan class=\"hljs-function\">() =&gt;\u003C/span> {\n      \u003Cspan class=\"hljs-title function_\">resolve\u003C/span>({ \u003Cspan class=\"hljs-attr\">data\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;result&#x27;\u003C/span> });\n    }, \u003Cspan class=\"hljs-number\">1000\u003C/span>);\n  });\n}\n\n\u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n  \u003Cspan class=\"hljs-keyword\">const\u003C/span> result = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">fetchData\u003C/span>();\n  \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Data:&#x27;\u003C/span>, result);\n} \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n  \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">error\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Error:&#x27;\u003C/span>, error);\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"pros-1\">Pros\u003C/h3>\n\u003Cul>\n\u003Cli>Clean, readable syntax\u003C/li>\n\u003Cli>Better error handling\u003C/li>\n\u003Cli>Easy composition\u003C/li>\n\u003Cli>Native Promise support\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"cons-1\">Cons\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cp>Requires modern browser\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Learning curve for beginners\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>Debugging complexity\u003C/p>\n\u003C/div>\u003C/li>\n\u003C/ul>\n\u003C/div>\n\n\u003Cstyle>\n.comparison-layout {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 30px;\n  margin: 30px 0;\n}\n\n.comparison-item {\n  background: #f8f9fa;\n  padding: 25px;\n  border-radius: 8px;\n  border-top: 4px solid #007bff;\n}\n\n.comparison-item:nth-child(2) {\n  border-top-color: #28a745;\n}\n\n.comparison-item h2 {\n  margin-top: 0;\n  color: #333;\n  text-align: center;\n  border-bottom: 2px solid #e1e8ed;\n  padding-bottom: 10px;\n}\n\n.comparison-item h3 {\n  color: #666;\n  margin-top: 25px;\n  margin-bottom: 15px;\n}\n\n.comparison-item pre {\n  background: white;\n  border: 1px solid #e1e8ed;\n  border-radius: 4px;\n}\n\n@media (max-width: 768px) {\n  .comparison-layout {\n    grid-template-columns: 1fr;\n    gap: 20px;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n### Step-by-Step Tutorials\n\nOrganize complex procedures across columns:\n\n```html\n&lt;div class=&quot;tutorial-layout&quot;&gt;\n  &lt;div class=&quot;tutorial-step&quot;&gt;\n    \n### Step 1: Project Setup\n\nCreate a new project directory and initialize the development environment:\n\n```bash\nmkdir markdown-columns\ncd markdown-columns\nnpm init -y\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Key Files:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>package.json\u003C/code> - Project configuration\u003C/li>\n\u003Cli>\u003Ccode>src/\u003C/code> - Source code directory\u003C/li>\n\u003Cli>\u003Ccode>docs/\u003C/code> - Documentation files\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Next:\u003C/strong> Install required dependencies\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"tutorial-step\">\n    \n\u003Ch3 id=\"step-2-install-dependencies\">Step 2: Install Dependencies\u003C/h3>\n\u003Cp>Add the necessary packages for CSS processing and development:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-bash\">npm install --save-dev \\\n  postcss \\\n  autoprefixer \\\n  cssnano \\\n  live-server\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Package Roles:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>postcss\u003C/code> - CSS transformation\u003C/li>\n\u003Cli>\u003Ccode>autoprefixer\u003C/code> - Browser prefixes\u003C/li>\n\u003Cli>\u003Ccode>cssnano\u003C/code> - CSS minification\u003C/li>\n\u003Cli>\u003Ccode>live-server\u003C/code> - Development server\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Next:\u003C/strong> Configure build scripts\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"tutorial-step\">\n    \n\u003Ch3 id=\"step-3-configuration\">Step 3: Configuration\u003C/h3>\n\u003Cp>Create configuration files for the build process:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-json\">\u003Cspan class=\"hljs-comment\">// package.json scripts\u003C/span>\n\u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n  \u003Cspan class=\"hljs-attr\">&quot;scripts&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-punctuation\">{\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;dev&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;live-server --watch=src&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">,\u003C/span>\n    \u003Cspan class=\"hljs-attr\">&quot;build&quot;\u003C/span>\u003Cspan class=\"hljs-punctuation\">:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;postcss src/styles.css -o dist/styles.min.css&quot;\u003C/span>\n  \u003Cspan class=\"hljs-punctuation\">}\u003C/span>\n\u003Cspan class=\"hljs-punctuation\">}\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// postcss.config.js\u003C/span>\n\u003Cspan class=\"hljs-variable language_\">module\u003C/span>.\u003Cspan class=\"hljs-property\">exports\u003C/span> = {\n  \u003Cspan class=\"hljs-attr\">plugins\u003C/span>: [\n    \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;autoprefixer&#x27;\u003C/span>),\n    \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;cssnano&#x27;\u003C/span>)\n  ]\n}\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Next:\u003C/strong> Create your layout styles\u003C/p>\n  \u003C/div>\n\u003C/div>\n\n\u003Cstyle>\n.tutorial-layout {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n  gap: 25px;\n  margin: 30px 0;\n}\n\n.tutorial-step {\n  background: #f0f8ff;\n  padding: 20px;\n  border-radius: 8px;\n  border-left: 4px solid #007bff;\n  position: relative;\n}\n\n.tutorial-step h3 {\n  margin-top: 0;\n  color: #007bff;\n  display: flex;\n  align-items: center;\n}\n\n.tutorial-step h3::before {\n  content: counter(step-counter);\n  counter-increment: step-counter;\n  background: #007bff;\n  color: white;\n  width: 24px;\n  height: 24px;\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  font-weight: bold;\n  margin-right: 10px;\n}\n\n.tutorial-layout {\n  counter-reset: step-counter;\n}\n\n.tutorial-step pre {\n  background: white;\n  border: 1px solid #007bff;\n  border-radius: 4px;\n  margin: 15px 0;\n}\n\n.tutorial-step strong {\n  color: #333;\n}\n\n@media (max-width: 768px) {\n  .tutorial-layout {\n    grid-template-columns: 1fr;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n## Platform-Specific Implementations\n\n### Jekyll and Kramdown\n\nJekyll sites can leverage includes and layouts for consistent multi-column design:\n\n\n```liquid\n&lt;!-- _includes/two-column.html --&gt;\n&lt;div class=&quot;jekyll-columns&quot;&gt;\n  &lt;div class=&quot;column-left&quot;&gt;\n    {{ include.left | markdownify }}\n  &lt;/div&gt;\n  &lt;div class=&quot;column-right&quot;&gt;\n    {{ include.right | markdownify }}\n  &lt;/div&gt;\n&lt;/div&gt;\n\n&lt;!-- Usage in posts --&gt;\n{% capture left_content %}\n## Left Column\nContent for the left side...\n{% endcapture %}\n\n{% capture right_content %}\n## Right Column\nContent for the right side...\n{% endcapture %}\n\n{% include two-column.html left=left_content right=right_content %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"github-pages-compatibility\">GitHub Pages Compatibility\u003C/h3>\n\u003Cp>GitHub Pages has limitations, so use HTML directly:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- GitHub-compatible multi-column --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">table\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">tr\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">td\u003C/span> \u003Cspan class=\"hljs-attr\">width\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;50%&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">valign\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;top&quot;\u003C/span>&gt;\u003C/span>\n      \n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>Installation\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>Clone the repository and install dependencies:\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">pre\u003C/span>&gt;\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">code\u003C/span>&gt;\u003C/span>git clone https://github.com/user/repo.git\ncd repo\nnpm install\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">code\u003C/span>&gt;\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">pre\u003C/span>&gt;\u003C/span>\n\n    \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">td\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">td\u003C/span> \u003Cspan class=\"hljs-attr\">width\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;50%&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">valign\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;top&quot;\u003C/span>&gt;\u003C/span>\n      \n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>Configuration\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>Create a configuration file:\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">pre\u003C/span>&gt;\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">code\u003C/span>&gt;\u003C/span>{\n  &quot;name&quot;: &quot;My Project&quot;,\n  &quot;version&quot;: &quot;1.0.0&quot;,\n  &quot;main&quot;: &quot;index.js&quot;\n}\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">code\u003C/span>&gt;\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">pre\u003C/span>&gt;\u003C/span>\n\n    \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">td\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">tr\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">table\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"notion-and-modern-platforms\">Notion and Modern Platforms\u003C/h3>\n\u003Cp>Many platforms support column blocks natively:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;notion-columns&quot;\u003C/span>&gt;\u003C/span>\u003C/span>\n  \u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;notion-column&quot;\u003C/span>&gt;\u003C/span>\u003C/span>\n\u003Cspan class=\"hljs-code\">    \n## Feature Overview\n\u003C/span>\nOur platform provides:\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> 🚀 \u003Cspan class=\"hljs-strong\">**Fast Performance**\u003C/span>: Optimized for speed\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> 🔒 \u003Cspan class=\"hljs-strong\">**Secure**\u003C/span>: End-to-end encryption\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> 📱 \u003Cspan class=\"hljs-strong\">**Responsive**\u003C/span>: Works on all devices\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> 🎨 \u003Cspan class=\"hljs-strong\">**Customizable**\u003C/span>: Flexible design options\n\n  \u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\u003C/span>\n  \u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;notion-column&quot;\u003C/span>&gt;\u003C/span>\u003C/span>\n\u003Cspan class=\"hljs-code\">    \n## Getting Started\n\u003C/span>\n\u003Cspan class=\"hljs-bullet\">1.\u003C/span> \u003Cspan class=\"hljs-strong\">**Sign up**\u003C/span> for an account\n\u003Cspan class=\"hljs-bullet\">2.\u003C/span> \u003Cspan class=\"hljs-strong\">**Complete**\u003C/span> the onboarding process\n\u003Cspan class=\"hljs-bullet\">3.\u003C/span> \u003Cspan class=\"hljs-strong\">**Import**\u003C/span> your existing data\n\u003Cspan class=\"hljs-bullet\">4.\u003C/span> \u003Cspan class=\"hljs-strong\">**Customize**\u003C/span> your workspace\n\u003Cspan class=\"hljs-bullet\">5.\u003C/span> \u003Cspan class=\"hljs-strong\">**Invite**\u003C/span> team members\n\n  \u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\u003C/span>\n\u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\u003C/span>\n\n\u003Cspan class=\"language-xml\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">style\u003C/span>&gt;\u003C/span>\u003C/span>\n.notion-columns {\n  display: flex;\n  gap: 24px;\n  margin: 20px 0;\n}\n\n.notion-column {\n  flex: 1;\n  background: #f7f6f3;\n  padding: 16px;\n  border-radius: 6px;\n  border: 1px solid #e9e9e7;\n}\n\n.notion-column h2 {\n  margin-top: 0;\n  font-size: 1.2em;\n  color: #37352f;\n}\n\n@media (max-width: 768px) {\n  .notion-columns {\n\u003Cspan class=\"hljs-code\">    flex-direction: column;\n  }\n}\n&lt;/style&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"advanced-layout-techniques\">Advanced Layout Techniques\u003C/h2>\n\u003Ch3 id=\"masonry-style-layouts\">Masonry-Style Layouts\u003C/h3>\n\u003Cp>Create Pinterest-style card layouts:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;masonry-layout&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;masonry-item&quot;\u003C/span>&gt;\u003C/span>\n    \n### Quick Tip: Performance\n\nUse `will-change: transform` for animations:\n\n```css\n.animated-element {\n  will-change: transform;\n  transition: transform 0.3s ease;\n}\n\n.animated-element:hover {\n  transform: translateY(-5px);\n}\n\u003C/code>\u003C/pre>\u003Cp>This hints to the browser to optimize for transforms.\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"masonry-item\">\n    \n\u003Ch3 id=\"common-mistake-overusing-flexbox\">Common Mistake: Overusing Flexbox\u003C/h3>\n\u003Cp>Don&#39;t use Flexbox for everything:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cp>✅ \u003Cstrong>Good\u003C/strong>: Component layout, navigation bars\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>❌ \u003Cstrong>Bad\u003C/strong>: Overall page layout (use Grid instead)\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>✅ \u003Cstrong>Good\u003C/strong>: Centering content\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>❌ \u003Cstrong>Bad\u003C/strong>: Complex multi-dimensional layouts\u003C/p>\n\u003C/div>\n\u003Cdiv class=\"masonry-item\">\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"browser-support\">Browser Support\u003C/h3>\n\u003Cp>CSS Grid support is excellent:\u003C/p>\n\u003Cdiv class=\"table-responsive\">\u003Ctable class=\"table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Browser\u003C/th>\n\u003Cth>Version\u003C/th>\n\u003Cth>Support\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Chrome\u003C/td>\n\u003Ctd>57+\u003C/td>\n\u003Ctd>✅ Full\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Firefox\u003C/td>\n\u003Ctd>52+\u003C/td>\n\u003Ctd>✅ Full\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Safari\u003C/td>\n\u003Ctd>10.1+\u003C/td>\n\u003Ctd>✅ Full\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Edge\u003C/td>\n\u003Ctd>16+\u003C/td>\n\u003Ctd>✅ Full\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\u003C/div>\n\u003Cp>Legacy browsers need fallbacks.\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"masonry-item\">\n    \n\u003Ch3 id=\"accessibility-checklist\">Accessibility Checklist\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Cinput disabled=\"\" type=\"checkbox\"> \nLogical reading order maintained\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cinput disabled=\"\" type=\"checkbox\"> \nKeyboard navigation works\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cinput disabled=\"\" type=\"checkbox\"> \nScreen reader compatibility tested\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cinput disabled=\"\" type=\"checkbox\"> \nColor contrast meets WCAG standards\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cinput disabled=\"\" type=\"checkbox\"> \nFocus indicators visible\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cinput disabled=\"\" type=\"checkbox\"> \nContent reflows on zoom\u003C/p>\n\u003C/div>\u003C/li>\n\u003C/ul>\n\u003C/div>\n\n\u003Cstyle>\n.masonry-layout {\n  column-count: 2;\n  column-gap: 25px;\n  margin: 30px 0;\n}\n\n.masonry-item {\n  display: inline-block;\n  width: 100%;\n  background: #f8f9fa;\n  padding: 20px;\n  margin-bottom: 20px;\n  border-radius: 8px;\n  border-left: 4px solid #007bff;\n  break-inside: avoid;\n}\n\n.masonry-item h3 {\n  margin-top: 0;\n  color: #333;\n  font-size: 1.1em;\n}\n\n.masonry-item table {\n  font-size: 0.9em;\n  width: 100%;\n}\n\n.masonry-item table th,\n.masonry-item table td {\n  padding: 8px;\n  text-align: left;\n  border-bottom: 1px solid #e1e8ed;\n}\n\n@media (max-width: 768px) {\n  .masonry-layout {\n    column-count: 1;\n  }\n}\n\n@media (min-width: 1024px) {\n  .masonry-layout {\n    column-count: 3;\n  }\n}\n\u003C/style>\n\u003Cpre>\u003Ccode>\n### Dynamic Column Adjustment\n\nJavaScript-enhanced responsive columns:\n\n```javascript\nfunction adjustColumns() {\n  const containers = document.querySelectorAll(&#39;.dynamic-columns&#39;);\n  \n  containers.forEach(container =&gt; {\n    const containerWidth = container.offsetWidth;\n    const itemMinWidth = 300; // Minimum column width\n    const gap = 20;\n    \n    // Calculate optimal column count\n    const maxColumns = Math.floor((containerWidth + gap) / (itemMinWidth + gap));\n    const columnCount = Math.max(1, Math.min(maxColumns, 4));\n    \n    container.style.gridTemplateColumns = `repeat(${columnCount}, 1fr)`;\n  });\n}\n\n// Adjust on load and resize\nwindow.addEventListener(&#39;load&#39;, adjustColumns);\nwindow.addEventListener(&#39;resize&#39;, adjustColumns);\n\u003C/code>\u003C/pre>\u003Ch2 id=\"performance-optimization\">Performance Optimization\u003C/h2>\n\u003Ch3 id=\"css-loading-strategies\">CSS Loading Strategies\u003C/h3>\n\u003Cp>Optimize multi-column layout performance:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Critical CSS - inline in head */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.columns\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">20px\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Progressive enhancement */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">min-width\u003C/span>: \u003Cspan class=\"hljs-number\">768px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.columns\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n  }\n}\n\n\u003Cspan class=\"hljs-comment\">/* Non-critical enhancements - external stylesheet */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.columns\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">border-radius\u003C/span>: \u003Cspan class=\"hljs-number\">8px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">box-shadow\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span> \u003Cspan class=\"hljs-number\">2px\u003C/span> \u003Cspan class=\"hljs-number\">8px\u003C/span> \u003Cspan class=\"hljs-built_in\">rgba\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0.1\u003C/span>);\n  \u003Cspan class=\"hljs-attribute\">transition\u003C/span>: box-shadow \u003Cspan class=\"hljs-number\">0.3s\u003C/span> ease;\n}\n\n\u003Cspan class=\"hljs-selector-class\">.columns\u003C/span>\u003Cspan class=\"hljs-selector-pseudo\">:hover\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">box-shadow\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span> \u003Cspan class=\"hljs-number\">4px\u003C/span> \u003Cspan class=\"hljs-number\">16px\u003C/span> \u003Cspan class=\"hljs-built_in\">rgba\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0.15\u003C/span>);\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"content-loading-optimization\">Content Loading Optimization\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- Lazy load non-critical column content --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;performance-columns&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;primary-column&quot;\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-comment\">&lt;!-- Critical content loads immediately --&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>Primary Content\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>This content is essential and loads first...\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;secondary-column&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">data-lazy-load\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-comment\">&lt;!-- Secondary content loads after primary --&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;loading-placeholder&quot;\u003C/span>&gt;\u003C/span>Loading additional content...\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">script\u003C/span>&gt;\u003C/span>\u003Cspan class=\"language-javascript\">\n\u003Cspan class=\"hljs-comment\">// Lazy load secondary content\u003C/span>\n\u003Cspan class=\"hljs-keyword\">function\u003C/span> \u003Cspan class=\"hljs-title function_\">loadSecondaryContent\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n  \u003Cspan class=\"hljs-keyword\">const\u003C/span> lazyElements = \u003Cspan class=\"hljs-variable language_\">document\u003C/span>.\u003Cspan class=\"hljs-title function_\">querySelectorAll\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;[data-lazy-load]&#x27;\u003C/span>);\n  \n  \u003Cspan class=\"hljs-keyword\">const\u003C/span> observer = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">IntersectionObserver\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">entries\u003C/span>) =&gt;\u003C/span> {\n    entries.\u003Cspan class=\"hljs-title function_\">forEach\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">entry\u003C/span> =&gt;\u003C/span> {\n      \u003Cspan class=\"hljs-keyword\">if\u003C/span> (entry.\u003Cspan class=\"hljs-property\">isIntersecting\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Load content when visible\u003C/span>\n        \u003Cspan class=\"hljs-title function_\">loadContent\u003C/span>(entry.\u003Cspan class=\"hljs-property\">target\u003C/span>);\n        observer.\u003Cspan class=\"hljs-title function_\">unobserve\u003C/span>(entry.\u003Cspan class=\"hljs-property\">target\u003C/span>);\n      }\n    });\n  });\n  \n  lazyElements.\u003Cspan class=\"hljs-title function_\">forEach\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">el\u003C/span> =&gt;\u003C/span> observer.\u003Cspan class=\"hljs-title function_\">observe\u003C/span>(el));\n}\n\n\u003Cspan class=\"hljs-variable language_\">document\u003C/span>.\u003Cspan class=\"hljs-title function_\">addEventListener\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;DOMContentLoaded&#x27;\u003C/span>, loadSecondaryContent);\n\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">script\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"accessibility-considerations\">Accessibility Considerations\u003C/h2>\n\u003Ch3 id=\"screen-reader-navigation\">Screen Reader Navigation\u003C/h3>\n\u003Cp>Ensure proper reading order and navigation:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- Accessible multi-column structure --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;accessible-columns&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">role\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;main&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">aria-label\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;Multi-column content&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">section\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">role\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;region&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">aria-labelledby\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;main-heading&quot;\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h2\u003C/span> \u003Cspan class=\"hljs-attr\">id\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;main-heading&quot;\u003C/span>&gt;\u003C/span>Main Content\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>Primary information that should be read first...\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">section\u003C/span>&gt;\u003C/span>\n  \n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">aside\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">role\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;complementary&quot;\u003C/span> \u003Cspan class=\"hljs-attr\">aria-labelledby\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;sidebar-heading&quot;\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h2\u003C/span> \u003Cspan class=\"hljs-attr\">id\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;sidebar-heading&quot;\u003C/span>&gt;\u003C/span>Additional Information\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>Supplementary content that supports the main content...\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">aside\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">style\u003C/span>&gt;\u003C/span>\u003Cspan class=\"language-css\">\n\u003Cspan class=\"hljs-selector-class\">.accessible-columns\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">2\u003C/span>fr \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n  \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">30px\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Ensure proper focus management */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.column\u003C/span>\u003Cspan class=\"hljs-selector-pseudo\">:focus\u003C/span>-within {\n  \u003Cspan class=\"hljs-attribute\">outline\u003C/span>: \u003Cspan class=\"hljs-number\">2px\u003C/span> solid \u003Cspan class=\"hljs-number\">#007bff\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">outline-offset\u003C/span>: \u003Cspan class=\"hljs-number\">4px\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-comment\">/* High contrast support */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">prefers-contrast\u003C/span>: high) {\n  \u003Cspan class=\"hljs-selector-class\">.column\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">border\u003C/span>: \u003Cspan class=\"hljs-number\">2px\u003C/span> solid;\n    \u003Cspan class=\"hljs-attribute\">background\u003C/span>: white;\n  }\n}\n\n\u003Cspan class=\"hljs-comment\">/* Reduced motion support */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">prefers-reduced-motion\u003C/span>: reduce) {\n  \u003Cspan class=\"hljs-selector-class\">.column\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">transition\u003C/span>: none;\n  }\n}\n\n\u003Cspan class=\"hljs-comment\">/* Mobile: Maintain logical reading order */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">768px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.accessible-columns\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n  }\n  \n  \u003Cspan class=\"hljs-selector-class\">.column\u003C/span>\u003Cspan class=\"hljs-selector-attr\">[role=\u003Cspan class=\"hljs-string\">&quot;complementary&quot;\u003C/span>]\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">order\u003C/span>: \u003Cspan class=\"hljs-number\">2\u003C/span>;\n  }\n}\n\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">style\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"keyboard-navigation\">Keyboard Navigation\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Focus management for multi-column layouts */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.column-container\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-built_in\">repeat\u003C/span>(auto-fit, \u003Cspan class=\"hljs-built_in\">minmax\u003C/span>(\u003Cspan class=\"hljs-number\">300px\u003C/span>, \u003Cspan class=\"hljs-number\">1\u003C/span>fr));\n  \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">20px\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-selector-class\">.column-container\u003C/span> \u003Cspan class=\"hljs-selector-class\">.column\u003C/span>\u003Cspan class=\"hljs-selector-pseudo\">:focus\u003C/span>-within {\n  \u003Cspan class=\"hljs-attribute\">background\u003C/span>: \u003Cspan class=\"hljs-number\">#f0f8ff\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">border\u003C/span>: \u003Cspan class=\"hljs-number\">2px\u003C/span> solid \u003Cspan class=\"hljs-number\">#007bff\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">border-radius\u003C/span>: \u003Cspan class=\"hljs-number\">4px\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Skip links for complex layouts */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.skip-to-column\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">position\u003C/span>: absolute;\n  \u003Cspan class=\"hljs-attribute\">left\u003C/span>: -\u003Cspan class=\"hljs-number\">10000px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">width\u003C/span>: \u003Cspan class=\"hljs-number\">1px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">height\u003C/span>: \u003Cspan class=\"hljs-number\">1px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">overflow\u003C/span>: hidden;\n}\n\n\u003Cspan class=\"hljs-selector-class\">.skip-to-column\u003C/span>\u003Cspan class=\"hljs-selector-pseudo\">:focus\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">position\u003C/span>: static;\n  \u003Cspan class=\"hljs-attribute\">width\u003C/span>: auto;\n  \u003Cspan class=\"hljs-attribute\">height\u003C/span>: auto;\n  \u003Cspan class=\"hljs-attribute\">background\u003C/span>: \u003Cspan class=\"hljs-number\">#007bff\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">color\u003C/span>: white;\n  \u003Cspan class=\"hljs-attribute\">padding\u003C/span>: \u003Cspan class=\"hljs-number\">8px\u003C/span> \u003Cspan class=\"hljs-number\">16px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">text-decoration\u003C/span>: none;\n  \u003Cspan class=\"hljs-attribute\">border-radius\u003C/span>: \u003Cspan class=\"hljs-number\">4px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">z-index\u003C/span>: \u003Cspan class=\"hljs-number\">1000\u003C/span>;\n}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"integration-with-documentation-workflows\">Integration with Documentation Workflows\u003C/h2>\n\u003Cp>Multi-column layouts complement other advanced Markdown features effectively. When creating comprehensive technical documentation, combine multi-column techniques with \u003Ca href=\"/blog/markdown-syntax-highlighting-complete-guide\">syntax highlighting\u003C/a> to present code examples alongside explanatory text in professional, space-efficient layouts.\u003C/p>\n\u003Cp>For complex procedures requiring both step-by-step instructions and reference materials, multi-column layouts work excellently with \u003Ca href=\"/blog/markdown-task-lists-and-checkboxes-complete-guide\">task lists and checkboxes\u003C/a> to create comprehensive guides with clear visual separation between actionable tasks and supporting information.\u003C/p>\n\u003Cp>When documenting features or APIs that require comparison tables alongside descriptive content, consider combining multi-column layouts with \u003Ca href=\"/blog/markdown-tables-advanced-features-and-styling-guide\">advanced table features\u003C/a> to create professional reference documentation that maximizes information density while maintaining readability.\u003C/p>\n\u003Ch2 id=\"troubleshooting-common-issues\">Troubleshooting Common Issues\u003C/h2>\n\u003Ch3 id=\"column-content-overflow\">Column Content Overflow\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Content breaks out of column boundaries\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Prevent overflow */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.column\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">overflow-wrap\u003C/span>: break-word;\n  \u003Cspan class=\"hljs-attribute\">word-wrap\u003C/span>: break-word;\n  \u003Cspan class=\"hljs-attribute\">hyphens\u003C/span>: auto;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Handle long URLs */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.column\u003C/span> \u003Cspan class=\"hljs-selector-tag\">a\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">word-break\u003C/span>: break-all;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Constrain images */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.column\u003C/span> \u003Cspan class=\"hljs-selector-tag\">img\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">100%\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">height\u003C/span>: auto;\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"inconsistent-column-heights\">Inconsistent Column Heights\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Columns have uneven heights\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Equal height columns with flexbox */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.equal-height-columns\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: flex;\n  \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">20px\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-selector-class\">.equal-height-columns\u003C/span> \u003Cspan class=\"hljs-selector-class\">.column\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">flex\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Equal height columns with grid */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.grid-equal-height\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-built_in\">repeat\u003C/span>(auto-fit, \u003Cspan class=\"hljs-built_in\">minmax\u003C/span>(\u003Cspan class=\"hljs-number\">300px\u003C/span>, \u003Cspan class=\"hljs-number\">1\u003C/span>fr));\n  \u003Cspan class=\"hljs-attribute\">align-items\u003C/span>: stretch;\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"mobile-layout-issues\">Mobile Layout Issues\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Columns don&#39;t stack properly on mobile\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Mobile-first responsive design */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.responsive-columns\u003C/span> {\n  \u003Cspan class=\"hljs-attribute\">display\u003C/span>: grid;\n  \u003Cspan class=\"hljs-attribute\">gap\u003C/span>: \u003Cspan class=\"hljs-number\">20px\u003C/span>;\n  \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>fr;\n}\n\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">min-width\u003C/span>: \u003Cspan class=\"hljs-number\">768px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.responsive-columns\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-built_in\">repeat\u003C/span>(\u003Cspan class=\"hljs-number\">2\u003C/span>, \u003Cspan class=\"hljs-number\">1\u003C/span>fr);\n  }\n}\n\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">min-width\u003C/span>: \u003Cspan class=\"hljs-number\">1024px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.responsive-columns\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">grid-template-columns\u003C/span>: \u003Cspan class=\"hljs-built_in\">repeat\u003C/span>(\u003Cspan class=\"hljs-number\">3\u003C/span>, \u003Cspan class=\"hljs-number\">1\u003C/span>fr);\n  }\n}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"best-practices-1\">Best Practices\u003C/h2>\n\u003Ch3 id=\"content-strategy\">Content Strategy\u003C/h3>\n\u003Col>\n\u003Cli>\u003Cstrong>Prioritize Content\u003C/strong>: Place most important information in the first column\u003C/li>\n\u003Cli>\u003Cstrong>Maintain Balance\u003C/strong>: Avoid one column being significantly longer than others\u003C/li>\n\u003Cli>\u003Cstrong>Consider Reading Flow\u003C/strong>: Ensure content flows logically across columns\u003C/li>\n\u003Cli>\u003Cstrong>Test Thoroughly\u003C/strong>: Verify layouts work on real devices and screen sizes\u003C/li>\n\u003C/ol>\n\u003Ch3 id=\"performance-guidelines\">Performance Guidelines\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Optimize for performance */\u003C/span>\n\u003Cspan class=\"hljs-selector-class\">.column-layout\u003C/span> {\n  \u003Cspan class=\"hljs-comment\">/* Use will-change sparingly */\u003C/span>\n  \u003Cspan class=\"hljs-attribute\">will-change\u003C/span>: auto;\n  \n  \u003Cspan class=\"hljs-comment\">/* Prefer transform over position changes */\u003C/span>\n  \u003Cspan class=\"hljs-attribute\">transform\u003C/span>: \u003Cspan class=\"hljs-built_in\">translateZ\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>);\n  \n  \u003Cspan class=\"hljs-comment\">/* Minimize repaints */\u003C/span>\n  \u003Cspan class=\"hljs-attribute\">backface-visibility\u003C/span>: hidden;\n}\n\n\u003Cspan class=\"hljs-comment\">/* Efficient responsive design */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">768px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.column-layout\u003C/span> {\n    \u003Cspan class=\"hljs-comment\">/* Reset expensive properties on mobile */\u003C/span>\n    \u003Cspan class=\"hljs-attribute\">transform\u003C/span>: none;\n    \u003Cspan class=\"hljs-attribute\">will-change\u003C/span>: auto;\n  }\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"seo-considerations\">SEO Considerations\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- Structure content for search engines --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">article\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;seo-columns&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">header\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column-main&quot;\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h1\u003C/span>&gt;\u003C/span>Primary Topic\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h1\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>Main content that search engines should prioritize...\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">header\u003C/span>&gt;\u003C/span>\n  \n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">section\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;column-secondary&quot;\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>Related Information\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h2\u003C/span>&gt;\u003C/span>\n    \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>Supporting content that adds context...\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">p\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">section\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">article\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>Multi-column layouts in Markdown transform traditional linear documentation into sophisticated, professional presentations that enhance both readability and visual appeal. Whether you&#39;re creating technical documentation, educational content, or marketing materials, mastering these layout techniques enables you to present information more effectively and efficiently.\u003C/p>\n\u003Cp>The key to successful multi-column implementation lies in understanding CSS Grid and Flexbox capabilities, designing with mobile-first responsive principles, and maintaining accessibility standards throughout your layout decisions. By combining the techniques covered in this guide with proper content strategy, you can create documentation that not only looks professional but also provides an optimal user experience across all devices and accessibility requirements.\u003C/p>\n\u003Cp>Remember to test your multi-column layouts thoroughly across different browsers and devices, prioritize content appropriately for different screen sizes, and always consider the reading flow and accessibility implications of your design choices. With proper attention to these details, multi-column layouts become a powerful tool for creating engaging, organized, and professional documentation that effectively communicates complex information.\u003C/p>\n",[15,19,22,25,28,31,34,37,40,43,46,49],{"id":16,"text":17,"level":18},"why-use-multi-column-layouts","Why Use Multi-Column Layouts?",2,{"id":20,"text":21,"level":18},"css-grid-approach","CSS Grid Approach",{"id":23,"text":24,"level":18},"quick-tips","Quick Tips",{"id":26,"text":27,"level":18},"related-apis","Related APIs",{"id":29,"text":30,"level":18},"modern-approach","Modern Approach",{"id":32,"text":33,"level":18},"advanced-layout-techniques","Advanced Layout Techniques",{"id":35,"text":36,"level":18},"performance-optimization","Performance Optimization",{"id":38,"text":39,"level":18},"accessibility-considerations","Accessibility Considerations",{"id":41,"text":42,"level":18},"integration-with-documentation-workflows","Integration with Documentation Workflows",{"id":44,"text":45,"level":18},"troubleshooting-common-issues","Troubleshooting Common Issues",{"id":47,"text":48,"level":18},"best-practices-1","Best Practices",{"id":50,"text":51,"level":18},"conclusion","Conclusion",[],[54,62,70],{"slug":55,"title":56,"description":57,"excerpt":58,"date":59,"category":9,"author":10,"keywords":60,"readingMinutes":61},"markdown-table-responsive-design-complete-guide","Markdown Table Responsive Design: Complete Guide for Mobile-Friendly Documentation and Adaptive Table Layouts","Master responsive Markdown table design techniques for creating mobile-friendly documentation with adaptive layouts, CSS Grid integration, and cross-device compatibility. Learn advanced table styling, breakpoint management, and accessibility optimization.","Advanced responsive Markdown table design enables sophisticated documentation systems that adapt seamlessly across all device types, screen sizes, and user contexts while maintaining data…","2025-11-01","markdown table responsive design, mobile-friendly markdown tables, adaptive table layouts, responsive documentation tables, markdown table css grid, mobile table optimization, responsive web design markdown",29,{"slug":63,"title":64,"description":65,"excerpt":66,"date":67,"category":9,"author":10,"keywords":68,"readingMinutes":69},"markdown-table-performance-optimization-complete-guide","Markdown Table Performance Optimization and Responsive Design: Complete Guide for High-Performance Documentation and Data Display","Master advanced Markdown table performance optimization techniques for large datasets, responsive design patterns, and mobile-friendly data presentation. Learn table virtualization, lazy loading, and adaptive design strategies for documentation systems.","Advanced Markdown table performance optimization and responsive design techniques enable sophisticated data presentation systems that maintain performance across large datasets while providing…","2026-01-03","markdown table performance, responsive markdown tables, table optimization, large dataset tables, mobile markdown tables, table virtualization, adaptive table design, data presentation",18,{"slug":71,"title":72,"description":73,"excerpt":74,"date":75,"category":9,"author":10,"keywords":76,"readingMinutes":77},"markdown-badges-shields-complete-guide","Markdown Badges and Shields: Complete Guide for Professional Documentation","Master badges and shields in Markdown for GitHub, GitLab, and documentation platforms. Learn to create custom status badges, build badges, test coverage shields, and dynamic informational elements.","Badges and shields are essential visual elements in modern technical documentation that communicate project status, build health, test coverage, and other key metrics at a glance. These compact,…","2025-08-28","markdown badges, markdown shields, github badges, build status badges, test coverage badges, shields.io badges, readme badges, documentation badges",7,1792184941059]