CSS cubic-bezier() 颿°
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
cubic-bezier() 㯠CSS 颿°ã§ã 3 次ãã¸ã§æ²ç·ã使ç¨ãã¦ã¹ã ã¼ãºãªé·ç§»ã使ãã¾ãã
ã¤ã¼ã¸ã³ã°é¢æ° (<easing-function>) ã¨ãã¦ãè£éã®å§ã¾ãã¨çµãããæ»ããã«ãããã¨ãã§ãã¾ãã
æ§æ
cubic-bezier(0.25, 0.1, 0.25, 1)
cubic-bezier(0.1, -0.6, 0.2, 0)
cubic-bezier(0, 0, 1, 1)
弿°
ãã®é¢æ°ã¯ä»¥ä¸ã® 4 ã¤ã®å¼æ°ãåãåããããã 2 ã¤ã®å¶å¾¡ç¹ã®åº§æ¨ã表ãã¾ãã
<x1>-
<number>ã§ã 1 ã¤ç®ã®å¶å¾¡ç¹ã® X 軸座æ¨ã表ãã¾ãã[0, 1]ã®ç¯å²ã§ããå¿ è¦ãããã¾ãã <y1>-
<number>ã§ã 1 ã¤ç®ã®å¶å¾¡ç¹ã® Y 軸座æ¨ã表ãã¾ãã <x2>-
<number>ã§ã 2 ã¤ç®ã®å¶å¾¡ç¹ã® X 軸座æ¨ã表ãã¾ãã[0, 1]ã®ç¯å²ã§ããå¿ è¦ãããã¾ãã <y2>-
<number>ã§ã 2 ã¤ç®ã®å¶å¾¡ç¹ã® Y 軸座æ¨ã表ãã¾ãã
解説
3 次ã¹ã¸ã§é¢æ° (cubic Bézier function) ã¯ããã°ãã°ãã¹ã ã¼ãºãã¤ã¼ã¸ã³ã°é¢æ°ã¨å¼ã°ãããã®ã§ãå
¥åã®é²è¡ç¶æ³ãåºåã®é²è¡ç¶æ³ã«å²ãå½ã¦ã¾ãã両æ¹ã¨ã <number> ã¨ãã¦è¡¨ç¾ããã 0.0 ã¯åæç¶æ
ãã 1.0 ã¯æçµç¶æ
ã表ãã¾ãã
3 次ãã¸ã§æ²ç·ãç¡å¹ãªå ´åã CSS ã¯ããããã£å
¨ä½ãç¡è¦ãã¾ãã
3 次ã¹ã¸ã§æ²ç·ã¯ãP0ãP1ãP2ãP3 ã® 4 ç¹ã§å®ç¾©ããã¾ãã P0 㨠P3 ã¯ãæ²ç·ã®å§ç¹ã¨çµç¹ã表ãã¾ãã CSS ã§ã¯ãéå§ç¹ P0 㯠(0, 0) ã«ãçµäºç¹ P3 㯠(1, 1) ã«åºå®ããã¦ãã¾ãã䏿¹ãä¸éç¹ P1 㨠P2 ã¯ã颿°ã®å¼æ° (<x1>, <y1>) ããã³ (<x2>, <y2>) ã«ãã£ã¦ããããå®ç¾©ããã¾ãã X 軸ã¯å
¥åã®é²è¡ç¶æ³ã表ãã Y 軸ã¯åºåã®é²è¡ç¶æ³ã表ãã¾ãã
ãã¹ã¦ã® 3 次ãã¸ã§æ²ç·ãã¤ã¼ã¸ã³ã°é¢æ°ã¨ãã¦é©åã§ããã¨ã¯éãã¾ããããã¹ã¦ã®æ²ç·ãæ°å¦çãªé¢æ°ã§ãããããªãã¡æå®ããã X 軸座æ¨ã«å¯¾ã㦠0 åã¾ã㯠1 åã®å¤ãããã¨ã¯éããªãããã§ãã P0 㨠P3 ã CSS ã®å®ç¾©éãã«åºå®ããã¦ããã°ã 3 次ãã¸ã§æ²ç·ã¯é¢æ°ã«ãªãã¾ãã®ã§ãP1 㨠P2 ã® x 軸座æ¨ãã©ã¡ãã [0, 1] ã®ç¯å²å ã«ããå ´åã¯æå¹ã§ãã
3 次ãã¸ã§æ²ç·ã® P1 ã¾ã㯠P2 ã®åº§æ¨ã [0, 1] ã®ç¯å²å¤ã«ãªã£ãå ´åã¯ãæçµç¶æ
ãããããã«é ãã¾ã§å¤ãç§»åãããã®å¾å
ã«æ»ãå¯è½æ§ãããã¾ããã¢ãã¡ã¼ã·ã§ã³ã§ã¯ãããã¯ä¸ç¨®ã®ãè·³ãè¿ãã广ãçã¿åºãã¾ãã
ãã ããããããã£ã«ãã£ã¦ã¯ãåºåã許容ç¯å²å¤ã«ãªãã¨å¶éãããããã®ãããã¾ããä¾ãã°ã rgb() ã§è²æåã 255 ãã大ãããªã£ãã 0 ããå°ãããªã£ããããã¨ãæãè¿ã許容å¤ï¼ãããã 255 㨠0ï¼ã«ã¯ãªããããã¾ãã cubic-bezier() ã®å¤ã®ä¸ã«ã¯ããã®æ§è³ªã示ããã®ãããã¾ãã
形弿æ³
<cubic-bezier()> =
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )
ä¾
>è·³ãè¿ã广
ãã®ä¾ã§ã¯ãæåã®ä½ç½®ãããã©ã³ã¸ã·ã§ã³ãè¡ãããã¨ã赤ããã¼ã«ãããã¯ã¹ããé£ã³åºãã¾ããããã¯ã P2 å¤ã® 1 ã¤ã§ãã 2.3 ã [0, 1] ã®ç¯å²ãè¶
ãã¦ããããã§ãã
span {
transition: translate 0.3s cubic-bezier(0.3, 0.8, 0.3, 2.3);
}
cubic-bezier() 颿°ã®ä½¿ç¨
以ä¸ã® 3 次ãã¸ã§æ²ç·ã¯ CSS ã§ä½¿ç¨ã§ãã¾ãã
/* [0,1] ã®ç¯å²ã® 4 ã¤ã® <number> ãæã¤æ£è¦ã®ãã¸ã§æ²ç· */
cubic-bezier(0.1, 0.7, 1.0, 0.1)
/* <integer> 㯠<number> ã§ãããããã <integer> ãæå¹ */
cubic-bezier(0, 0, 1, 1)
/* 縦軸ã§ã¯è² ã®å¤ãæå¹ã§ãè·³ãè¿ã广ãçã¿åºã */
cubic-bezier(0.1, -0.6, 0.2, 0)
/* 縦軸ã§ã¯ 1.0 ãã大ããªå¤ãæå¹ */
cubic-bezier(0, 1.1, 0.8, 4)
以ä¸ã® 3 次ãã¸ã§æ²ç·ã¯ç¡å¹ã§ãã
/* 弿°ã¯æ°å¤ã§ãªããã°ãªããªã */
cubic-bezier(0.1, red, 1.0, green)
/* X 座æ¨ã¯ [0, 1] ã®ç¯å²ã§ãªããã°ãªããªã */
cubic-bezier(2.45, 0.6, 4, 0.1)
/* ã¡ããã© 4 ã¤ã®å¼æ°ããªããã°ãªããªã */
cubic-bezier(0.3, 2.1)
/* X 座æ¨ã¯ [0, 1] ã®ç¯å²ã§ãªããã°ãªããªã */
cubic-bezier(-1.9, 0.3, -0.2, 2.1)
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Easing Functions Level 1 > # cubic-bezier-easing-functions > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- ãã®ä»ã®ã¤ã¼ã¸ã³ã°é¢æ°:
linear()ã¨steps() - CSS ã¤ã¼ã¸ã³ã°é¢æ°ã¢ã¸ã¥ã¼ã«
- cubic-bezier.com - Lea Verou