Képzeljük el, hogy egy japán képregényt olvasunk, ahol a szöveg fentről lefelé folyik, vagy egy elegáns magazint lapozunk, ahol egy cím merőlegesen áll a többi tartalomra. Vajon hogyan lehet ilyen egyedi és kulturálisan specifikus elrendezéseket létrehozni a weben? A válasz a CSS `writing-mode` tulajdonságban rejlik, egy olyan erőteljes eszközben, amely messze túlmutat a hagyományos horizontális szövegelrendezéseken, és új dimenziókat nyit meg a webdesign és a nemzetköziesítés terén.
A web kezdeti időszakában a szövegek alapértelmezésben balról jobbra és felülről lefelé, azaz horizontálisan folytak. Ez kiválóan megfelelt a nyugati nyelveknek, de ahogy az internet globálissá vált, egyre nagyobb szükség mutatkozott arra, hogy a weboldalak képesek legyenek kezelni a különböző írásirányokat, például a kelet-ázsiai nyelvek (japán, kínai, koreai) vertikális szövegét vagy a jobbról balra író nyelveket (arab, héber). A writing-mode
tulajdonság pontosan erre a kihívásra ad választ, lehetővé téve a fejlesztők és tervezők számára, hogy a szövegfolyás irányát teljes mértékben szabályozzák, gazdagítva ezzel a felhasználói élményt és a design lehetőségeit.
Mi az a `writing-mode` és Miért Fontos?
A writing-mode
egy CSS tulajdonság, amely meghatározza az úgynevezett blokkfolyás irányát (block flow direction) és a sorfolyás irányát (inline progression direction) egy elemen belül. Egyszerűbben fogalmazva, ez dönti el, hogy az elemek (blokkok) hogyan követik egymást (például felülről lefelé, vagy jobbról balra), és hogy a szöveg (sorok) hogyan folyik ezeken a blokkokon belül (például balról jobbra, vagy fentről lefelé).
Alapértelmezés szerint, minden HTML elem a writing-mode: horizontal-tb;
beállítással rendelkezik. Ez azt jelenti, hogy a blokkok felülről lefelé (top-to-bottom, `tb`) helyezkednek el, és a szöveg balról jobbra (left-to-right, vagy jobbról balra, a direction
tulajdonságtól függően) folyik a sorokon belül. A writing-mode
azonban lehetővé teszi, hogy ezt a viselkedést megváltoztassuk, megnyitva az utat a vertikális szöveg, és más, nem hagyományos elrendezések előtt.
A tulajdonság fontossága több területen is megmutatkozik:
- Nemzetköziesítés (Internationalization – i18n): Ez a legnyilvánvalóbb és legfontosabb felhasználási területe. Bizonyos nyelvek, mint a japán, kínai és koreai, hagyományosan függőlegesen is írhatók, jobbról balra haladó sorokkal. A
writing-mode
elengedhetetlen ahhoz, hogy ezek a nyelvek hitelesen és olvashatóan jelenjenek meg a weben. - Kreatív Webdesign és Layout: A
writing-mode
nem csupán nyelvi okokból hasznos. A modern webdesign egyre inkább igényli a rugalmas és vizuálisan vonzó elrendezéseket. Függőleges címek, oldalsó navigációs sávok, egyedi tipográfiai effektek mind megvalósíthatók ezzel a tulajdonsággal, friss és dinamikus megjelenést kölcsönözve az oldalnak. - Felhasználói Felület (UI) Elemek: Kisebb UI komponensek, mint például diagramok tengelyfeliratai, táblázatfejlécek vagy menüpontok, szintén profitálhatnak a vertikális elrendezésből, helyet takarítva meg és javítva az olvashatóságot korlátozott felületen.
Hogyan Működik a `writing-mode`? Az Alapok.
Ahhoz, hogy megértsük a writing-mode
működését, elengedhetetlen, hogy tisztázzuk két kulcsfontosságú fogalmat, amelyek a CSS Layout Modulban (és a Flexbox, Grid elrendezéseknél is) kulcsszerepet játszanak:
- Blokkfolyás iránya (Block Flow Direction): Ez határozza meg, hogy a blokk szintű elemek (pl.
<p>
,<div>
) hogyan rendeződnek egymás után az oldalon. Ahorizontal-tb
esetén ez felülről lefelé történik. - Sorfolyás iránya (Inline Progression Direction): Ez határozza meg, hogy a szöveg (és az inline elemek) hogyan áramlik egy elemen belül a sor mentén. A
horizontal-tb
esetén ez balról jobbra (vagy jobbról balra adirection
tulajdonságtól függően).
Amikor megváltoztatjuk a writing-mode
értékét, mindkét irány megváltozik az adott elemre és annak gyerekelemeire nézve. Ez alapvetően befolyásolja az elem „fizikai” méreteinek értelmezését is. Például, ha egy elem writing-mode
-ja vertikálisra vált, akkor a CSS width
tulajdonsága valójában az elem „inline-size” (azaz a sorok menti méret), míg a height
tulajdonsága lesz az „block-size” (azaz a blokkok menti méret). Ezt fontos szem előtt tartani, amikor vertikális elrendezésekkel dolgozunk.
A `writing-mode` Értékei és Jelentésük
A writing-mode
tulajdonság számos értéket támogat, amelyek mindegyike egyedi szövegfolyási viselkedést eredményez. Nézzük meg a legfontosabbakat:
1. `horizontal-tb` (Alapértelmezett)
Ez az alapértelmezett érték, amit mindannyian jól ismerünk a nyugati nyelvekből.
- Blokkfolyás: Felülről lefelé. Az új blokkok a korábbiak alá kerülnek.
- Sorfolyás: Balról jobbra (a
direction: ltr;
esetén) vagy jobbról balra (adirection: rtl;
esetén). - Példa: Angol, magyar, német szövegek.
.horizontal-text {
writing-mode: horizontal-tb;
}
2. `vertical-rl`
Ez az érték a kelet-ázsiai nyelvek (például japán, kínai) hagyományos vertikális írásmódját tükrözi.
- Blokkfolyás: Jobbról balra. Az új blokkok a korábbiak bal oldalára kerülnek.
- Sorfolyás: Fentről lefelé. A szöveg minden sorban fentről indul és lefelé halad.
- Jellemzők: A karakterek általában felállítva maradnak, nem forognak el, kivéve a latin betűs szavakat vagy számokat, amelyek gyakran elfordulnak 90 fokkal az olvashatóság megőrzése érdekében (ezt a
text-orientation
tulajdonsággal finomhangolhatjuk). - Példa: Japán magazinok, mangák.
.vertical-japanese {
writing-mode: vertical-rl;
text-orientation: upright; /* Karakterek felállítva */
}
3. `vertical-lr`
Ez az érték is vertikális szövegfolyást hoz létre, de más blokkfolyás iránnyal.
- Blokkfolyás: Balról jobbra. Az új blokkok a korábbiak jobb oldalára kerülnek.
- Sorfolyás: Fentről lefelé. A szöveg minden sorban fentről indul és lefelé halad.
- Használat: Kevésbé elterjedt a hagyományos írásrendszerekben, de kreatív webdesign célokra hasznos lehet.
.vertical-creative {
writing-mode: vertical-lr;
}
4. `sideways-rl`
Ez az érték egy érdekes vizuális hatást kelt, ahol a karakterek ténylegesen elfordulnak.
- Blokkfolyás: Jobbról balra.
- Sorfolyás: Fentről lefelé.
- Jellemzők: Minden karakter (glif) 90 fokkal az óramutató járásával megegyezően elfordul. Ez azt eredményezi, hogy az olvashatósághoz a fejet jobbra kell dönteni. Ritkábban használatos hosszú szövegekhez, inkább rövid címekhez, dekoratív elemekhez.
.sideways-right {
writing-mode: sideways-rl;
}
5. `sideways-lr`
Hasonló a sideways-rl
-hez, csak fordított forgatással.
- Blokkfolyás: Balról jobbra.
- Sorfolyás: Fentről lefelé.
- Jellemzők: Minden karakter 90 fokkal az óramutató járásával ellentétesen elfordul. Olvashatóságához a fejet balra kell dönteni. Szintén leginkább dekoratív célt szolgál.
.sideways-left {
writing-mode: sideways-lr;
}
A `writing-mode` és Egyéb CSS Tulajdonságok Kölcsönhatása
A writing-mode
egy alapvető layout tulajdonság, ami befolyásolja számos más CSS értelmezését és viselkedését. Fontos megérteni ezeket az interakciókat a váratlan viselkedések elkerülése érdekében.
`text-orientation`
Ez a tulajdonság elengedhetetlen a vertical-rl
és vertical-lr
módokban a karakterek pontos tájolásához. Míg a writing-mode
a szövegblokk és a sorok irányát adja meg, addig a text-orientation
szabályozza az egyes glifek orientációját a vertikális sorokon belül. Fő értékei:
mixed
(alapértelmezett): A kelet-ázsiai karakterek (pl. Hanzi, Kana) felállítva maradnak, míg a latin betűk, számok és egyéb jelek 90 fokkal elfordulnak az óramutató járásával megegyezően, hogy horizontálisnak tűnjenek.upright
: Minden glif felállítva marad, függetlenül a karaktertípustól. Ez a klasszikus japán és kínai írásmód, ahol a latin betűs szavak is függőlegesen jelennek meg.sideways
: Minden glif 90 fokkal elfordul (óramutató járásával megegyezően avertical-rl
esetén, és ellentétesen avertical-lr
esetén). Ez megegyezik asideways-rl
éssideways-lr
viselkedésével.
.vertical-upright {
writing-mode: vertical-rl;
text-orientation: upright;
}
`direction`
A direction
tulajdonság (ltr
vagy rtl
) elsősorban a horizontális szöveg sorfolyását befolyásolja. Vertikális írásmódokban (vertical-rl
, vertical-lr
) a direction
már nem a sorfolyásra, hanem a blokkfolyásra van hatással, megfordítva a blokkok egymásutániságát. Ezért a writing-mode
és a direction
együttállása összetett viselkedést eredményezhet, amit érdemes alaposan tesztelni.
`width` és `height`
Ahogy korábban említettük, a writing-mode
megváltoztatásával a width
és height
jelentése felcserélődhet. Egy vertical-rl
módban lévő elem width
-je a vertikális irányú „height”-jévé, míg a height
-je a horizontális irányú „width”-jévé válik. Ez alapvetően befolyásolja az elrendezés tervezését, és sokak számára kezdetben zavaró lehet. A CSS Logical Properties and Values modulban bevezették a inline-size
és block-size
tulajdonságokat, amelyek írásmódtól függetlenül az inline és block irányú méreteket jelentik, ezzel konzisztensebbé téve a layout kezelését.
`transform: rotate()` vs. `writing-mode`
Ez egy gyakori hibaforrás. Sokan megpróbálják a vertikális szöveget a transform: rotate(90deg)
CSS tulajdonsággal elérni. Azonban ez alapvetően más eredményt ad. A transform
az egész elemet elforgatja a tartalmával együtt, míg a writing-mode
megváltoztatja a szöveg belső áramlását az elemen belül. Egy `transform: rotate()`-tel elforgatott elem továbbra is horizontális írásmódban kezeli a szövegét, ami problémákat okozhat a sorok törésénél, a méretezésnél és az akadálymentesség szempontjából. A writing-mode
az egyetlen korrekt megoldás a valódi vertikális szöveg létrehozására.
Flexbox és Grid Layout
A Flexbox és Grid elrendezések rendkívül rugalmasan alkalmazkodnak a writing-mode
-hoz. A „main axis” és „cross axis” irányai automatikusan igazodnak a writing-mode
által meghatározott blokk- és sorfolyási irányokhoz. Például, ha egy flex container writing-mode: vertical-rl;
beállítással rendelkezik, akkor a flex-direction: row;
vertikálisan fogja elrendezni az elemeket, míg a flex-direction: column;
horizontálisan, jobbról balra. Ez fantasztikus lehetőségeket kínál a komplex, adaptív elrendezések létrehozásához.
Gyakorlati Alkalmazási Területek és Példák
A writing-mode
tulajdonság nem csupán elméleti érdekesség, hanem nagyon is gyakorlati eszköz a modern webfejlesztésben.
1. Nemzetköziesítés (i18n) – Japán, Kínai, Koreai Oldalak
A legkézenfekvőbb felhasználás a kelet-ázsiai nyelvek támogatása. Egy japán weboldalon gyakran látunk vegyes elrendezéseket, ahol a fő szövegtörzs vertikális, de a menük és beviteli mezők horizontálisak.
body.japanese-vertical {
writing-mode: vertical-rl;
text-orientation: upright;
}
/* A menü viszont horizontális marad */
nav ul {
writing-mode: horizontal-tb;
text-orientation: mixed; /* visszaáll az alapértelmezettre, vagy explicit beállítva */
}
2. Kreatív Címek és Díszítőelemek
Egy blogbejegyzés oldalsávjában, egy magazin stílusú címlapon vagy egy galéria leírásában a vertikális címek azonnal felhívják a figyelmet és eleganciát kölcsönöznek.
.sidebar-heading {
writing-mode: vertical-lr;
font-size: 2em;
font-weight: bold;
color: #333;
padding: 10px;
border-left: 2px solid #ccc;
height: 300px; /* magassága lesz a "szélessége" */
display: flex; /* flexbox segít a vertikális centírozásban */
align-items: center;
justify-content: center;
}
3. Vertikális Navigációs Menü
Kompakt navigációs menük hozhatók létre, amelyek a képernyő szélén helyezkednek el, különösen hasznosak reszponzív designok esetén, vagy olyan layout-oknál, ahol a horizontális tér értékes.
.vertical-nav {
writing-mode: vertical-rl;
text-orientation: mixed;
height: 100vh; /* A menü vertikális magassága a viewport magassága */
width: 60px; /* A menü horizontális szélessége */
position: fixed;
right: 0;
top: 0;
background-color: #f0f0f0;
padding: 15px;
box-shadow: -2px 0 5px rgba(0,0,0,0.1);
}
.vertical-nav ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column; /* Az elemek vertikálisan követik egymást */
justify-content: space-around;
height: 100%;
}
.vertical-nav li a {
display: block;
padding: 10px;
text-decoration: none;
color: #333;
white-space: nowrap; /* Megakadályozza a törést */
}
Böngésző Kompatibilitás és Előtagok
A writing-mode
tulajdonság támogatottsága ma már kiváló a modern böngészőkben (Chrome, Firefox, Safari, Edge). Nincs szükség böngésző-specifikus előtagokra (pl. -webkit-
, -moz-
), mivel a szabványosított változat mindenhol működik. Érdemes mindig ellenőrizni a Can I Use oldalon a legfrissebb információkat, ha régebbi böngészőket is támogatni kell.
Akadálymentesség és Használhatóság
Bár a writing-mode
nagyszerű eszköz, fontos figyelembe venni az akadálymentesség és a használhatóság szempontjait is:
- Olvashatóság: A nyugati kultúrákban megszokottól eltérő írásirány nehezítheti a szöveg olvasását. Használjuk mértékkel, és főleg olyan tartalmakhoz, amelyek rövidek, díszítő jellegűek, vagy ahol a felhasználók elvárják (pl. japán weboldalakon).
- Képernyőolvasók: A modern képernyőolvasók általában jól kezelik a
writing-mode
tulajdonságot, és a szöveget a megfelelő sorrendben olvassák fel. Azonban mindig tesztelni kell a különféle segédprogramokkal, hogy megbizonyosodjunk a helyes viselkedésről. - Interaktív Elemek: Ha linkekről vagy gombokról van szó, győződjünk meg róla, hogy a fókusz sorrendje és az interakció logikusan működik, függetlenül a szöveg irányától.
- Nyomtatás: Ellenőrizzük, hogy a vertikális elrendezések hogyan viselkednek nyomtatásban. Lehet, hogy szükség van egy külön
@media print
stíluslapra.
Tippek és Bevált Gyakorlatok
- Kezdd kicsiben: Ne alakítsd át azonnal az egész oldalad vertikálisra. Kezdd kisebb, izolált elemekkel, mint például egy cím vagy egy oldalsáv.
- Tesztelj alaposan: Mivel a
writing-mode
befolyásolja a layoutot, a méreteket és a szövegfolyást, fontos, hogy különböző böngészőkben, eszközökön és képernyőméreteken is teszteld az eredményt. - Ne keverd a `transform` tulajdonsággal: Mint említettük, a
writing-mode
és atransform: rotate()
két különböző dolog. A valódi vertikális szöveghez mindig awriting-mode
-ot használd. - Figyelj a tartalomra: Hosszú, összetett szövegtörzseket csak akkor rendezz vertikálisan, ha az a célközönség számára természetes és megszokott (pl. anyanyelvi japán olvasók).
- Használd a `text-orientation`-t bölcsen: Vertikális módban a `text-orientation` elengedhetetlen a helyes karaktertájoláshoz. Válaszd ki azt az értéket, amely a legmegfelelőbb a tartalomhoz és a designhoz.
- Rugalmas méretezés: Használj rugalmas mértékegységeket (
em
,rem
,%
,vw
,vh
) a méretek megadásához, hogy az elrendezés jól alkalmazkodjon a különböző képernyőkhöz. - Logikai tulajdonságok: Ha teheted, használd a logikai tulajdonságokat (pl.
inline-size
,block-size
,margin-block-start
) a fizikai (width
,height
,margin-top
) helyett, mivel ezek automatikusan alkalmazkodnak awriting-mode
-hoz, konzisztensebb és fenntarthatóbb kódot eredményezve.
Összegzés
A CSS `writing-mode` tulajdonság egy rendkívül sokoldalú és erőteljes eszköz, amely túlmutat a hagyományos horizontális szövegelrendezéseken. Lehetővé teszi a vertikális szöveg tökéletes megjelenítését, kritikus szerepet játszik a nemzetköziesítésben, és számtalan lehetőséget kínál a kreatív webdesign számára. Bár eleinte kissé szokatlan lehet a gondolkodásmód megváltoztatása a blokk- és sorfolyás irányát illetően, a megértése és a helyes alkalmazása jelentősen bővítheti a fejlesztők eszköztárát, és segít lenyűgöző, funkcionális és globálisan releváns weboldalak létrehozásában.
Ne habozz kísérletezni ezzel a tulajdonsággal. A modern webdesign a rugalmasságról és az innovációról szól, és a writing-mode
tökéletesen illeszkedik ebbe a filozófiába. Lépj túl a megszokottakon, és fedezd fel a vertikális szöveg által kínált új távlatokat!
Leave a Reply