CSS View Transition APIã®ç䌌èŠçŽ ãšã³ãžã³ãæ·±ãæãäžããã·ãŒã ã¬ã¹ã§é åçãªãŠãŒã¶ãŒäœéšãå®çŸããããã®ãã©ã³ãžã·ã§ã³èŠçŽ ç®¡çã«çŠç¹ãåœãŠãŸãã
CSS View Transitionç䌌èŠçŽ ãšã³ãžã³ïŒãã©ã³ãžã·ã§ã³èŠçŽ ç®¡çã®ç¿åŸ
CSS View Transitions APIã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãç¶æ éã§ã¹ã ãŒãºã§èŠèŠçã«é åçãªãã©ã³ãžã·ã§ã³ãäœæããããã®åŒ·åãªæ¹æ³ãæäŸããŸãããã®APIã®äžæ žã«ã¯ããã©ã³ãžã·ã§ã³èŠçŽ ã®çæãšæäœã管çããç䌌èŠçŽ ãšã³ãžã³ãååšããŸãããã®ãšã³ãžã³ãã©ã®ããã«æ©èœããããçè§£ããããšã¯ãView Transitions APIã广çã«æŽ»çšããçã«ã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒäœéšãå®çŸããããã«äžå¯æ¬ ã§ãã
ç䌌èŠçŽ ã®æ§é ãçè§£ãã
ãã¥ãŒãã©ã³ãžã·ã§ã³ãããªã¬ãŒããããšããã©ãŠã¶ã¯ãã©ã³ãžã·ã§ã³ã®ç°ãªã段éã衚ãç䌌èŠçŽ ã®éå±€ãèªåçã«çæããŸãããã®éå±€ã«ãããéçºè ã¯ãã©ã³ãžã·ã§ã³äžã®åèŠçŽ ã®å€èгãšåäœãæ£ç¢ºã«å¶åŸ¡ã§ããŸããäž»èŠãªç䌌èŠçŽ ã¯æ¬¡ã®ãšããã§ãïŒ
- ::view-transitionïŒããã¯ãã¥ãŒãã©ã³ãžã·ã§ã³å šäœãã«ãã»ã«åããã«ãŒãç䌌èŠçŽ ã§ããä»ã®ãã¹ãŠã®ãã©ã³ãžã·ã§ã³èŠçŽ ã®ã³ã³ãããšããŠæ©èœããŸãã
- ::view-transition-groupïŒãã®ç䌌èŠçŽ ã¯ãå
±éã®ãã©ã³ãžã·ã§ã³èå¥åïŒ
view-transition-name
ïŒãå ±æãã察å¿ãããå€ãããã¥ãŒãšãæ°ããããã¥ãŒãã°ã«ãŒãåããŸããäžæã®view-transition-name
ãæã€åèŠçŽ ã¯ãç¬èªã®::view-transition-group
ãæã¡ãŸãã - ::view-transition-image-pairïŒå
::view-transition-group
å ã§ããã®ç䌌èŠçŽ ã¯ãã©ã³ãžã·ã§ã³ããèŠçŽ ã®ãã¢ã«ãªã£ããå€ããç»åãšãæ°ãããç»åãå«ã¿ãŸããããã«ãããå調ããã¹ã¿ã€ã«ã®é©çšãç°¡çŽ åãããŸãã - ::view-transition-oldïŒãã®ç䌌èŠçŽ ã¯ãå€ãããã¥ãŒãã€ãŸããã©ã³ãžã·ã§ã³*å *ã®èŠçŽ ã衚ããŸããããã¯æ¬è³ªçã«ããã©ã³ãžã·ã§ã³ãéå§ãããåã®èŠçŽ ã®ã©ã€ãã¹ãããã·ã§ããã§ãã
- ::view-transition-newïŒãã®ç䌌èŠçŽ ã¯ãæ°ããããã¥ãŒãã€ãŸããã©ã³ãžã·ã§ã³*å *ã®èŠçŽ ã衚ããŸããããã¯ããã©ã³ãžã·ã§ã³ãå®äºããåŸã®èŠçŽ ã®ã©ã€ãã¹ãããã·ã§ããã§ãã
ãããã®ç䌌èŠçŽ ã¯éåžžã®DOMã®äžéšã§ã¯ãããŸããããã¥ãŒãã©ã³ãžã·ã§ã³ã®ã¹ã³ãŒãå ã«ã®ã¿ååšããŸãããã©ã³ãžã·ã§ã³ãé²è¡ããã«ã€ããŠããã©ãŠã¶ã«ãã£ãŠèªåçã«äœæããã³åé€ãããŸãã
view-transition-name
ã®åœ¹å²
view-transition-name
CSSããããã£ã¯ãç°ãªããã¥ãŒéã®èŠçŽ ãæ¥ç¶ãããããããã¥ãŒãã©ã³ãžã·ã§ã³ã«åå ã§ããããã«ããããã®èŠã§ããããã¯ããã¥ãŒãã©ã³ãžã·ã§ã³äžã«ã¢ãã¡ãŒã·ã§ã³ããããèŠçŽ ã«å²ãåœãŠãæååèå¥åã§ããåãview-transition-name
ãæã€èŠçŽ ã¯ãDOMã®ç°ãªãéšåã«é
眮ãããŠããå ŽåããSPAã®å Žåã¯å¥ã®ããŒãžã«ããå Žåã§ããæŠå¿µçã«åãèŠçŽ ãšèŠãªãããŸãããã®ããããã£ããªããšããã©ãŠã¶ã¯ãã©ã³ãžã·ã§ã³ã¢ãã¡ãŒã·ã§ã³ã®ããã«èŠçŽ ãè³¢ããã¢ãªã³ã°ããããšãã§ããŸããã
ãããããŒã®ããã«èããŠãã ããã2ã€ã®èŠçŽ ãåãããŒïŒview-transition-name
ïŒãå
±æããŠããå Žåããããã¯ãã©ã³ãžã·ã§ã³ã®æéäžãäžç·ã«ãªã³ã¯ãããŸããããã«ããããã©ãŠã¶ã¯ãå€ãããã¥ãŒã®ç¹å®ã®èŠçŽ ããæ°ããããã¥ãŒã®ç¹å®ã®èŠçŽ ã«å¯Ÿå¿ããããšãèªèããŸãã
äŸãã°ãååäžèЧããŒãžãšåå詳现ããŒãžãèããŠã¿ãŸããããäž¡æ¹ã®ããŒãžã«ååã®ç»åã衚瀺ãããŸããååç»åãäžèЧããŒãžãã詳现ããŒãžã«ã¢ãã¡ãŒã·ã§ã³ããããã«èŠããã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ãäœæããã«ã¯ãäž¡æ¹ã®ããŒãžã®ååç»åèŠçŽ ã«åãview-transition-name
ãå²ãåœãŠãŸãã
äŸïŒååç»åã®ãã©ã³ãžã·ã§ã³
HTMLïŒååäžèЧããŒãžïŒïŒ
<a href="/product/123">
<img src="product123.jpg" style="view-transition-name: product-image-123;" alt="Product 123">
</a>
HTMLïŒåå詳现ããŒãžïŒïŒ
<img src="product123.jpg" style="view-transition-name: product-image-123;" alt="Product 123">
ãã®äŸã§ã¯ãäžèЧããŒãžã®ååç»åãšè©³çްããŒãžã®ååç»åã®äž¡æ¹ã«view-transition-name
ã`product-image-123`ã«èšå®ãããŠããŸãããŠãŒã¶ãŒãäžèЧããŒãžãã詳现ããŒãžã«ç§»åãããšããã©ãŠã¶ã¯ãã®ç»åã®ããã«::view-transition-group
ãäœæããç»åã¯å€ãäœçœ®ãšãµã€ãºããæ°ããäœçœ®ãšãµã€ãºãžãšã¹ã ãŒãºã«ãã©ã³ãžã·ã§ã³ããŸãã
ãã©ã³ãžã·ã§ã³èŠçŽ ã®ã¹ã¿ã€ã«ãå¶åŸ¡ãã
ç䌌èŠçŽ ãšã³ãžã³ã®çã®åã¯ããããã®ç䌌èŠçŽ ãCSSã䜿çšããŠã¹ã¿ã€ã«èšå®ã§ããèœåã«ãããŸããããã«ãããèŠçŽ ã®äœçœ®ããµã€ãºãããäžéæåºŠãå転ããã®ä»ã®èŠèŠçããããã£ãŸã§ããã©ã³ãžã·ã§ã³ã®ããããåŽé¢ãã«ã¹ã¿ãã€ãºã§ããŸãã
ç¹å®ã®ç䌌èŠçŽ ãã¿ãŒã²ããã«ããã«ã¯ãCSSã§é©åãªç䌌èŠçŽ ã»ã¬ã¯ã¿ã䜿çšããŸãïŒ
::view-transition-group(transition-name)
ïŒç¹å®ã®view-transition-name
ã«é¢é£ä»ãããã::view-transition-group
ãéžæããŸãã::view-transition-image-pair(transition-name)
ïŒç¹å®ã®view-transition-name
ã«é¢é£ä»ãããã::view-transition-image-pair
ãéžæããŸãã::view-transition-old(transition-name)
ïŒç¹å®ã®view-transition-name
ã«é¢é£ä»ãããã::view-transition-old
ãéžæããŸãã::view-transition-new(transition-name)
ïŒç¹å®ã®view-transition-name
ã«é¢é£ä»ãããã::view-transition-new
ãéžæããŸãã
transition-name
åŒæ°ã¯ãã¿ãŒã²ããã«ãããview-transition-name
ããããã£ã®å€ã§ããtransition-name
ãçç¥ãããšãã»ã¬ã¯ã¿ã¯ãã®ã¿ã€ãã®*ãã¹ãŠ*ã®ç䌌èŠçŽ ã«é©çšãããŸãã
äŸïŒå€ããã¥ãŒããã§ãŒãã¢ãŠãããã
ãã©ã³ãžã·ã§ã³äžã«å€ããã¥ãŒããã§ãŒãã¢ãŠããããã«ã¯ã次ã®CSSã䜿çšã§ããŸãïŒ
::view-transition-old(product-image-123) {
animation: fade-out 0.5s forwards;
}
@keyframes fade-out {
from { opacity: 1; }
to { opacity: 0; }
}
ãã®CSSã³ãŒãã¯ãproduct-image-123
ãã©ã³ãžã·ã§ã³åã«é¢é£ä»ãããã::view-transition-old
ç䌌èŠçŽ ãã¿ãŒã²ããã«ãããã§ãŒãã¢ãŠãã¢ãã¡ãŒã·ã§ã³ãé©çšããŸãã`forwards`ããŒã¯ãŒãã¯ãã¢ãã¡ãŒã·ã§ã³ãå®äºããåŸãèŠçŽ ãã¢ãã¡ãŒã·ã§ã³ã®æçµç¶æ
ïŒopacity: 0ïŒãç¶æããããšãä¿èšŒããŸãã
äŸïŒæ°ãããã¥ãŒãã¹ã±ãŒã«ã¢ããããã
ãã©ã³ãžã·ã§ã³äžã«æ°ãããã¥ãŒãã¹ã±ãŒã«ã¢ãããããã«ã¯ã次ã®CSSã䜿çšã§ããŸãïŒ
::view-transition-new(product-image-123) {
transform: scale(1.2);
transition: transform 0.5s ease-in-out;
}
ãã®CSSã³ãŒãã¯ãproduct-image-123
ãã©ã³ãžã·ã§ã³åã«é¢é£ä»ãããã::view-transition-new
ç䌌èŠçŽ ãã¿ãŒã²ããã«ããã¹ã±ãŒã«å€æãé©çšããŸããtransition
ããããã£ã¯ãã¹ã±ãŒã«å€æã0.5ç§ãããŠease-in-outã®ã¿ã€ãã³ã°é¢æ°ã§ã¹ã ãŒãºã«ã¢ãã¡ãŒã·ã§ã³ãããããšãä¿èšŒããŸãã
è€éãªãã©ã³ãžã·ã§ã³ã®ç®¡ç
ç䌌èŠçŽ ãšã³ãžã³ã¯ãè€æ°ã®èŠçŽ ãé¢äžããè€éãªãã©ã³ãžã·ã§ã³ãæ±ãéã«ç䟡ãçºæ®ããŸããHTMLãæ³šææ·±ãæ§æããé©åãªview-transition-name
å€ãå²ãåœãŠãããšã§ããŠãŒã¶ãŒäœéšãåäžãããå調ããã¢ãã¡ãŒã·ã§ã³ãäœæã§ããŸãã
è€éãªãã©ã³ãžã·ã§ã³ã管çããããã®ãã³ããããã€ã玹ä»ããŸãïŒ
- ãã©ã³ãžã·ã§ã³ãèšç»ããïŒã³ãŒãã£ã³ã°ãå§ããåã«ãUIã®ããŸããŸãªç¶æ
ãšãèŠçŽ ããããã®éã§ã©ã®ããã«ãã©ã³ãžã·ã§ã³ããããããã¹ã±ããããŸããããã«ãããã¢ãã¡ãŒã·ã§ã³ãå¿
èŠãªèŠçŽ ãšãå²ãåœãŠãã¹ãé©åãª
view-transition-name
å€ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã - æå³ã®ãããã©ã³ãžã·ã§ã³åã䜿çšããïŒãã©ã³ãžã·ã§ã³ãããèŠçŽ ãæç¢ºã«èª¬æãã
view-transition-name
å€ãéžæããŸããããã«ãããã³ãŒããçè§£ãããããä¿å®ãããããªããŸããäŸãã°ã`element-1`ã®ä»£ããã«`product-image`ã`modal-title`ã䜿çšããŸãã - é¢é£ããèŠçŽ ãã°ã«ãŒãåããïŒäžç·ã«ã¢ãã¡ãŒã·ã§ã³ãããå¿
èŠãããè€æ°ã®èŠçŽ ãããå Žåã¯ãããããå
±éã®ã³ã³ããå
ã«ã°ã«ãŒãåãããã®ã³ã³ããã«åã
view-transition-name
ãå²ãåœãŠãŸããããã«ãããã°ã«ãŒãå šäœã«å調ããã¢ãã¡ãŒã·ã§ã³ãé©çšã§ããŸãã - CSS倿°ã䜿çšããïŒæéãé å»¶ãã€ãŒãžã³ã°é¢æ°ãªã©ã®åå©çšå¯èœãªã¢ãã¡ãŒã·ã§ã³å€ãå®çŸ©ããããã«CSS倿°ã䜿çšããŸããããã«ããããã©ã³ãžã·ã§ã³å šäœã§äžè²«æ§ãä¿ã¡ããããªããŸãã
- ã¢ã¯ã»ã·ããªãã£ãèæ
®ããïŒãã©ã³ãžã·ã§ã³ãé害ã®ãããŠãŒã¶ãŒã«ãã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŸããéåºŠã«æŽŸæãªããŸãã¯æ°ãæ£ããã¢ãã¡ãŒã·ã§ã³ã®äœ¿çšãé¿ããåãæ
å ±ã«ã¢ã¯ã»ã¹ããããã®ä»£æ¿æ¹æ³ãæäŸããŸãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èšå®ã§åãã®äœæžãèŠæ±ãããŠãŒã¶ãŒã®ããã«ã
prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãã©ã³ãžã·ã§ã³ãç¡å¹ã«ããŸãã
äŸïŒã¢ãŒãã«ãŠã£ã³ããŠã®ãã©ã³ãžã·ã§ã³
ç»é¢ã®æšªããã¹ã©ã€ãã€ã³ããã¢ãŒãã«ãŠã£ã³ããŠãèããŠã¿ãŸããããã¢ãŒãã«ãŠã£ã³ããŠã«ã¯ãã¿ã€ãã«ã説æãéãããã¿ã³ãå«ãŸããŠããŸããã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ãäœæããããã«ãã¢ãŒãã«ãŠã£ã³ããŠèªäœãšãã®åã
ã®ã³ã³ããŒãã³ãã«view-transition-name
å€ãå²ãåœãŠãããšãã§ããŸãã
HTMLïŒ
<div class="modal" style="view-transition-name: modal-window;">
<h2 style="view-transition-name: modal-title;">Modal Title</h2>
<p style="view-transition-name: modal-description;">Modal Description</p>
<button>Close</button>
</div>
CSSïŒ
::view-transition-group(modal-window) {
animation: slide-in 0.3s ease-out forwards;
transform-origin: top right;
}
@keyframes slide-in {
from { transform: translateX(100%); }
to { transform: translateX(0); }
}
::view-transition-old(modal-title) {
opacity: 0;
}
::view-transition-new(modal-title) {
animation: fade-in 0.3s ease-in forwards;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
/* Consider users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
::view-transition-group(modal-window) {
animation: none;
transform: translateX(0);
}
::view-transition-old(modal-title) {
opacity: 1;
}
::view-transition-new(modal-title) {
animation: none;
opacity: 1;
}
}
ãã®äŸã§ã¯ãã¢ãŒãã«ãŠã£ã³ããŠãå³ããã¹ã©ã€ãã€ã³ããã¢ãŒãã«ã¿ã€ãã«ããã§ãŒãã€ã³ããŸããã¢ãŒãã«ãŠã£ã³ããŠãšãã®ã¿ã€ãã«ã«ç°ãªãview-transition-name
å€ãå²ãåœãŠãããšã§ããããã®ã¢ãã¡ãŒã·ã§ã³ãç¬ç«ããŠå¶åŸ¡ã§ããŸãã
é«åºŠãªãã¯ããã¯
åºæ¬ããã£ãããšçè§£ããããããã«æŽç·Žããããã©ã³ãžã·ã§ã³ãäœæããããã®ããã€ãã®é«åºŠãªãã¯ããã¯ãæ¢æ±ã§ããŸãïŒ
::view-transition-image-pair
ã®ã«ã¹ã¿ãã€ãºïŒ::view-transition-image-pair
ç䌌èŠçŽ ãã¹ã¿ã€ã«èšå®ããŠããã©ã³ãžã·ã§ã³ããç»åã«ãŒããããã¹ãã³ã°ããŸãã¯ãã£ã«ã¿ãŒãé©çšãããªã©ã®å¹æãäœæã§ããŸãã- JavaScriptã䜿çšããŠãã©ã³ãžã·ã§ã³ãå¶åŸ¡ããïŒCSSããã¥ãŒãã©ã³ãžã·ã§ã³ãã¹ã¿ã€ã«èšå®ããäž»ãªæ¹æ³ã§ãããJavaScriptã䜿çšããŠããã°ã©ã ã§ãã©ã³ãžã·ã§ã³ãå¶åŸ¡ããããšãã§ããŸããããã«ããããŠãŒã¶ãŒå ¥åããã®ä»ã®èŠå ã«åºã¥ããŠãããåçã§ã€ã³ã¿ã©ã¯ãã£ããªãã©ã³ãžã·ã§ã³ãäœæã§ããŸãã`document.startViewTransition` APIã¯ããã©ã³ãžã·ã§ã³ãå®äºãããšãã«è§£æ±ºããããããã¹ãè¿ããã¢ãã¡ãŒã·ã§ã³ãçµäºããåŸã«ã³ãŒããå®è¡ã§ããŸãã
- éåææäœã®åŠçïŒãã¥ãŒãã©ã³ãžã·ã§ã³ã«ãµãŒããŒããã®ããŒã¿ååŸãªã©ã®éåææäœãå«ãŸããå Žåã¯ãããŒã¿ãããŒãããããŸã§ãã©ã³ãžã·ã§ã³ãéå§ãããªãããã«ããå¿ èŠããããŸãã`document.startViewTransition` APIã`async/await`ãšçµã¿åãããŠäœ¿çšããŠããããåŠçã§ããŸãã
äŸïŒãã©ã³ãžã·ã§ã³åã«ããŒã¿ãååŸãã
async function navigateToProductDetails(productId) {
const transition = document.startViewTransition(async () => {
// Fetch product data
const product = await fetchProductData(productId);
// Update the DOM with the product details
updateProductDetails(product);
});
await transition.finished;
console.log("Transition complete!");
}
ãã®äŸã§ã¯ãnavigateToProductDetails
颿°ã¯ãŸãfetchProductData
颿°ã䜿çšããŠååããŒã¿ãååŸããŸããããŒã¿ãããŒãããããšãDOMãååè©³çŽ°ã§æŽæ°ããŸããtransition.finished
ãããã¹ã¯ãããŒã¿ãããŒãããDOMãæŽæ°ããããŸã§ãã©ã³ãžã·ã§ã³ãéå§ãããªãããšãä¿èšŒããŸãã
ãã©ãŠã¶ã®äºææ§ãšãã©ãŒã«ããã¯
CSS View Transitions APIã¯æ¯èŒçæ°ããããã©ãŠã¶ã®ãµããŒãã¯ãŸã é²åããŠããŸãã2023幎åŸåçŸåšãChromeãEdgeãFirefoxã§ãµããŒããããŠããŸããSafariã«ã¯æå¹ã«ããå¿ èŠã®ããå®éšçãªãµããŒãããããŸããæ¬çªç°å¢ã§APIã䜿çšããåã«ããã©ãŠã¶ã®äºææ§ã確èªããããšãéèŠã§ãã
ãã¹ãŠã®ãã©ãŠã¶ã§äžè²«ãããŠãŒã¶ãŒäœéšãä¿èšŒããããã«ãView Transitions APIããµããŒãããŠããªããã©ãŠã¶ã«å¯ŸããŠãã©ãŒã«ããã¯ãæäŸããããšãäžå¯æ¬ ã§ãã@supports
CSSã¢ããã«ãŒã«ã䜿çšããŠãAPIããµããŒããããŠãããã©ãããæ€åºããããã«å¿ããŠä»£æ¿ã®ã¹ã¿ã€ã«ãã¢ãã¡ãŒã·ã§ã³ãé©çšã§ããŸãã
äŸïŒãã©ãŒã«ããã¯ã®æäŸ
@supports (view-transition-name: none) {
/* View Transitions API is supported */
}
@supports not (view-transition-name: none) {
/* View Transitions API is NOT supported */
/* Provide alternative styles or animations */
.modal {
animation: fade-in 0.3s ease-in forwards;
}
}
ãã®äŸã§ã¯ã@supports
ã¢ããã«ãŒã«ã¯view-transition-name
ããããã£ããµããŒããããŠãããã©ããããã§ãã¯ããŸãããµããŒããããŠããªãå Žåã@supports not
ãããã¯å
ã®ã³ãŒããå®è¡ãããã¢ãŒãã«ãŠã£ã³ããŠã«åçŽãªãã§ãŒãã€ã³ã¢ãã¡ãŒã·ã§ã³ãé©çšãããŸãã
åœéåãšããŒã«ã©ã€ãºã«é¢ããèæ ®äºé
ã°ããŒãã«ãªã¢ããªã±ãŒã·ã§ã³ã§ãã¥ãŒãã©ã³ãžã·ã§ã³ãå®è£ ããéã«ã¯ãåœéåãšããŒã«ã©ã€ãºãèæ ®ããããšãéèŠã§ããæåã«ãã£ãŠã¢ãã¡ãŒã·ã§ã³ããã©ã³ãžã·ã§ã³ã«å¯Ÿãã奜ã¿ãç°ãªãå ŽåããããŸããäŸãã°ãããæåã§ã¯æ§ããã§èœã¡çããã¢ãã¡ãŒã·ã§ã³ã奜ããããããŸããããä»ã®æåã§ã¯ããæŽŸæã§ãã€ãããã¯ãªã¢ãã¡ãŒã·ã§ã³ã奜ããããããŸããã
åœéåããã³ããŒã«ã©ã€ãºããããã¥ãŒãã©ã³ãžã·ã§ã³ãäœæããããã®ãã³ããããã€ã玹ä»ããŸãïŒ
- ã¢ãã¡ãŒã·ã§ã³å€ã«CSS倿°ã䜿çšããïŒã¢ãã¡ãŒã·ã§ã³ã®æéãé å»¶ãã€ãŒãžã³ã°é¢æ°ãå®çŸ©ããããã«CSS倿°ã䜿çšããŸããããã«ãããç°ãªããã±ãŒã«ã«åãããŠã¢ãã¡ãŒã·ã§ã³å€ãç°¡åã«èª¿æŽã§ããŸãã
- å³ããå·ŠïŒRTLïŒãžèšè¿°ããèšèªãèæ
®ããïŒã¢ããªã±ãŒã·ã§ã³ãRTLèšèªããµããŒãããŠããå Žåããã¥ãŒãã©ã³ãžã·ã§ã³ãRTLã¬ã€ã¢ãŠãã§é©åã«ãã©ãŒãªã³ã°ãããããã«ããå¿
èŠããããŸãã
margin-inline-start
ãmargin-inline-end
ãªã©ã®CSSè«çããããã£ã䜿çšããŠãã¬ã€ã¢ãŠããç°ãªãæžåæ¹åã«é©å¿ã§ããããã«ããŸãã - ç°ãªããã±ãŒã«ã§ãã©ã³ãžã·ã§ã³ããã¹ãããïŒç°ãªããã±ãŒã«ã§ãã¥ãŒãã©ã³ãžã·ã§ã³ã培åºçã«ãã¹ãããåæåã§é©åã«èŠããæããããããšã確èªããŸãã
ãã¹ããã©ã¯ãã£ã¹
- ãã©ã³ãžã·ã§ã³ã¯çãç°¡æœã«ïŒãã©ã³ãžã·ã§ã³ã®æéãçŽ300ã500ããªç§ã«ããããšãç®æããŸããé·ããã©ã³ãžã·ã§ã³ã¯é ãæãããããŠãŒã¶ãŒäœéšã劚ããå¯èœæ§ããããŸãã
- èªç¶ãªèŠãç®ã®ã¢ãã¡ãŒã·ã§ã³ãäœæããããã«ã€ãŒãžã³ã°é¢æ°ã䜿çšããïŒããŸããŸãªã€ãŒãžã³ã°é¢æ°ã詊ããŠãã¢ããªã±ãŒã·ã§ã³ã«æãé©ãããã®ãèŠã€ããŸãã
- é床ãªã¢ãã¡ãŒã·ã§ã³ãé¿ããïŒã¢ãã¡ãŒã·ã§ã³ãå€ããããšãå§åãããæ°ãæ£ããå¯èœæ§ããããŸããã¢ãã¡ãŒã·ã§ã³ã¯æ§ããã«ããŠãŒã¶ãŒäœéšãåäžããããšãã«ã®ã¿äœ¿çšããŸãã
- ç°ãªãããã€ã¹ãšãã©ãŠã¶ã§ãã¹ãããïŒç°ãªãããã€ã¹ãšãã©ãŠã¶ã§ãã¥ãŒãã©ã³ãžã·ã§ã³ã培åºçã«ãã¹ãããæåŸ ã©ããã«æ©èœããããšã確èªããŸãã
- ããã©ãŒãã³ã¹ãåªå ããïŒãã©ã³ãžã·ã§ã³ãã©ã°ãã«ã¯ã€ããåŒãèµ·ãããªãããã«ãããã©ãŒãã³ã¹ã®ããã«æé©åããŸããå¯èœãªéãã`transform`ã`opacity`ã®ãããªããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãããCSSããããã£ã䜿çšããŸãã`width`ã`height`ã®ãããªã¬ã€ã¢ãŠãã®ãªãããŒãåŒãèµ·ããããããã£ã®ã¢ãã¡ãŒã·ã§ã³ã¯é¿ããŸãã
- `prefers-reduced-motion`ã¡ãã£ã¢ã¯ãšãªã䜿çšããïŒãŠãŒã¶ãŒã®å¥œã¿ãå°éããŸãã
çµè«
CSS View Transitions APIã¯ããã®åŒ·åãªç䌌èŠçŽ ãšã³ãžã³ã«ãããã·ãŒã ã¬ã¹ã§é åçãªãŠãŒã¶ãŒäœéšãåµé ããããã®æ°ããã¬ãã«ã®å¶åŸ¡ãšæè»æ§ãæäŸããŸããç䌌èŠçŽ ãã©ã®ããã«æ©èœããCSSã§ããããã©ã®ããã«ã¹ã¿ã€ã«èšå®ããããçè§£ããããšã§ãWebã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªã«ãã¯ã¢ã³ããã£ãŒã«ãåäžããããçã«èŠäºãªãã©ã³ãžã·ã§ã³ãäœæã§ããŸãããã©ã³ãžã·ã§ã³ãæ éã«èšç»ããæå³ã®ãããã©ã³ãžã·ã§ã³åã䜿çšããå®è£ ããéã«ã¯ã¢ã¯ã»ã·ããªãã£ãšããã©ãŒãã³ã¹ãèæ ®ããããšãå¿ããªãã§ãã ãããAPIã®ãã©ãŠã¶ãµããŒããæ¡å€§ãç¶ããã«ã€ããŠãããã¯äžçäžã®ããã³ããšã³ãéçºè ã«ãšã£ãŠãŸããŸãéèŠãªããŒã«ã«ãªãã§ãããããŠãŒã¶ãŒã®ããã«ããè±ãã§ãããé åçãªWebäœéšãåµé ããããã«ããã®APIãåãå ¥ããŠãã ãããCSSãã¥ãŒãã©ã³ãžã·ã§ã³ã§å¯èœãªããšã®éçãæŒãåºããããšãæããªãã§ãã ããïŒAPIãé²åããã«ã€ããŠãæŽæ°ããããã©ãŠã¶ã®äºææ§ãããªãã£ã«ã確èªããããšãå¿ããªãã§ãã ããã