CSS Animation Rangeã®å æ¬çã¬ã€ããã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³å¶åŸ¡ã«çŠç¹ãåœãŠãçŸä»£çãªCSSæè¡ã§é åçã§ã€ã³ã¿ã©ã¯ãã£ããªWebäœéšãåµåºããæ¹æ³ã解説ããŸãã
CSS Animation Rangeããã¹ã¿ãŒããïŒã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³å¶åŸ¡
仿¥ã®ãã€ãããã¯ãªãŠã§ãã®äžçã§ã¯ããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããæãéèŠã§ããéçãªãŠã§ãããŒãžã¯éå»ã®éºç©ã§ããçŸä»£ã®ãŠã§ããµã€ãã¯ãã€ã³ã¿ã©ã¯ãã£ãã§ãèŠèŠçã«é åçã§ããããŠæãéèŠãªããšãšããŠãã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒäœéšãæäŸããå¿ èŠããããŸãããããéæããããã®åŒ·åãªããŒã«ã®äžã€ããCSS Animation Rangeã䜿çšããã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã§ãã
ãã®ã¬ã€ãã§ã¯ãCSS Animation Rangeã®äžçãæ·±ãæãäžããã¹ã¯ããŒã«äœçœ®ã掻çšããŠã¢ãã¡ãŒã·ã§ã³ã®åçãå¶åŸ¡ãããŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã«çŽæ¥å¿çããé åçãªãšãã§ã¯ããäœæããæ¹æ³ãæ¢ããŸããã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ããã¹ã¿ãŒããWebãã¶ã€ã³ã¹ãã«ãåäžãããããã®åºæ¬çãªæŠå¿µãå®è·µçãªäŸããããŠé«åºŠãªãã¯ããã¯ãç¶²çŸ ããŸãã
ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãšã¯ïŒ
ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãšã¯ããã®æ žå¿ã«ãããŠãCSSã¢ãã¡ãŒã·ã§ã³ã®é²è¡ããŠãŒã¶ãŒã®ã¹ã¯ããŒã«äœçœ®ã«çµã³ã€ããæè¡ã§ããã¢ãã¡ãŒã·ã§ã³ãèªåçã«åçããããããããŒãã¯ãªãã¯ã®ãããªã€ãã³ãã«ãã£ãŠããªã¬ãŒãããããã代ããã«ããŠãŒã¶ãŒãããŒãžãäžã«ïŒãŸãã¯äžã«ïŒã¹ã¯ããŒã«ããããšã«çŽæ¥å¿çããŸããããã«ãããçŽæ¥çãªæäœæãçãŸãããŠã§ããµã€ãã®ç¥èŠçãªã€ã³ã¿ã©ã¯ãã£ãæ§ãåäžããŸãã
ããéœåžã®æŽå²ã玹ä»ãããŠã§ããµã€ããæ³åããŠã¿ãŠãã ããããŠãŒã¶ãŒãäžã«ã¹ã¯ããŒã«ãããšãå°é¢ãã建ç©ãç«ã¡äžãããæŽå²äžã®äººç©ãçŸããå°å³ãåºããããã®ãã¹ãŠãã¹ã¯ããŒã«ãšåæããŠè¡ãããŸãããã®æ²¡å ¥æã®ããäœéšã¯ãã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã«ãã£ãŠå¯èœã«ãªããŸãã
ãªãã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã䜿çšããã®ãïŒ
- ãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®åäžïŒ ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã¯ããŠã§ããµã€ããããã€ã³ã¿ã©ã¯ãã£ãã§é åçãªãã®ã«ãããŠãŒã¶ãŒã®æ³šæãåŒãã€ãããããªãæ¢æ±ãä¿ããŸãã
- ã¹ããŒãªãŒããªã³ã°ã®æ¹åïŒ ã¹ã¯ããŒã«äœçœ®ã§ã¢ãã¡ãŒã·ã§ã³ã®åçãå¶åŸ¡ããããšã§ã説åŸåã®ããç©èªãäœãäžããèŠèŠçã«åºæ¿çãªæ¹æ³ã§ãŠãŒã¶ãŒãã³ã³ãã³ãã«å°ãããšãã§ããŸããã€ã³ã¿ã©ã¯ãã£ããªã¿ã€ã ã©ã€ã³ãããŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠæ å ±ãæããã«ãªã補å玹ä»ãªã©ãèããŠã¿ãŠãã ããã
- ããåªããå¶åŸ¡ãšç²ŸåºŠïŒ åŸæ¥ã®ã€ãã³ãããªã¬ãŒåã®ã¢ãã¡ãŒã·ã§ã³ãšã¯ç°ãªããã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã¯ãã¢ãã¡ãŒã·ã§ã³ã®ã¿ã€ãã³ã°ãšåæã«å¯ŸããŠãã现ããå¶åŸ¡ãæäŸããŸããã¢ãã¡ãŒã·ã§ã³ã®é²è¡ãç¹å®ã®ã¹ã¯ããŒã«äœçœ®ã«æ£ç¢ºã«ãããã³ã°ã§ããŸãã
- ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé ïŒ ïŒããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå¹ççãªã³ãŒãã£ã³ã°ãã©ã¯ãã£ã¹ãçšããŠïŒæ£ããå®è£ ãããå Žåãã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã¯ããã©ãŒãã³ã¹ãé«ããã¹ã ãŒãºãªãŠãŒã¶ãŒäœéšãæäŸã§ããŸãã
CSS Animation Rangeã®åºç€
CSSèªäœã«ã¯ãã€ãã£ãã®ãscroll-based animationãããããã£ã¯ãããŸããããCSSã¢ãã¡ãŒã·ã§ã³ãJavaScriptïŒãŸãã¯ã©ã€ãã©ãªïŒããããŠscrollã€ãã³ããçµã¿åãããããšã§ãã®å¹æãå®çŸã§ããŸãã
äž»èŠãªæ§æèŠçŽ ïŒ
- CSSã¢ãã¡ãŒã·ã§ã³ïŒ ããŒãã¬ãŒã ã䜿çšããŠã¢ãã¡ãŒã·ã§ã³èªäœãå®çŸ©ããŸããããã«ãããèŠçŽ ã®ããããã£ãæéãšãšãã«ã©ã®ããã«å€åããããæå®ããŸãã
- JavaScriptïŒãŸãã¯ã©ã€ãã©ãªïŒïŒ
scrollã€ãã³ãããªãã¹ã³ããã¹ã¯ããŒã«ã®é²è¡ç¶æ³ïŒããŒãžãã¹ã¯ããŒã«ãããå²åïŒãèšç®ããŸãã - ã¢ãã¡ãŒã·ã§ã³é²è¡ç¶æ³ã®ãããã³ã°ïŒ ã¹ã¯ããŒã«ã®é²è¡ç¶æ³ãã¢ãã¡ãŒã·ã§ã³ã®ã¿ã€ã ã©ã€ã³ã«ãããã³ã°ããŸããããã¯ãã¹ã¯ããŒã«ã®é²è¡ç¶æ³ã50%ã§ããã°ãã¢ãã¡ãŒã·ã§ã³ã50%ã®ããŒãã¬ãŒã ã«ããããšã«å¯Ÿå¿ããããšãæå³ããŸãã
åºæ¬çãªäŸïŒã¹ã¯ããŒã«ã«ããèŠçŽ ã®ãã§ãŒãã€ã³
ãŠãŒã¶ãŒãäžã«ã¹ã¯ããŒã«ããã«ã€ããŠèŠçŽ ããã§ãŒãã€ã³ããç°¡åãªäŸããå§ããŸãããã
HTML:
<div class="fade-in-element">
<p>This element will fade in as you scroll.</p>
</div>
CSS:
.fade-in-element {
opacity: 0;
transition: opacity 0.5s ease-in-out;
}
.fade-in-element.visible {
opacity: 1;
}
JavaScript:
window.addEventListener('scroll', () => {
const element = document.querySelector('.fade-in-element');
const elementPosition = element.getBoundingClientRect().top;
const screenPosition = window.innerHeight;
if (elementPosition < screenPosition) {
element.classList.add('visible');
} else {
element.classList.remove('visible');
}
});
解説ïŒ
- HTMLã¯
divã«fade-in-elementãšããã¯ã©ã¹ãå®çŸ©ããŸãã - CSSã¯æåã«èŠçŽ ã®äžéæåºŠã0ã«èšå®ããopacityããããã£ã®ãã©ã³ãžã·ã§ã³ãå®çŸ©ããŸãããŸããäžéæåºŠã1ã«èšå®ãã
.visibleã¯ã©ã¹ãå®çŸ©ããŸãã - JavaScriptã¯
scrollã€ãã³ãããªãã¹ã³ããŸãããããŠããã¥ãŒããŒãã«å¯ŸããèŠçŽ ã®äœçœ®ãèšç®ããŸããèŠçŽ ããã¥ãŒããŒãå ã«ããå Žåãvisibleã¯ã©ã¹ã远å ãããèŠçŽ ããã§ãŒãã€ã³ããŸããããã§ãªãå Žåã¯ãvisibleã¯ã©ã¹ãåé€ãããèŠçŽ ããã§ãŒãã¢ãŠãããŸãã
CSS Animation Rangeã®é«åºŠãªãã¯ããã¯
åã®äŸã¯åºæ¬çãªå°å ¥ã§ãããããæŽç·Žãããã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãäœæããããã®é«åºŠãªãã¯ããã¯ãæ¢ããŸãããã
1. ã¹ã¯ããŒã«çã䜿çšãã粟å¯ãªã¢ãã¡ãŒã·ã§ã³å¶åŸ¡
åã«ã¯ã©ã¹ã远å ãããåé€ããããã代ããã«ãã¹ã¯ããŒã«çã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ã®ããããã£ãçŽæ¥å¶åŸ¡ããããšãã§ããŸããããã«ããããããã现ããã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ãå¯èœã«ãªããŸãã
äŸïŒã¹ã¯ããŒã«çã«åºã¥ããŠèŠçŽ ãæ°Žå¹³ã«ç§»åããã
HTML:
<div class="moving-element">
<p>This element will move horizontally as you scroll.</p>
</div>
CSS:
.moving-element {
position: fixed;
top: 50%;
left: 0;
transform: translateX(0);
transition: transform 0.1s linear;
}
JavaScript:
window.addEventListener('scroll', () => {
const element = document.querySelector('.moving-element');
const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
const scrollTop = window.scrollY;
const scrollPercentage = scrollTop / scrollHeight;
const maxTranslation = 500; // Maximum horizontal translation in pixels
const translation = scrollPercentage * maxTranslation;
element.style.transform = `translateX(${translation}px)`;
});
解説ïŒ
- HTMLã¯
divã«moving-elementãšããã¯ã©ã¹ãå®çŸ©ããŸãã - CSSã¯èŠçŽ ã®äœçœ®ãåºå®ã«èšå®ããåçŽæ¹åã«äžå€®æãããæ°Žå¹³æ¹åã®ç§»åã0ã«åæåããŸãã
- JavaScriptã¯çŸåšã®ã¹ã¯ããŒã«äœçœ®ãšã¹ã¯ããŒã«å¯èœãªç·é«ãã«åºã¥ããŠã¹ã¯ããŒã«çãèšç®ããŸããæ¬¡ã«ãã¹ã¯ããŒã«çãšæå€§ç§»åå€ã«åºã¥ããŠç§»åéãèšç®ããŸããæåŸã«ãèŠçŽ ã®
transformããããã£ãæŽæ°ããŠæ°Žå¹³ã«ç§»åãããŸããCSSã®transitionããããã£ã«ãããåããã¹ã ãŒãºã«ãªããŸãã
2. Intersection Observer APIã®äœ¿çš
Intersection Observer APIã¯ãèŠçŽ ããã¥ãŒããŒãã«åºå ¥ãããã¿ã€ãã³ã°ãæ€åºããããã®ãããå¹ççã§ããã©ãŒãã³ã¹ã®é«ãæ¹æ³ãæäŸããŸããããã«ãããã¹ã¯ããŒã«ã€ãã³ãããšã«èŠçŽ ã®äœçœ®ãåžžã«åèšç®ããå¿ èŠããªããªããŸãã
äŸïŒãã¥ãŒããŒãã«å ¥ã£ããšãã«èŠçŽ ãæ¡å€§ãã
HTML:
<div class="scaling-element">
<p>This element will scale up when it enters the viewport.</p>
</div>
CSS:
.scaling-element {
transform: scale(0.5);
transition: transform 0.5s ease-in-out;
}
.scaling-element.in-view {
transform: scale(1);
}
JavaScript:
const scalingElement = document.querySelector('.scaling-element');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
scalingElement.classList.add('in-view');
} else {
scalingElement.classList.remove('in-view');
}
});
});
observer.observe(scalingElement);
解説ïŒ
- HTMLã¯
divã«scaling-elementãšããã¯ã©ã¹ãå®çŸ©ããŸãã - CSSã¯æåã«èŠçŽ ã50%ã«çž®å°ãã
transformããããã£ã®ãã©ã³ãžã·ã§ã³ãå®çŸ©ããŸãã.in-viewã¯ã©ã¹ã¯èŠçŽ ã100%ã«æ¡å€§ããŸãã - JavaScriptã¯Intersection Observer APIã䜿çšããŠãèŠçŽ ããã¥ãŒããŒãã«å
¥ã£ãããšãæ€åºããŸããèŠçŽ ã亀差ããŠããïŒãã¥ãŒå
ã«ããïŒå Žåã
in-viewã¯ã©ã¹ã远å ãããèŠçŽ ãæ¡å€§ããŸãã亀差ããªããªã£ãå Žåã¯ãã¯ã©ã¹ãåé€ãããçž®å°ããŸãã
3. CSS倿°ã«ããåçå¶åŸ¡
CSS倿°ïŒã«ã¹ã¿ã ããããã£ïŒã¯ãJavaScriptããçŽæ¥ã¢ãã¡ãŒã·ã§ã³ããããã£ãåçã«å¶åŸ¡ããããã®åŒ·åãªæ¹æ³ãæäŸããŸããããã«ãããã³ãŒããã¯ãªãŒã³ã«ãªããã¢ãã¡ãŒã·ã§ã³å¶åŸ¡ãããæè»ã«ãªããŸãã
äŸïŒã¹ã¯ããŒã«äœçœ®ã«åºã¥ããŠèŠçŽ ã®è²ã倿Žãã
HTML:
<div class="color-changing-element">
<p>This element's color will change as you scroll.</p>
</div>
CSS:
.color-changing-element {
--hue: 0;
background-color: hsl(var(--hue), 100%, 50%);
transition: background-color 0.2s linear;
}
JavaScript:
window.addEventListener('scroll', () => {
const element = document.querySelector('.color-changing-element');
const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
const scrollTop = window.scrollY;
const scrollPercentage = scrollTop / scrollHeight;
const hue = scrollPercentage * 360; // Hue value for HSL color
element.style.setProperty('--hue', hue);
});
解説ïŒ
- HTMLã¯
divã«color-changing-elementãšããã¯ã©ã¹ãå®çŸ©ããŸãã - CSSã¯CSS倿°
--hueãå®çŸ©ããããã䜿çšããŠHSLã«ã©ãŒã¢ãã«ã§èŠçŽ ã®èæ¯è²ãèšå®ããŸãã - JavaScriptã¯ã¹ã¯ããŒã«çãèšç®ããããã䜿çšããŠè²çžå€ãèšç®ããŸããæ¬¡ã«ã
element.style.setPropertyã䜿çšããŠ--hue倿°ã®å€ãæŽæ°ããèŠçŽ ã®èæ¯è²ãåçã«å€æŽããŸãã
ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã§äººæ°ã®ã©ã€ãã©ãª
ããã©JavaScriptã䜿çšããŠã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãå®è£ ããããšãã§ããŸãããããã€ãã®ã©ã€ãã©ãªã䜿çšãããšãããã»ã¹ãç°¡çŽ åããããé«åºŠãªæ©èœãæäŸã§ããŸãã
- GSAP (GreenSock Animation Platform): åªããããã©ãŒãã³ã¹ãšã¯ãã¹ãã©ãŠã¶äºææ§ãæäŸããã匷åã§å€æ©èœãªã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãªã§ããGSAPã®ScrollTriggerãã©ã°ã€ã³ã¯ãã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã®å®è£ ãéåžžã«ç°¡åã«ããŸãã
- ScrollMagic: ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³å°çšã«èšèšããã人æ°ã®ã©ã€ãã©ãªã§ããã¢ãã¡ãŒã·ã§ã³ããªã¬ãŒãç°¡åã«å®çŸ©ããã¹ã¯ããŒã«äœçœ®ã«åºã¥ããŠã¢ãã¡ãŒã·ã§ã³ã®åçãå¶åŸ¡ã§ããŸãã
- AOS (Animate On Scroll): èŠçŽ ããã¥ãŒã«å ¥ã£ããšãã«ãäºåã«æ§ç¯ãããã¢ãã¡ãŒã·ã§ã³ãç°¡åã«è¿œå ããæ¹æ³ãæäŸãã軜éã©ã€ãã©ãªã§ãã
GSAPã®ScrollTriggerã䜿çšããäŸ
GSAP (GreenSock Animation Platform) ãšãã®ScrollTriggerãã©ã°ã€ã³ã¯ãå ç¢ãªéžæè¢ã§ãã以äžã«ç°¡åãªäŸã瀺ããŸãã
HTML:
<div class="box">
<p>This box will move as you scroll!</p>
</div>
<div style="height: 200vh;></div>
CSS:
.box {
width: 100px;
height: 100px;
background-color: cornflowerblue;
color: white;
text-align: center;
line-height: 100px;
position: relative;
}
JavaScript (with GSAP and ScrollTrigger):
gsap.registerPlugin(ScrollTrigger);
gsap.to(".box", {
x: 500,
duration: 2,
scrollTrigger: {
trigger: ".box",
start: "top center",
end: "bottom center",
scrub: true, // Smoothly link animation to scroll position
markers: false, // Show start/end markers for debugging
}
});
解説ïŒ
- ScrollTriggerãã©ã°ã€ã³ãç»é²ããŸãã
gsap.to()ã¯ãã¯ã©ã¹ãboxããæã€èŠçŽ ãæ°Žå¹³æ¹åã«500ãã¯ã»ã«ãŸã§ã¢ãã¡ãŒã·ã§ã³ãããŸããscrollTriggerãªããžã§ã¯ãã¯ãã¹ã¯ããŒã«ããŒã¹ã®ããªã¬ãŒãèšå®ããŸãïŒtrigger: ".box"ã¯ãã¢ãã¡ãŒã·ã§ã³ãããªã¬ãŒããèŠçŽ ãæå®ããŸããstart: "top center"ã¯ãã¢ãã¡ãŒã·ã§ã³ãéå§ããã¿ã€ãã³ã°ïŒããã¯ã¹ã®äžéšããã¥ãŒããŒãã®äžå€®ã«éãããšãïŒãå®çŸ©ããŸããend: "bottom center"ã¯ãã¢ãã¡ãŒã·ã§ã³ãçµäºããã¿ã€ãã³ã°ïŒããã¯ã¹ã®äžéšããã¥ãŒããŒãã®äžå€®ã«éãããšãïŒãå®çŸ©ããŸããscrub: trueã¯ãã¢ãã¡ãŒã·ã§ã³ã®é²è¡ãã¹ã¯ããŒã«äœçœ®ã«ã¹ã ãŒãºã«é£åãããŸããmarkers: trueïŒãããã°çšïŒã¯ãããŒãžã«éå§ããŒã«ãŒãšçµäºããŒã«ãŒã衚瀺ããŸãã
ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã®ãã¹ããã©ã¯ãã£ã¹
ã¹ã ãŒãºã§ããã©ãŒãã³ã¹ã®é«ããŠãŒã¶ãŒäœéšãä¿èšŒããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
- ããã©ãŒãã³ã¹ã®æé©åïŒ ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ïŒäŸïŒ
transform: translateZ(0);ïŒã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããŸããscrollã€ãã³ããªã¹ããŒå ã®DOMæäœãæå°éã«æããŸãã - ãããŠã³ã¹/ã¹ããããªã³ã°ã®äœ¿çšïŒ ããã©ãŒãã³ã¹ã®ããã«ããã¯ãé²ãããã«ãscrollã€ãã³ããªã¹ããŒå ã®é¢æ°åŒã³åºãã®é »åºŠãå¶éããŸããããã¯ç¹ã«è€éãªèšç®ãè¡ãå Žåã«éèŠã§ãã
- ã¢ã¯ã»ã·ããªãã£ã®èæ ®ïŒ ã¢ãã¡ãŒã·ã§ã³ãç¡å¹ã«ããŠãããŠãŒã¶ãŒãæ¯æŽæè¡ã䜿çšããŠãããŠãŒã¶ãŒã®ããã«ãã³ã³ãã³ãã«ã¢ã¯ã»ã¹ããããã®ä»£æ¿æ¹æ³ãæäŸããŸããã¢ãã¡ãŒã·ã§ã³ãçºäœããã®ä»ã®ã¢ã¯ã»ã·ããªãã£åé¡ãåŒãèµ·ãããªãããã«ããŠãã ããã
- ãã©ãŠã¶ãšããã€ã¹éã§ã®ãã¹ãïŒ ããŸããŸãªãã©ãŠã¶ïŒChromeãFirefoxãSafariãEdgeïŒãšããã€ã¹ïŒãã¹ã¯ããããã¿ãã¬ãããæºåž¯é»è©±ïŒã§ã¢ãã¡ãŒã·ã§ã³ã培åºçã«ãã¹ãããäžè²«ããåäœãä¿èšŒããŸãã
- æå³ã®ããã¢ãã¡ãŒã·ã§ã³ã®äœ¿çšïŒ ã¢ãã¡ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒäœéšãåäžããããã®ã§ãããã³ã³ãã³ãããæ³šæãããããã®ã§ãã£ãŠã¯ãªããŸãããåã«ã¢ãã¡ãŒã·ã§ã³ã®ããã ãã«ã¢ãã¡ãŒã·ã§ã³ã䜿çšããããšã¯é¿ããŠãã ããã
- ããã©ãŒãã³ã¹ã®ç£èŠïŒ ãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãç£èŠããæœåšçãªããã«ããã¯ãç¹å®ããŸãã
ã°ããŒãã«ãªäŸãšèæ ®äºé
ã°ããŒãã«ãªèŠèŽè åãã«ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãèšèšããéã«ã¯ãããžãã£ãã§å æ¬çãªäœéšãä¿èšŒããããã«ãããŸããŸãªèŠå ãèæ ®ããããšãéèŠã§ãã
- èšèªãšããã¹ãã®æ¹åïŒ ãŠã§ããµã€ããè€æ°ã®èšèªããµããŒãããŠããå Žåãã¢ãã¡ãŒã·ã§ã³ãç°ãªãããã¹ãã®æ¹åïŒäŸïŒã¢ã©ãã¢èªãããã©ã€èªã®ãããªå³ããå·Šãžã®èšèªïŒã«æ£ããé©å¿ããããšã確èªããŠãã ãããããã«ã¯ãã¢ãã¡ãŒã·ã§ã³ãå転ãããããã¿ã€ãã³ã°ã調æŽãããããããšãå«ãŸããå ŽåããããŸãã
- æåçãªæåæ§ïŒ èŠèŠçãªå¥œã¿ã象城ã«ãããæåçãªéãã«æ³šæããŠãã ãããç¹å®ã®æåã§äžå¿«ãŸãã¯äžé©åãšèŠãªãããå¯èœæ§ã®ããã¢ãã¡ãŒã·ã§ã³ã®äœ¿çšã¯é¿ããŠãã ãããäŸãã°ãç¹å®ã®è²ã¯ç°ãªãæåã§ç¹å®ã®æå³ãæã¡ãŸãã
- ãããã¯ãŒã¯æ¥ç¶æ§ïŒ äžçã®ããŸããŸãªå°åã®ãŠãŒã¶ãŒã¯ããããã¯ãŒã¯é床ãç°ãªãå Žåãããããšãèæ ®ããŠãã ãããäœéãªæ¥ç¶ã§ãã¢ãã¡ãŒã·ã§ã³ãè¿ éã«èªã¿èŸŒãŸããã¹ã ãŒãºã«åäœããããã«æé©åããŸããããã°ã¬ãã·ãããŒãã£ã³ã°æè¡ã䜿çšãããã垯åå¹ ãéãããŠãããŠãŒã¶ãŒåãã«ãŠã§ããµã€ãã®ç°¡æçãæäŸããããšãæ€èšããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£åºæºïŒ åœéçãªã¢ã¯ã»ã·ããªãã£åºæºïŒäŸïŒWCAGïŒãéµå®ããå Žæã«é¢ä¿ãªããé害ãæã€ãŠãŒã¶ãŒãã¢ãã¡ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸããããã«ã¯ãã¢ãã¡ãŒã·ã§ã³ç»åã«ä»£æ¿ããã¹ããæäŸããããšããçºäœãåŒãèµ·ããå¯èœæ§ã®ããç¹æ» ãã¡ãã€ããã¢ãã¡ãŒã·ã§ã³ãåŒãèµ·ãããªãããã«ããããšãå«ãŸããŸãã
- ããã€ã¹ã®å€æ§æ§ïŒ äžçäžã®ãŠãŒã¶ãŒããŠã§ããµã€ãã«ã¢ã¯ã»ã¹ããããã«äœ¿çšããå¯èœæ§ã®ããå€çš®å€æ§ãªããã€ã¹ãèæ ®ããŠãã ãããããŸããŸãªç»é¢ãµã€ãºãšè§£å床ã§ã¢ãã¡ãŒã·ã§ã³ããã¹ããããã¹ãŠã®ããã€ã¹ã§èŠãç®ãšããã©ãŒãã³ã¹ãè¯å¥œã§ããããšã確èªããŠãã ããã
äŸïŒå°åããŒã¿ãæã€ã€ã³ã¿ã©ã¯ãã£ãããã
æ°åå€åã«é¢ããã°ããŒãã«ããŒã¿ãæç€ºãããŠã§ããµã€ããæ³åããŠã¿ãŠãã ããããŠãŒã¶ãŒãã¹ã¯ããŒã«ãããšãããããããŸããŸãªå°åã«ãºãŒã ã€ã³ãããã®å°åã«é¢é£ããç¹å®ã®ããŒã¿ãã€ã³ãã匷調衚瀺ãããŸããäŸãã°ïŒ
- ãšãŒããããŸã§ã¹ã¯ããŒã«ãããšã欧å·é£åã®ççŽ æåºéã«é¢ããããŒã¿ã衚瀺ãããŸãã
- æ±åã¢ãžã¢ãŸã§ã¹ã¯ããŒã«ãããšãæµ·é¢äžæã沿岞ã³ãã¥ããã£ã«äžãã圱é¿ã匷調ãããŸãã
- ã¢ããªã«ãŸã§ã¹ã¯ããŒã«ãããšãæ°Žäžè¶³ãšç æŒ åã®èª²é¡ã瀺ãããŸãã
ãã®ã¢ãããŒãã«ããããŠãŒã¶ãŒã¯ããŒã«ã©ã€ãºãããèŠç¹ãéããŠã°ããŒãã«ãªåé¡ãæ¢ãããšãã§ããæ å ±ãããé¢é£æ§ãé«ããé åçãªãã®ã«ãªããŸãã
çµè«
CSS Animation Rangeãç¹ã«ã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³å¶åŸ¡ã¯ãé åçã§ã€ã³ã¿ã©ã¯ãã£ããªãŠã§ãäœéšãåµé ããããã®å¯èœæ§ã®äžçãåãéããŸããåºæ¬çãªæŠå¿µãçè§£ããé«åºŠãªãã¯ããã¯ãç¿åŸãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãã¹ã¯ããŒã«äœçœ®ã掻çšããŠãŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã«çŽæ¥å¿çããé åçãªãšãã§ã¯ããäœæã§ããŸãã
ããŸããŸãªã¢ãã¡ãŒã·ã§ã³æè¡ã詊ãã人æ°ã®ã©ã€ãã©ãªãæ¢æ±ããåžžã«ããã©ãŒãã³ã¹ãšã¢ã¯ã»ã·ããªãã£ãåªå ããŠãã°ããŒãã«ãªèŠèŽè ã«ã¹ã ãŒãºã§å æ¬çãªãŠãŒã¶ãŒäœéšãæäŸããŠãã ãããã¹ã¯ããŒã«ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã®åãæŽ»çšãããŠã§ããµã€ããéçãªããŒãžããåçã§ã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒãªãŒããªã³ã°ãã©ãããã©ãŒã ãžãšå€é©ãããŸãããã