JAVASCRIPT • LEVEL 1 • LESSON 2 OF 9
0% Complete
← Back to Learning Path

↔️ Lesson 2: Template Columns

Master gridTemplateColumns to create any column layout.

What is gridTemplateColumns?

The gridTemplateColumns property defines how many columns your grid has and how wide each should be. You can use fr units, pixels, percentages, auto, minmax(), and repeat()!

💡 Remember:

The value must be a string. Use template literals (backticks) when inserting variables: `repeat(${num}, 1fr)`

Equal Columns with fr Units

// 3 equal columns
container.style.gridTemplateColumns = '1fr 1fr 1fr';

// 4 equal columns using repeat()
container.style.gridTemplateColumns = 'repeat(4, 1fr)';

Fixed-Width Columns

// 3 columns, each 200px wide
container.style.gridTemplateColumns = 'repeat(3, 200px)';

Mixed Sizing

// Sidebar layout
container.style.gridTemplateColumns = '250px 1fr';

// Holy Grail
container.style.gridTemplateColumns = '200px 1fr 200px';

// Different proportions
container.style.gridTemplateColumns = '2fr 1fr'; // 2/3 and 1/3

Dynamic Columns with Template Literals

const numColumns = 5;

// Use backticks for variables
container.style.gridTemplateColumns = `repeat(${numColumns}, 1fr)`;

// Based on array length
const items = ['a', 'b', 'c'];
container.style.gridTemplateColumns = `repeat(${items.length}, 1fr)`;

Auto-Fit for Responsive Grids

// Fit as many 250px columns as possible
container.style.gridTemplateColumns = 'repeat(auto-fit, minmax(250px, 1fr))';

This creates a truly responsive grid - columns wrap automatically!

✅ Pro Tip:

Store common layouts in objects for easy reuse: const layouts = { sidebar: '250px 1fr' }

📝 Quick Check (3 Questions)

1. How do you create 3 equal columns?

2. When should you use template literals (backticks)?

3. What does '2fr 1fr' mean?

← Previous Lesson