CSS writing-modeã®å æ¬çã¬ã€ããåœéå(i18n)ã®ããã®ããã¹ãæ¹åã®å¶åŸ¡æ¹æ³ãæ¢ããèŠèŠçã«é åçã§ã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªãŠã§ããµã€ããäœæããŸãã
CSS Writing Mode: ã°ããŒãã«ãµã€ãã®ããã®åœéçãªããã¹ãæ¹åã®ãã¹ã¿ãŒ
仿¥ã®çžäºæ¥ç¶ãããäžçã§ã¯ããŠã§ããµã€ãã¯å€æ§ãªãªãŒãã£ãšã³ã¹ã«å¯Ÿå¿ããå¿
èŠãããããã®éèŠãªåŽé¢ãç°ãªãããã¹ãæ¹åã®æ±ãã§ããCSSã®writing-modeã¯ãéçºè
ãããã¹ãã®æµãã®æ¹åãå¶åŸ¡ã§ãã匷åãªããŒã«ã§ãããçã«åœéå(i18n)ããããèŠèŠçã«é
åçãªãŠã§ãäœéšãåµåºããããšãå¯èœã«ããŸãããã®å
æ¬çãªã¬ã€ãã§ã¯ãwriting-modeã®è€éããæ¢æ±ããã°ããŒãã«ãµã€ãåãã®ããã¹ãæ¹åããã¹ã¿ãŒããããã®å®çšçãªäŸãšå®è¡å¯èœãªæŽå¯ãæäŸããŸãã
ã©ã€ãã£ã³ã°ã¢ãŒããçè§£ãã
writing-mode CSSããããã£ã¯ãããã¹ãã®è¡ãæ°Žå¹³ãŸãã¯åçŽã«ã¬ã€ã¢ãŠãããããããããŠãããã¯ãé²è¡ããæ¹åãæå®ããŸããããã¯ã以äžã®ãããªç°ãªãæžåæ¹åã䜿çšããèšèªã®ããã«ãŠã§ãããŒãžãé©å¿ãããäžã§éèŠãªåœ¹å²ãæãããŸã:
- å·Šããå³ãž (LTR): è±èªãã¹ãã€ã³èªããã©ã³ã¹èªããã€ãèªããã®ä»å€ãã®è¥¿æ¬§èšèªã
- å³ããå·Šãž (RTL): ã¢ã©ãã¢èªãããã©ã€èªããã«ã·ã£èªããŠã«ãã¥ãŒèªã
- 瞊æžã: ç¹äœåäžåœèªãæ¥æ¬èªãã¢ã³ãŽã«èªã
ããã©ã«ãã§ã¯ããŠã§ããã©ãŠã¶ã¯horizontal-tbã©ã€ãã£ã³ã°ã¢ãŒãã䜿çšããŸããããã¯ããã¹ããäžããäžãžæ°Žå¹³ã«ã¬ã€ã¢ãŠãããŸããããããwriting-modeã䜿çšãããšããã®ããã©ã«ãã®åäœã倿Žããç°ãªãããã¹ãæ¹åã«å¯Ÿå¿ããã¬ã€ã¢ãŠããäœæã§ããŸãã
`writing-mode`ããããã£ã®å€
writing-modeããããã£ã¯ããã€ãã®å€ãåãå
¥ãããããããç°ãªãããã¹ãæ¹åãšãããã¯ãããŒãæå®ããŸã:
horizontal-tb: æ°Žå¹³ãäžããäžãžãããã¹ãã®è¡ã¯æ°Žå¹³ã§ãäžããäžãžæµããŸãããããããã©ã«ãå€ã§ããvertical-rl: åçŽãå³ããå·Šãžãããã¹ãã®è¡ã¯åçŽã§ãå³ããå·ŠãžæµããŸãããããã¯ã¯äžæ¹åã«é²ã¿ãŸããvertical-lr: åçŽãå·Šããå³ãžãããã¹ãã®è¡ã¯åçŽã§ãå·Šããå³ãžæµããŸãããããã¯ã¯äžæ¹åã«é²ã¿ãŸããsideways-rl:vertical-rlã®å»æ¢ããããšã€ãªã¢ã¹ãsideways-lr:vertical-lrã®å»æ¢ããããšã€ãªã¢ã¹ã
以äžã®å€ãå©çšå¯èœã§ãããããŸãäžè¬çã«ã¯äœ¿çšãããŸãã:
block-flow: ãããã¯ãã©ãŒãããã³ã³ããã¹ãã®æ¹åã䜿çšããŸããããã¯ä»ã®ããããã£ã«ãã£ãŠåœ±é¿ãåããå¯èœæ§ããããŸãã
åºæ¬çãªäŸ
writing-modeã®äœ¿çšãããã€ãã®ç°¡åãªäŸã§ç€ºããŸããã:
æ°Žå¹³ããã¹ãïŒããã©ã«ãïŒ
ããã¯ããã©ã«ãã®åäœãªã®ã§ãæç€ºçãªwriting-modeã¯äžèŠã§ã:
<p>This is horizontal text.</p>
瞊æžãããã¹ãïŒå³ããå·ŠãžïŒ
ããã¹ããå³ããå·ŠãžçžŠæžãã§è¡šç€ºããã«ã¯ãvertical-rlã䜿çšããŸã:
<p style="writing-mode: vertical-rl;">This is vertical text (right-to-left).</p>
瞊æžãããã¹ãïŒå·Šããå³ãžïŒ
ããã¹ããå·Šããå³ãžçžŠæžãã§è¡šç€ºããã«ã¯ãvertical-lrã䜿çšããŸã:
<p style="writing-mode: vertical-lr;">This is vertical text (left-to-right).</p>
`writing-mode`ã®å®çšçãªå¿çš
åºæ¬çãªããã¹ãæ¹åãè¶
ããŠãwriting-modeã¯èŠèŠçã«é
åçã§åœéçã«ã¢ã¯ã»ã¹å¯èœãªãŠã§ããµã€ããäœæããããã®ããŸããŸãªå®çšçãªå¿çšãæäŸããŸã:
1. RTLèšèªãžã®é©å¿
ã¢ã©ãã¢èªãããã©ã€èªã®ãããªRTLèšèªããµããŒããããŠã§ããµã€ãã§ã¯ãããã¹ããæ£ãã衚瀺ããããã«writing-modeãäžå¯æ¬ ã§ããCSSã»ã¬ã¯ã¿ã䜿çšããŠãèšèªå±æ§ã«åºã¥ããŠç¹å®ã®èŠçŽ ãŸãã¯ããã¥ã¡ã³ãå
šäœã«writing-mode: rtl;ãé©çšã§ããŸã:
<html lang="ar">
<body>
<p>ÙØ°Ø§ ÙØµ عرؚÙ.</p>
</body>
</html>
html[lang="ar"] {
direction: rtl;
unicode-bidi: bidi-override;
}
direction: rtl;ã¯åºæ¬æ¹åãèšå®ããããã«éèŠã§ãããæ··åæ¹åããã¹ãã®æ£ããåŠçãä¿èšŒããããã«unicode-bidi: bidi-override;ãå¿
èŠã«ãªãå ŽåããããŸããçŸä»£çãªã¢ãããŒãã§ã¯ãåŸè¿°ããè«çããããã£ããã°ãã°å¥œãŸããŸãã
2. 瞊åããã²ãŒã·ã§ã³ã¡ãã¥ãŒã®äœæ
writing-modeã䜿çšããŠãæ¥æ¬èªãäžåœèªã®ãŠã§ããµã€ãã§ããèŠããã瞊åããã²ãŒã·ã§ã³ã¡ãã¥ãŒãäœæã§ããŸããããã«ããããµã€ãã«ãŠããŒã¯ãªèŠèŠçé
åãå ããããšãã§ããŸã:
<ul class="vertical-menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
.vertical-menu {
list-style: none;
padding: 0;
margin: 0;
}
.vertical-menu li a {
display: block;
padding: 10px;
text-decoration: none;
color: #333;
background-color: #f0f0f0;
border-bottom: 1px solid #ccc;
writing-mode: vertical-rl;
text-orientation: upright;
}
ãã®äŸã§ã¯ãtext-orientation: upright;ã䜿çšããŠã瞊åã¡ãã¥ãŒã¢ã€ãã å
ã®ããã¹ããå転ãããã«æ£ç«ããŠè¡šç€ºãããããã«ããŠããŸãã
3. éèªé¢šã¬ã€ã¢ãŠãã®ãã¶ã€ã³
writing-modeãçµã¿èŸŒãããšã§ãéèªé¢šã®ã¬ã€ã¢ãŠããå®çŸã§ããŸããäŸãã°ã倧ããªç»åã®äžã«çžŠæžãã®ããã¹ããéããŠãå°è±¡çãªèŠèŠå¹æãçã¿åºãããšãã§ããŸãã
<div class="magazine-section">
<img src="image.jpg" alt="Magazine Image">
<div class="vertical-text">Exclusive Interview</div>
</div>
.magazine-section {
position: relative;
width: 500px;
height: 300px;
}
.magazine-section img {
width: 100%;
height: 100%;
object-fit: cover;
}
.vertical-text {
position: absolute;
top: 0;
right: 10px;
color: white;
font-size: 2em;
writing-mode: vertical-rl;
text-orientation: upright;
transform-origin: top right;
transform: rotate(180deg); /* Required to render correctly across browsers */
}
transform: rotate(180deg);ã¯ãç°ãªããã©ãŠã¶ãç¹ã«å€ãããŒãžã§ã³éã§äžè²«ããã¬ã³ããªã³ã°ãä¿èšŒããããã«ãã°ãã°å¿
èŠãšãªããŸãã
4. ããŒã¿å¯èŠåã®åŒ·å
ããŒã¿å¯èŠåã«ãããŠãwriting-modeã¯ãã£ãŒããã°ã©ãã®è»žã®ã©ãã«ä»ãã«åœ¹ç«ã¡ãŸããç¹ã«ã¹ããŒã¹ãéãããŠããå Žåã«æå¹ã§ããäŸãã°ã瞊軞ã®ã©ãã«ãå転ãããŠãããããéãªãã®ãé²ãããšãã§ããŸãã
é«åºŠãªãã¯ããã¯ãšèæ ®äºé
writing-modeã®èœåãæå€§éã«æŽ»çšããããã«ã¯ã以äžã®é«åºŠãªãã¯ããã¯ãšéèŠãªèŠçŽ ãèæ
®ããŠãã ãã:
1. è«çããããã£ãšå€
çŸä»£ã®CSSã§ã¯ãã¬ã€ã¢ãŠããšæ¹åãããæè»ãã€æå³çã«æ±ãããã®è«çããããã£ãšå€ãå°å
¥ãããŠããŸããleftãrightã®ãããªç©ççãªããããã£ã®ä»£ããã«ãæžåæ¹åã«é©å¿ããstartãendã®ãããªè«çããããã£ã䜿çšãããŸããäŸãã°:
margin-inline-start: LTRã§ã¯margin-leftã«ãRTLã§ã¯margin-rightã«çžåœããŸããpadding-block-start: æ°Žå¹³ã©ã€ãã£ã³ã°ã¢ãŒãã§ã¯padding-topã«ãåçŽã©ã€ãã£ã³ã°ã¢ãŒãã§ã¯padding-leftãŸãã¯padding-rightã«çžåœããŸãã
è«çããããã£ã䜿çšãããšãç¹ã«è€æ°ã®æžåæ¹åãæ±ãéã«ãCSSãããé©å¿æ§ãé«ããä¿å®ãããããªããŸãã
2. `writing-mode`ãšä»ã®CSSããããã£ã®çµã¿åãã
writing-modeã¯ãtext-orientationãdirectionãunicode-bidiãªã©ã®ä»ã®CSSããããã£ãšçžäºäœçšããããã¹ãã®å€èгãšåäœãå¶åŸ¡ããŸãããããã®çžäºäœçšãçè§£ããããšã¯ãæãŸããçµæãéæããããã«äžå¯æ¬ ã§ãã
text-orientation: åçŽã©ã€ãã£ã³ã°ã¢ãŒãã§ã®æåã®åããæå®ããŸããå€ã«ã¯uprightãsidewaysãmixedãuse-glyph-orientationãªã©ããããŸããdirection: ããã¹ãã®åºæ¬æ¹åïŒLTRãŸãã¯RTLïŒãæå®ããŸããunicode-bidi: Unicodeã®åæ¹åã¢ã«ãŽãªãºã ãèŠçŽ ã«ã©ã®ããã«é©çšãããããå¶åŸ¡ããŸãã
3. æ··åæ¹åããã¹ãã®æ±ã
LTRãšRTLã®äž¡æ¹ã®æåãå«ãããã¹ãïŒäŸïŒã¢ã©ãã¢èªã®æ®µèœå
ã®è±èªããã¹ãïŒãæ±ãå Žåãæ£ããã¬ã³ããªã³ã°ãä¿èšŒããããã«unicode-bidiããããã£ã䜿çšããããšãéèŠã§ããbidi-overrideå€ã¯ãç¹å®ã®æ¹åã匷å¶ããããã«ãã䜿çšãããŸãã
<p dir="rtl">ÙØ°Ø§ ÙØµ Ø¹Ø±ØšÙ ÙØªØ¶Ù
٠ؚعض اÙÙÙÙ
ات Ø§ÙØ¥ÙجÙÙØ²ÙØ© <span style="unicode-bidi: bidi-override; direction: ltr;">like this example.</span></p>
4. ãã©ã³ãã«é¢ããèæ ®äºé
ãã¹ãŠã®ãã©ã³ãã瞊æžãã«é©ããŠããããã§ã¯ãããŸãããäžéšã®ãã©ã³ãã«ã¯çžŠæžãçšã®ã°ãªããå«ãŸããŠããªãã£ãããæ£ããã¬ã³ããªã³ã°ãããªãã£ããããå ŽåããããŸãã瞊æžãã¢ãŒãã䜿çšããéã¯ã瞊æžãçšã«ç¹å¥ã«èšèšããããã©ã³ããã瞊æžãã°ãªãã®ãµããŒããè¯å¥œãªãã©ã³ããéžæããŠãã ããã
æ±ã¢ãžã¢è«žåœïŒäžåœãæ¥æ¬ãéåœïŒã®ãã©ã³ãã¯ãäžè¬çã«çžŠæžãã®ãµããŒããéåžžã«åªããŠããŸãã
5. ã¢ã¯ã»ã·ããªãã£
writing-modeã®äœ¿çšãã¢ã¯ã»ã·ããªãã£ã«æªåœ±é¿ãäžããªãããã«ããŠãã ãããç»åããã®ä»ã®éããã¹ãã³ã³ãã³ãã«ã¯ä»£æ¿ããã¹ããæäŸããããã¹ããé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠèªã¿ãããçè§£ãããããã®ã§ããããšãä¿èšŒããŸããã»ãã³ãã£ãã¯HTMLèŠçŽ ãšARIA屿§ã䜿çšããŠãã¢ã¯ã»ã·ããªãã£ãåäžãããŸãããã
6. ãã©ãŠã¶ã®äºææ§
writing-modeã¯çŸä»£ã®ãã©ãŠã¶ã§è¯å¥œã«ãµããŒããããŠããŸãããå€ããã©ãŠã¶ã§ã¯ãã³ããŒãã¬ãã£ãã¯ã¹ïŒäŸïŒ-webkit-writing-mode, -ms-writing-modeïŒãå¿
èŠã«ãªãå ŽåããããŸããSassãLessã®ãããªCSSããªããã»ããµã䜿çšããŠãã³ããŒãã¬ãã£ãã¯ã¹ã®è¿œå ãèªååããããAutoprefixerã®ãããªããŒã«ã䜿çšããŠãã ããã
`writing-mode`ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
writing-modeã广çã«äœ¿çšããã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªãŠã§ããµã€ããäœæããããã«ã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ãã:
- å¯èœãªéãè«çããããã£ãšå€ã䜿çšãããããã«ãããCSSãããé©å¿æ§ãé«ããä¿å®ãããããªããŸãã
- 瞊æžãã¢ãŒãã«é©ãããã©ã³ããéžæããããã©ã³ãããã¹ãããŠã瞊æžãããã¹ãã§æ£ããã¬ã³ããªã³ã°ãããããšã確èªããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£ãèæ
®ããã
writing-modeã®äœ¿çšãé害ãæã€ãŠãŒã¶ãŒã®ã¢ã¯ã»ã·ããªãã£ã«æªåœ±é¿ãäžããªãããã«ããŠãã ããã - ç°ãªããã©ãŠã¶ãããã€ã¹ã§ã¬ã€ã¢ãŠãããã¹ããããã¬ã€ã¢ãŠããç°ãªããã©ãããã©ãŒã éã§æ£ããã¬ã³ããªã³ã°ãããããšã確èªããŠãã ããã
- CSSããªããã»ããµãAutoprefixerã䜿çšããŠãã³ããŒãã¬ãã£ãã¯ã¹ãåŠçãããããã«ããæéãšåŽåãç¯çŽããCSSãå€ããã©ãŠã¶ãšäºææ§ãããããšãä¿èšŒããŸãã
- ã³ã³ãã³ããšãã¬ãŒã³ããŒã·ã§ã³ãåé¢ãããCSSã䜿çšããŠã³ã³ãã³ãã®ãã¬ãŒã³ããŒã·ã§ã³ãå¶åŸ¡ããã¹ã¿ã€ãªã³ã°ç®çã§HTMLã䜿çšããããšã¯é¿ããŠãã ããã
`writing-mode`ã䜿çšããŠããã°ããŒãã«ãµã€ãã®äŸ
äžçäžã®å€ãã®ãŠã§ããµã€ãããRTLèšèªãžã®é©å¿ããèŠèŠçã«ãŠããŒã¯ãªã¬ã€ã¢ãŠãã®äœæãŸã§ãããŸããŸãªç®çã§writing-modeãå©çšããŠããŸãã以äžã«ããã€ãã®äŸãæããŸã:
- ã¢ã©ãã¢èªãããã©ã€èªã®ãã¥ãŒã¹ãµã€ã: ãããã®ãµã€ãã§ã¯ãããã¹ããæ£ãã衚瀺ããããã«
direction: rtlããå Žåã«ãã£ãŠã¯writing-modeã®èª¿æŽã䜿çšãããŠããŸãã - æ¥æ¬ãäžåœã®èžè¡ã»æåãµã€ã: èŠåºããã¡ãã¥ãŒãè£ é£ŸçãªèŠçŽ ã«çžŠæžããé »ç¹ã«åãå ¥ããŠããŸãã
- ãã¡ãã·ã§ã³éèª: ã¹ã¿ã€ã«å¹æã®ããã«ãããžã¥ã¢ã«ã¬ã€ã¢ãŠãã§çžŠæžãããã¹ããé »ç¹ã«äœ¿çšããŸãã
çµè«
CSSã®writing-modeã¯ãåœéåãããèŠèŠçã«é
åçãªãŠã§ããµã€ããäœæããããã®åŒ·åãªããŒã«ã§ããããããã£ã®ç°ãªãå€ãçè§£ãããããä»ã®CSSããããã£ãšã©ã®ããã«çžäºäœçšããããææ¡ããããšã§ãç°ãªãããã¹ãæ¹åã«å¯Ÿå¿ããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããã¬ã€ã¢ãŠããäœæã§ããŸããã¢ã¯ã»ã·ããªãã£ããã©ãŠã¶ã®äºææ§ããã©ã³ãã®éžæãèæ
®ããŠããŠã§ããµã€ãããã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã¹ãããããèŠèŠçã«é
åçã§ããããšãå¿ããªãã§ãã ããã
ãŠã§ãéçºãé²åãç¶ããäžã§ãwriting-modeã®ãããªãã¯ããã¯ãç¿åŸããããšã¯ãçã«ã°ããŒãã«ã§å
æ¬çãªãªã³ã©ã€ã³äœéšãåµåºããããã«ãŸããŸãéèŠã«ãªããŸããåœéåã®åãåãå
¥ããäžçäžã®ãŠãŒã¶ãŒã®å¿ã«é¿ããŠã§ããµã€ããäœæããŸãããã