CSS - Columns Layout
Source
User "Kapirklaa" on the Obsidian Discord Server for the two-columns layout. I added the code for three columns myself.
Setup
Go to Settings, Appearance, and scroll all the way down to the CSS snippets section. You might already have some there, or not. It does not matter for us.
Click on the folder icon. This should open the local folder containing the snippets. Create a new file and give it a name that makes sense to you. For example, columns.css. Make sure that the file extension is css. If you don't see your file extensions, click on View, Show, and File name extensions (in Windows Explorer).
Now open the file and copy the CSS code below into it. Save the file, go back to Obsidian and refresh the list of snippets. Enable this one, and that should do it. If it does not, you may have to restart Obsidian.
To apply the respective style to a note, the note's frontmatter must include cssclasses: columns2 or cssclasses: columns3.
Result
Two Columns

Three Columns

Code
/* Two-column layout for Obsidian notes with "columns2" cssclass */
.markdown-preview-view.columns2 .markdown-preview-section {
column-count: 2;
column-gap: 20px;
column-rule: 1px solid #007BFF;
width: 100%;
box-sizing: border-box;
padding: 10px;
/* Exclude the header (inline-title and metadata-container) from the column layout */
.mod-header {
column-span: all;
}
/* Ensure proper handling of headings */
h1, h2, h3, h4, h5, h6 {
break-inside: avoid-column;
}
/* Ensure proper handling of images */
img {
max-width: 100%;
break-inside: avoid-column;
}
/* Prevent table breaking */
table {
width: 100%;
display: table;
break-inside: avoid-column;
}
/* Ensure proper handling of lists */
ul, ol {
break-inside: avoid-column;
}
/* Ensure code blocks do not break across columns */
pre {
break-inside: avoid-column;
width: 100%;
overflow-x: auto;
}
}
/* Three-column layout for Obsidian notes with "columns3" cssclass */
.markdown-preview-view.columns3 .markdown-preview-section {
column-count: 3;
column-gap: 20px;
column-rule: 1px solid #007BFF;
width: 100%;
box-sizing: border-box;
padding: 10px;
/* Exclude the header (inline-title and metadata-container) from the column layout */
.mod-header {
column-span: all;
}
/* Ensure proper handling of headings */
h1, h2, h3, h4, h5, h6 {
break-inside: avoid-column;
}
/* Ensure proper handling of images */
img {
max-width: 100%;
break-inside: avoid-column;
}
/* Prevent table breaking */
table {
width: 100%;
display: table;
break-inside: avoid-column;
}
/* Ensure proper handling of lists */
ul, ol {
break-inside: avoid-column;
}
/* Ensure code blocks do not break across columns */
pre {
break-inside: avoid-column;
width: 100%;
overflow-x: auto;
}
}