<easing-function>
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
* Some parts of this feature may have varying levels of support.
<easing-function> 㯠CSS ã®ãã¼ã¿åã§ãå¤ãå¤åããå²åãè¨è¿°ããæ°å¦çãªé¢æ°ã表ãã¾ãã
ãã® 2 ã¤ã®å¤ã®éã®é·ç§»ã¯æ§ã ãªå½¢ã§é©ç¨ãããå¯è½æ§ãããã¾ããã¢ãã¡ã¼ã·ã§ã³ä¸ã«å¤ãå¤åããéããè¨è¿°ããããã«ä½¿ç¨ããããã¨ãããã¾ããããã«ããããã®éãã¢ãã¡ã¼ã·ã§ã³ã®é度ãå¤åããããã¨ãã§ãã¾ããã¤ã¼ã¸ã³ã°é¢æ°ã¯ãCSS ã®ãã©ã³ã¸ã·ã§ã³ããã³ã¢ãã¡ã¼ã·ã§ã³ã®ããããã£ã§æå®ãããã¨ãã§ãã¾ãã
æ§æ
/* ãã¼ã¯ã¼ãã«ããç·å½¢ã¤ã¼ã¸ã³ã°é¢æ° */
linear /* linear(0, 1) */
/* ã«ã¹ã¿ã ç·å½¢ã¤ã¼ã¸ã³ã°é¢æ° */
linear(0, 0.25, 1)
linear(0, 0.25 75%, 1)
/* ãã¼ã¯ã¼ã 3 次ãã¸ã§ã¤ã¼ã¸ã³ã°é¢æ° */
ease /* cubic-bezier(0.25, 0.1, 0.25, 1) */
ease-in /* cubic-bezier(0.42, 0, 1, 1) */
ease-out /* cubic-bezier(0, 0, 0.58, 1) */
ease-in-out /* cubic-bezier(0.42, 0, 0.58, 1) */
/* ã«ã¹ã¿ã 3 次ãã¸ã§ã¤ã¼ã¸ã³ã°é¢æ° */
cubic-bezier(0.25, 0.1, 0.25, 1)
/* ãã¼ã¯ã¼ã段éã¤ã¼ã¸ã³ã°é¢æ° */
step-start /* steps(1, jump-start) */
step-end /* steps(1, jump-end) */
/* ã«ã¹ã¿ã 段éã¤ã¼ã¸ã³ã°é¢æ° */
steps(4, end)
steps(10, jump-both)
å¤
<easing-function> ã¯ä»¥ä¸ã®åã®ãã¡ã®ããããã§ãã
<linear-easing-function>-
ä¸å®ã®é度ã§é²è¡ããé·ç§»ã使ãã¾ãããã®é¢æ°ã¯ã次ã®ããããã使ç¨ãã¦æå®ãããã¨ãã§ãã¾ãã
linear-
ä¸å®ã®è£éçã§ãæéãéãã¦é²è¡çã«å¤åã®ãªããã®ãæå®ãã¾ãï¼ã¤ã¾ããå éãæ¸éã¯ããã¾ããï¼ã ãã®ãã¼ã¯ã¼ãå¤ã¯
linear(0, 1)ã¨åçã§ãã ããã¯cubic-bezier(0, 0, 1, 1)ã¨è¡¨ããã¨ãã§ãã¾ããã¡ã¢:
linearãã¼ã¯ã¼ãã¯å¸¸ã«linear(0, 1)ã¨ãã¦è§£éããã¾ããããã§é¢æ°linear(0, 1)ã¯linear(0 0%, 1 100%)ã¨è§£éããã¾ãã linear()-
è¤æ°ã®é²è¡ã®ç¹ã
<number>å¤ã§å®ç¾©ãããªãã·ã§ã³ã®<percentage>å¤ã§ãã®ã¿ã¤ãã³ã°ãå¶å¾¡ãã¾ãã
<cubic-bezier-easing-function>-
å¤åãå¯å¤ã®å²åã§è¡ãã¹ã ã¼ãºãªé·ç§»ã使ãã¾ãããã®é¢æ°ã¯æ¬¡ã®ããããã§æå®ãããã¨ãã§ãã¾ãã
ease-
ã¤ã¼ã¸ã³ã°é¢æ°
cubic-bezier(0.25, 0.1, 0.25, 1)ã表ãã¾ãã ããã¯è£éããã£ããå§ã¾ããæ¥æ¿ã«å éããçµããã«åãã£ã¦å¾ã ã«é ããªããã¨ã示ãã¾ãã ããã¯ease-in-outã¨ä¼¼ã¦ãã¾ãããå§ãã®ãã¡ã¯ããæ¥æ¿ã«å éããã¾ãã ease-in-
ã¤ã¼ã¸ã³ã°é¢æ°
cubic-bezier(0.42, 0, 1, 1)ã表ãã¾ãã ããã¯è£éããã£ããå§ã¾ãããã®å¾æ¬¡ç¬¬ã«å éãã¦ãããæçµç¶æ ã«éããã¨ã¢ãã¡ã¼ã·ã§ã³ã¯çªç¶åæ¢ãã¾ãã ease-out-
ã¤ã¼ã¸ã³ã°é¢æ°
cubic-bezier(0, 0, 0.58, 1)ã表ãã¾ãã è£éãæ¥éã«å§ã¾ããæçµç¶æ ã«ããã¦æ¬¡ç¬¬ã«æ¸éãã¦ãããã¨ã示ãã¾ãã ease-in-out-
ã¤ã¼ã¸ã³ã°é¢æ°
cubic-bezier(0.42, 0.0, 0.58, 1.0)ã表ãã¾ãã ããã¯è£éããã£ããå§ã¾ããå éããçµããã«åãã£ã¦æ¸éãããã¨ã示ãã¾ãã å§ãã¯ease-inãã¼ã¯ã¼ãã®ããã«åä½ããçµããã¯ease-outãã¼ã¯ã¼ãã®ããã«åä½ãã¾ãã cubic-bezier()-
2 ã¤ã®å¶å¾¡ç¹ãæå®ãã 4 ã¤ã®
<number>ãç¨ãã¦ãã«ã¹ã¿ã æ²ç·ãå®ç¾©ãã¾ãã X 座æ¨ã¯[0, 1]ã®ç¯å²ã§ãªããã°ãªãã¾ããã
<step-easing-function>-
ã¢ãã¡ã¼ã·ã§ã³ãçééã®æ°å¤ã«åå²ããæ®µéçãªé·ç§»ã使ãã¾ããããã«ãããã¢ãã¡ã¼ã·ã§ã³ã¯æ»ããã«é·ç§»ããã®ã§ã¯ãªããæ®µéããæ¬¡ã®æ®µéã¸ã¨ã¸ã£ã³ãããããã«ãªãã¾ãã ãã®é¢æ°ã¯ã次ã®ãããããæå®ãããã¨ã§ä½¿ç¨ã§ãã¾ãã
step-start-
ã¤ã¼ã¸ã³ã°é¢æ°
steps(1, jump-start)ã¾ãã¯steps(1, start)ã表ãã¾ãã è£éã¯ããã«æçµç¶æ ã«é·ç§»ããæå¾ã¾ã§ãã®ç¶æ ãç¶æãããã¨ã示ãã¾ãã step-end-
ã¤ã¼ã¸ã³ã°é¢æ°
steps(1, jump-end)ã¾ãã¯steps(1, end)ã表ãã¾ãã è£éã¯ãçµäºããã¾ã§åæç¶æ ã®ã¾ã¾ã§ãçµäºæç¹ã§ç´æ¥æçµç¶æ ã«ã¸ã£ã³ããã¾ãã steps()-
ééã®æ°ãæå®ãã
<integer>ã¨ãã¸ã£ã³ãã®ã¿ã¤ãã³ã°ãå¶å¾¡ãããªãã·ã§ã³ã®ãã¼ã¯ã¼ãã使ç¨ãã¦ãéæ®µç¶ã®æ²ç·ã使ãã¾ãã
形弿æ³
<easing-function> =
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>
<linear-easing-function> =
linear |
<linear()>
<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
<cubic-bezier()>
<step-easing-function> =
step-start |
step-end |
<steps()>
<linear()> =
linear( [ <number> && <percentage>{0,2} ]# )
<cubic-bezier()> =
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )
<steps()> =
steps( <integer> , <step-position>? )
<integer> =
<number-token>
<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end
ä¾
>ã¤ã¼ã¸ã³ã°é¢æ°ã®æ¯è¼
ãã®ä¾ã§ã¯ãæä¾ããã¦ãããã¿ã³ã使ã£ã¦ã¢ãã¡ã¼ã·ã§ã³ãéå§ããã忢ããããããã¨ãã§ããã¡ãã¥ã¼ã鏿ãã¦ã¤ã¼ã¸ã³ã°é¢æ°ããå©ç¨å¯è½ãªãã¼ã¯ã¼ãã«å ãã¦ããã¤ãã® cubic-bezier() ããã³ steps() ã®ãªãã·ã§ã³ã®ä¸ãã鏿ãããã¨ãã§ããããã«ãªã£ã¦ãã¾ãããªãã·ã§ã³ã鏿ããå¾ãæå®ããããã¿ã³ã使ç¨ãã¦ããã©ã³ã¸ã·ã§ã³ãå§ããããæ¢ããããããã¨ãã§ãã¾ãã
HTML
<div>
<div></div>
</div>
<ul>
<li>
<button class="animation-button">ã¢ãã¡ã¼ã·ã§ã³ãéå§</button>
</li>
<li>
<label for="easing-select">ã¤ã¼ã¸ã³ã°é¢æ°ã鏿:</label>
<select id="easing-select">
<option selected>linear</option>
<option>linear(0, 0.5 50%, 1)</option>
<option>ease</option>
<option>ease-in</option>
<option>ease-in-out</option>
<option>ease-out</option>
<option>cubic-bezier(0.1, -0.6, 0.2, 0)</option>
<option>cubic-bezier(0, 1.1, 0.8, 4)</option>
<option>steps(5, end)</option>
<option>steps(3, start)</option>
<option>steps(4)</option>
</select>
</li>
</ul>
CSS
body > div {
position: relative;
height: 100px;
}
div > div {
position: absolute;
width: 50px;
height: 50px;
background-color: blue;
background-image: radial-gradient(
circle at 10px 10px,
rgb(25 255 255 / 80%),
rgb(25 255 255 / 40%)
);
border-radius: 50%;
top: 25px;
animation: 1.5s infinite alternate;
}
@keyframes move-right {
from {
left: 10%;
}
to {
left: 90%;
}
}
li {
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 20px;
}
JavaScript
const selectElem = document.querySelector("select");
const startBtn = document.querySelector("button");
const divElem = document.querySelector("div > div");
startBtn.addEventListener("click", () => {
if (startBtn.textContent === "ã¢ãã¡ã¼ã·ã§ã³ãéå§") {
divElem.style.animationName = "move-right";
startBtn.textContent = "ã¢ãã¡ã¼ã·ã§ã³ã忢";
divElem.style.animationTimingFunction = selectElem.value;
} else {
divElem.style.animationName = "unset";
startBtn.textContent = "ã¢ãã¡ã¼ã·ã§ã³ãéå§";
}
});
selectElem.addEventListener("change", () => {
divElem.style.animationTimingFunction = selectElem.value;
});
çµæ
仿§æ¸
| Specification |
|---|
| CSS Easing Functions Level 1> # easing-functions> |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- CSS ã¤ã¼ã¸ã³ã°é¢æ°ã¢ã¸ã¥ã¼ã«
- CSS ã¢ãã¡ã¼ã·ã§ã³
- CSS ãã©ã³ã¸ã·ã§ã³
linear()easing generator - Jake Archibald- cubic-bezier.com - Lea Verou (2011)