Multi-column layouts can be easily created with CSS Grid and Flexbox. 1. CSS Grid is suitable for designs that require precise control of rows and columns. Define column widths through grid-template-columns, such as 1fr 1fr 1fr 1fr 1fr, or use auto-fit to realize responsive automatic line wrapping; 2. Flexbox is suitable for linear layout, implements equal width columns through display: flex and flex: 1, and supports gap control spacing; 3. Responsive design can achieve column count changes under different screen sizes through media query or repeat (auto-fit, minmax()). The combination of the two is better.
Creating multi-column layouts in CSS isn't as tricky as it used to be. With modern tools like CSS Grid and Flexbox, you can build just about any layout you need without relying on floats or complicated hacks.

Use CSS Grid for Full Control
CSS Grid is the most powerful layout system in CSS today. It lets you define rows and columns explicitly, making it perfect for multi-column designs.
To create a basic grid with three equal-width columns, you can do something like this:

.container { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px; }
This will create a container with three equally spaced columns and some space between them. If you want columns of different widths, you can mix units like 2fr 1fr 1fr
so one column takes up more space.
Grid also allows you to name areas and place items exactly where you want them, which is super useful for complex page layouts.

Flexbox Works Great for Simpler Layouts
If your layout is more linear — like a row of boxes that should wrap on smaller screens — Flexbox might be a better fit.
Here's how to set up a simple flex layout:
.container { display: flex; gap: 15px; } .column { flex: 1; }
This makes all the columns stretch evenly and sit side by side. You can control spacing with the gap
property, which works both in Flexbox and Grid now.
Flexbox doesn't handle vertical alignment as precisely as Grid does, but it's still great for things like navigation bars or card layouts where everything flows horizontally.
Responsive Multi-Column Layouts Need Media Queries (or Auto-Wrap)
Making your layout responsive usually means switching from multiple columns on desktop to stacked columns on mobile.
With Grid, you can use auto-wrapping:
.container { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; }
This setup adjusts the number of columns based on available space. On narrow screens, each item stacks vertically; on wider screens, they spread out.
Alternatively, you can write media queries to adjust column count at specific breakpoints:
.container { display: grid; grid-template-columns: 1fr; } @media (min-width: 768px) { .container { grid-template-columns: 1fr 1fr; } } @media (min-width: 1024px) { .container { grid-template-columns: 1fr 1fr 1fr; } }
Either approach works well — the choice depends on how much control you need over layout behavior.
You don't have to stick with one method either. Sometimes using Flexbox inside a Grid layout gives you the best of both worlds. Just keep it simple and test across screen sizes.
The above is the detailed content of How do you create multi-column layouts with CSS?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

CSS blocks page rendering because browsers view inline and external CSS as key resources by default, especially with imported stylesheets, header large amounts of inline CSS, and unoptimized media query styles. 1. Extract critical CSS and embed it into HTML; 2. Delay loading non-critical CSS through JavaScript; 3. Use media attributes to optimize loading such as print styles; 4. Compress and merge CSS to reduce requests. It is recommended to use tools to extract key CSS, combine rel="preload" asynchronous loading, and use media delayed loading reasonably to avoid excessive splitting and complex script control.

ThebestapproachforCSSdependsontheproject'sspecificneeds.Forlargerprojects,externalCSSisbetterduetomaintainabilityandreusability;forsmallerprojectsorsingle-pageapplications,internalCSSmightbemoresuitable.It'scrucialtobalanceprojectsize,performanceneed

No,CSSdoesnothavetobeinlowercase.However,usinglowercaseisrecommendedfor:1)Consistencyandreadability,2)Avoidingerrorsinrelatedtechnologies,3)Potentialperformancebenefits,and4)Improvedcollaborationwithinteams.

CSSismostlycase-insensitive,butURLsandfontfamilynamesarecase-sensitive.1)Propertiesandvalueslikecolor:red;arenotcase-sensitive.2)URLsmustmatchtheserver'scase,e.g.,/images/Logo.png.3)Fontfamilynameslike'OpenSans'mustbeexact.

Autoprefixer is a tool that automatically adds vendor prefixes to CSS attributes based on the target browser scope. 1. It solves the problem of manually maintaining prefixes with errors; 2. Work through the PostCSS plug-in form, parse CSS, analyze attributes that need to be prefixed, and generate code according to configuration; 3. The usage steps include installing plug-ins, setting browserslist, and enabling them in the build process; 4. Notes include not manually adding prefixes, keeping configuration updates, prefixes not all attributes, and it is recommended to use them with the preprocessor.

CSScounterscanautomaticallynumbersectionsandlists.1)Usecounter-resettoinitialize,counter-incrementtoincrease,andcounter()orcounters()todisplayvalues.2)CombinewithJavaScriptfordynamiccontenttoensureaccurateupdates.

In CSS, selector and attribute names are case-sensitive, while values, named colors, URLs, and custom attributes are case-sensitive. 1. The selector and attribute names are case-insensitive, such as background-color and background-Color are the same. 2. The hexadecimal color in the value is case-sensitive, but the named color is case-sensitive, such as red and Red is invalid. 3. URLs are case sensitive and may cause file loading problems. 4. Custom properties (variables) are case sensitive, and you need to pay attention to the consistency of case when using them.

Theconic-gradient()functioninCSScreatescirculargradientsthatrotatecolorstopsaroundacentralpoint.1.Itisidealforpiecharts,progressindicators,colorwheels,anddecorativebackgrounds.2.Itworksbydefiningcolorstopsatspecificangles,optionallystartingfromadefin
