Years ago, CSS-Tricks explored various methods for creating a two-column layout. This updated article provides a comprehensive overview of these techniques.
Let's say you need a layout split into two equal-height columns within a container. Numerous CSS approaches achieve this, and we'll examine several.
Update (Oct. 25, 2024): This article now includes an example using CSS Anchor Positioning.
Background Gradient Technique
A simple visual approach uses background gradients. Define half the background with one color, and the other half with a different color. A zero-space color stop creates a sharp division:
.container { background: linear-gradient(to right, #ff9e2c 0%, #ff9e2c 50%, #b6701e 50%, #b6701e 100%); }
This works with a single container, but requires floats or other layout methods if content needs to fill both sides.
Absolute Positioning Method
Alternatively, use two containers within a parent, position them absolutely, and divide the space using percentages. This allows independent content for each column. However, the parent requires a fixed height, which can be problematic with dynamic content. Absolute positioning also removes elements from the document flow, potentially affecting other content.
(Fake) Tables Approach
While tables are outdated for layout (and pose accessibility concerns), display: table-cell;
offers a convenient solution. The parent container becomes a table, and child containers become cells, all handled in CSS. This method is easily adaptable to different screen sizes by changing display properties at breakpoints. It enjoys broad browser support, dating back to IE8.
Using Floats
Floats provide another option, avoiding the complications of absolute positioning. Explicit height settings ensure even column heights, although floats don't inherently provide this functionality. Background gradients or other techniques can create the illusion of equal height. Remember to clear floats on the parent to maintain proper document flow.
Inline-Block Method
display: inline-block;
offers a cleaner alternative to floats, avoiding the need for clearing. However, ensure no spaces or line breaks exist between the HTML elements for the columns, to prevent unwanted spacing. Again, explicit height settings are necessary for equal column heights.
Flexbox Solution
Flexbox provides an elegant solution, though support is limited to IE10 and above. The parent container becomes a flexbox, and child containers automatically share space equally. Setting flex: 1;
on the child containers ensures equal distribution. This method handles vertical and horizontal centering effectively.
Grid Layout
For advanced users, CSS Grid Layout combines the flexibility of Flexbox and the table approach. Define a container, then divide it into columns and cells that can be filled with child elements.
CSS Anchor Positioning (New!)
CSS Anchor Positioning, a newer feature (2024 ), allows linking unrelated elements. An "anchor" element is defined, and a "target" element is pinned to it. This offers precise control over positioning:
.container { background: linear-gradient(to right, #ff9e2c 0%, #ff9e2c 50%, #b6701e 50%, #b6701e 100%); }
The abundance of CSS techniques highlights its versatility.
The above is the detailed content of Left Half and Right Half Layout - Many Different Ways. 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.

In the following tutorial, I will show you how to create Lottie animations in Figma. We'll use two colorful designs to exmplify how you can animate in Figma, and then I'll show you how to go from Figma to Lottie animations. All you need is a free Fig

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.
