Limited availability
Experimental: ããã¯å®é¨çãªæ©è½ã§ãã
æ¬çªã§ä½¿ç¨ããåã«ãã©ã¦ã¶ã¼äºææ§ä¸è¦§è¡¨ããã§ãã¯ãã¦ãã ããã
ViewTransition
ã¯ãã¥ã¼é·ç§» API ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ããã¥ã¼é·ç§»ã表ãããã©ã³ã¸ã·ã§ã³ãæ§ã
ãªç¶æ
ï¼ä¾ãã°ãã¢ãã¡ã¼ã·ã§ã³ãå®è¡ããæºåãã§ãã¦ãããã¾ãã¯ã¢ãã¡ã¼ã·ã§ã³ãçµäºããï¼ã«éããã¨ãã«åå¿ããæ©è½ãã¾ãã¯ãã©ã³ã¸ã·ã§ã³ãå®å
¨ã«ã¹ãããããæ©è½ãæä¾ãã¾ãã
ãã®ãªãã¸ã§ã¯ãå㯠document.startViewTransition()
ã¡ã½ãããè¿ãã¾ãã startViewTransition()
ãå¼ã³åºãããã¨ããã¥ã¼é·ç§»ã®ããã»ã¹ã§èª¬æããã¦ããä¸é£ã®ã¹ãããã«å¾ãã¾ããããã¯æ§ã
ãªãããã¹ãå±¥è¡ãããã¿ã¤ãã³ã°ã«ã¤ãã¦ã説æãã¦ãã¾ãã
ViewTransition.finished
Experimental
Promise
ã§ããã©ã³ã¸ã·ã§ã³ã®ã¢ãã¡ã¼ã·ã§ã³ãå®äºããæ°ãããã¼ã¸ãã¥ã¼ãã¦ã¼ã¶ã¼ã«è¡¨ç¤ºããæä½å¯è½ã«ãªãã¨å±¥è¡ããã¾ãã
ViewTransition.ready
Experimental
Promise
ã§ãæ¬ä¼¼è¦ç´ ããªã¼ã使ããããã©ã³ã¸ã·ã§ã³ã®ã¢ãã¡ã¼ã·ã§ã³ãå§ã¾ããã¨ããã¨å±¥è¡ããã¾ãã
ViewTransition.updateCallbackDone
Experimental
Promise
ã§ã document.startViewTransition()
ã®ã³ã¼ã«ããã¯ãè¿ããããã¹ãå±¥è¡ãããã¨ãã«å±¥è¡ããã¾ãã
skipTransition()
Experimental
ãã¥ã¼é·ç§»ã®ã¢ãã¡ã¼ã·ã§ã³é¨åãã¹ããããã¾ãããã ãã DOM ãæ´æ°ãã document.startViewTransition()
ã³ã¼ã«ããã¯ã®å®è¡ã¯ã¹ããããã¾ããã
次ã®ä¾ã§ã¯ã ViewTransition.ready
ãããã¹ã使ç¨ãã¦ãã¯ãªãã¯æã®ã¦ã¼ã¶ã¼ã«ã¼ã½ã«ã®ä½ç½®ããçºçããç¬èªã®å形表示ãã¥ã¼é·ç§»ãçºçããã ã¦ã§ãã¢ãã¡ã¼ã·ã§ã³ API ã«ãã£ã¦ã¢ãã¡ã¼ã·ã§ã³ãæå®ããã¦ãã¾ãã
// æå¾ã®ã¯ãªãã¯ã¤ãã³ããä¿å
let lastClick;
addEventListener("click", (event) => (lastClick = event));
function spaNavigate(data) {
// ãã® API ã«å¯¾å¿ãã¦ããªããã©ã¦ã¶ã¼ã®ããã®ãã©ã¼ã«ããã¯
if (!document.startViewTransition) {
updateTheDOMSomehow(data);
return;
}
// ã¯ãªãã¯ä½ç½®ãåå¾ããããç»é¢ã®ä¸å¤®ã¸ãã©ã¼ã«ããã¯ãã
const x = lastClick?.clientX ?? innerWidth / 2;
const y = lastClick?.clientY ?? innerHeight / 2;
// æãé ãã³ã¼ãã¼ã¾ã§ã®è·é¢ãåå¾
const endRadius = Math.hypot(
Math.max(x, innerWidth - x),
Math.max(y, innerHeight - y),
);
// ãã©ã³ã¸ã·ã§ã³ã使
const transition = document.startViewTransition(() => {
updateTheDOMSomehow(data);
});
// æ¬ä¼¼è¦ç´ ã使ãããã®ãå¾
ã¤
transition.ready.then(() => {
// ã«ã¼ãã®æ°ãããã¥ã¼ãã¢ãã¡ã¼ã·ã§ã³
document.documentElement.animate(
{
clipPath: [
`circle(0 at ${x}px ${y}px)`,
`circle(${endRadius}px at ${x}px ${y}px)`,
],
},
{
duration: 500,
easing: "ease-in",
// ã¢ãã¡ã¼ã·ã§ã³ãããæ¬ä¼¼è¦ç´ ãæå®
pseudoElement: "::view-transition-new(root)",
},
);
});
}
ãã®ã¢ãã¡ã¼ã·ã§ã³ã«ã¯ä»¥ä¸ã® CSS ãå¿ è¦ã§ããæ¢å®ã®ã¢ãã¡ã¼ã·ã§ã³ããªãã«ããå¤ããã¥ã¼ã¨æ°ãããã¥ã¼ã®ç¶æ ãæ··ããåããªãããã«ãã¾ãï¼æ°ããç¶æ ã¯ãã¥ã¼é·ç§»ã®é·ç§»ã§ã¯ãªããå¤ãç¶æ ã®ããä¸ã«ãã¯ã¤ããããã¾ãï¼ã
::view-transition-image-pair(root) {
isolation: auto;
}
::view-transition-old(root),
::view-transition-new(root) {
animation: none;
mix-blend-mode: normal;
display: block;
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4