The writing-mode CSS property controls text flow direction and layout, supporting horizontal or vertical text for languages and design needs. It affects how inline and block elements behave, with values like horizontal-tb, vertical-rl, and vertical-lr. Use it for internationalization, creative layouts, and accessibility. Apply it directly to elements, but be mindful of alignment, layout shifts, and browser support. Common pitfalls include unexpected sizing, mixed-direction issues, and font rendering differences. Test thoroughly and adjust dimensions as needed.
The writing-mode
CSS property determines how text flows within a layout. It’s not just about left-to-right or right-to-left — it also controls whether lines of text are laid out horizontally or vertically. This becomes especially important when dealing with languages like Japanese or Chinese, where vertical writing is common, or for specific design layouts on the web.

What Does writing-mode
Do?
At its core, writing-mode
changes the direction in which text and block elements flow. The most common values are:
-
horizontal-tb
: Default in most browsers. Text flows horizontally from left to right, and blocks stack top to bottom. -
vertical-rl
: Text flows vertically, and characters are placed from right to left (common in traditional East Asian writing systems). -
vertical-lr
: Text flows vertically, but characters go from left to right.
This affects not only how letters appear but also how inline and block elements behave. For example, with vertical-rl
, the width of an element becomes the height in vertical text layout.

When Should You Use writing-mode
?
You might reach for writing-mode
in these scenarios:
- Internationalization: Supporting languages that use vertical scripts, such as Japanese or Mongolian.
- Creative Layouts: Designing sidebars, headers, or buttons with vertical text for visual interest.
- Accessibility & Readability: Ensuring correct reading order and orientation for multilingual content.
For instance, if you're building a bilingual website that includes both English and Japanese, using the appropriate writing-mode
ensures that Japanese text appears naturally in vertical columns without extra hacks.

How to Apply writing-mode
Using writing-mode
is straightforward — just apply it to any HTML element:
.vertical-text { writing-mode: vertical-rl; }
When applied to a paragraph or span, this will rotate the text so it reads from top to bottom, with each character stacked vertically. But there are a few things to keep in mind:
-
Text alignment may need adjustment. Vertical writing can affect how
text-align
works. - Flexbox and Grid behavior changes slightly — the main axis shifts based on the writing mode.
- Browser support is solid across modern browsers, but older versions of IE had limited support.
Here's a quick tip: If you want rotated text but don't want to change the entire layout, consider combining writing-mode
with transform: rotate()
to fine-tune the appearance.
Common Pitfalls
Even though writing-mode
is powerful, some issues pop up often:
- Unexpected layout shifts: Changing the writing mode can flip how inline and block elements are sized.
- Mixed-direction content: Using different writing modes in the same layout can confuse screen readers or cause misalignment.
- Font rendering differences: Some fonts render differently in vertical mode — test thoroughly.
If you're seeing text squished or misaligned after applying writing-mode
, double-check your element dimensions and parent containers. Sometimes setting explicit widths or heights helps stabilize the layout.
That’s basically what you need to know to start using writing-mode
. It’s not complicated, but it does require thinking carefully about layout structure and content direction.
The above is the detailed content of Explain the `writing-mode` property. 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)

Thevertical-alignpropertyinCSSalignsinlineortable-cellelementsvertically.1.Itadjustselementslikeimagesorforminputswithintextlinesusingvalueslikebaseline,middle,super,andsub.2.Intablecells,itcontrolscontentalignmentwithtop,middle,orbottomvalues,oftenu

accent-color is an attribute used in CSS to customize the highlight colors of form elements such as checkboxes, radio buttons and sliders; 1. It directly changes the default color of the selected state of the form control, such as changing the blue check mark of the checkbox to red; 2. Supported elements include input boxes of type="checkbox", type="radio" and type="range"; 3. Using accent-color can avoid complex custom styles and extra DOM structures, and maintain native accessibility; 4. It is generally supported by modern browsers, and old browsers need to be downgraded; 5. Set accent-col

InstallDartSassvianpmafterinstallingNode.jsusingnpminstall-gsass.2.CompileSCSStoCSSusingthecommandsassinput.scssoutput.css.3.Usesass--watchinput.scssoutput.csstoauto-compileonsave.4.Watchentirefolderswithsass--watchscss:css.5.Usepartialswith_prefixfo

To change the text color in CSS, you need to use the color attribute; 1. Use the color attribute to set the text foreground color, supporting color names (such as red), hexadecimal codes (such as #ff0000), RGB values (such as rgb(255,0,0)), HSL values (such as hsl(0,100%,50%)), and RGBA or HSLA with transparency (such as rgba(255,0,0,0.5)); 2. You can apply colors to any element containing text, such as h1 to h6 titles, paragraph p, link a (note the color settings of different states of a:link, a:visited, a:hover, a:active), buttons, div, span, etc.; 3. Most

CSStransitionsenablesmoothpropertychangeswithminimalcode,idealforhovereffectsandinteractivefeedback.1.Usethesyntaxtransition:propertydurationtiming-functiondelay;todefinetransitions,liketransition:background-color0.3sease0.1s;.2.Specifytransition-pro

UseautomatedtoolslikePurgeCSSorUnCSStoscanandremoveunusedCSS;2.IntegratepurgingintoyourbuildprocessviaWebpack,Vite,orTailwind’scontentconfiguration;3.AuditCSSusagewithChromeDevToolsCoveragetabbeforepurgingtoavoidremovingneededstyles;4.Safelistdynamic

The style placement method needs to be selected according to the scene. 1. Inline is suitable for temporary modification of single elements or dynamic JS control, such as the button color changes with operation; 2. Internal CSS is suitable for projects with few pages and simple structure, which is convenient for centralized management of styles, such as basic style settings of login pages; 3. Priority is given to reuse, maintenance and performance, and it is better to split external link CSS files for large projects.

Astackingcontextisaself-containedlayerinCSSthatcontrolsthez-orderofoverlappingelements,wherenestedcontextsrestrictz-indexinteractions;itiscreatedbypropertieslikez-indexonpositionedelements,opacity
