通过 Javascript 更改 CSS 个关键帧
Changing CSS keyframes through Javascript
我想知道是否可以调整 CSS 关键帧的内容,因为我在网上看到了各种建议,但其中 none 似乎对我有用。
这些是我拥有的关键帧:
@keyframes changeColor {
0% {
color: yellow;
}
50% {
color: red;
}
}
@-moz-keyframes changeColor {
0% {
color: yellow;
}
50% {
color: red;
}
}
@-webkit-keyframes changeColor {
0% {
color: yellow;
}
50% {
color: red;
}
}
@-o-keyframes changeColor {
0%{
color: yellow;
}
50% {
color: red;
}
}
我希望可以通过Javascript调整上述每个关键帧的颜色属性,让颜色根据Javascript传递的值变化。这有可能吗?
谢谢
使用 jQuery 的动画关键帧可以使用 jQuery.Keyframes
var supportedFlag = $.keyframe.isSupported();
$.keyframe.define([{
name: 'roll-clockwise',
'0%': {
'color' : 'green'
},
'100%': {
'color' : 'yellow'
}
}
]);
$("p").playKeyframe({
name: 'changeColor',
duration: 2000
});
有关详细信息,请参阅此 link。
https://github.com/Keyframes/jQuery.Keyframes
这在 Javascript 中可能会更好,唯一一致的 CSS 属性应该始终在元素上,即过渡属性:例如 transition: color 0.5s ease-out
。
然后在 javascript 中,您可以 setInterval
以某种方式在颜色之间交替:
// Note that this is psuedocode and will need to be refactored slightly to better fit your own code
// variables storing color values
var colorA = 'red',
colorB = 'blue';
//store element you are changing in a variable
const ELEMENT = document.querySelector('element');
function changeColors() {
// store current color value of ELEMENT in a variable called currentColor
let currentColor = ELEMENT.style.color;
// if color is currently A, switch to B
if (currentColor == colorA) {
ELEMENT.style.color = colorB;
}
// else, switch to A
else {
ELEMENT.style.color = colorA;
}
}
// call set interval to alternate colors with same timing value as set in transition attribute in CSS
setInterval(changeColors, 500);
这只是在 javascript 中可以完成的一种方式,但这里的主要收获是,归根结底,在 javascript 中完成这一切可能更可行] 而不是使用 CSS 动画。
我想知道是否可以调整 CSS 关键帧的内容,因为我在网上看到了各种建议,但其中 none 似乎对我有用。
这些是我拥有的关键帧:
@keyframes changeColor {
0% {
color: yellow;
}
50% {
color: red;
}
}
@-moz-keyframes changeColor {
0% {
color: yellow;
}
50% {
color: red;
}
}
@-webkit-keyframes changeColor {
0% {
color: yellow;
}
50% {
color: red;
}
}
@-o-keyframes changeColor {
0%{
color: yellow;
}
50% {
color: red;
}
}
我希望可以通过Javascript调整上述每个关键帧的颜色属性,让颜色根据Javascript传递的值变化。这有可能吗?
谢谢
使用 jQuery 的动画关键帧可以使用 jQuery.Keyframes
var supportedFlag = $.keyframe.isSupported();
$.keyframe.define([{
name: 'roll-clockwise',
'0%': {
'color' : 'green'
},
'100%': {
'color' : 'yellow'
}
}
]);
$("p").playKeyframe({
name: 'changeColor',
duration: 2000
});
有关详细信息,请参阅此 link。 https://github.com/Keyframes/jQuery.Keyframes
这在 Javascript 中可能会更好,唯一一致的 CSS 属性应该始终在元素上,即过渡属性:例如 transition: color 0.5s ease-out
。
然后在 javascript 中,您可以 setInterval
以某种方式在颜色之间交替:
// Note that this is psuedocode and will need to be refactored slightly to better fit your own code
// variables storing color values
var colorA = 'red',
colorB = 'blue';
//store element you are changing in a variable
const ELEMENT = document.querySelector('element');
function changeColors() {
// store current color value of ELEMENT in a variable called currentColor
let currentColor = ELEMENT.style.color;
// if color is currently A, switch to B
if (currentColor == colorA) {
ELEMENT.style.color = colorB;
}
// else, switch to A
else {
ELEMENT.style.color = colorA;
}
}
// call set interval to alternate colors with same timing value as set in transition attribute in CSS
setInterval(changeColors, 500);
这只是在 javascript 中可以完成的一种方式,但这里的主要收获是,归根结底,在 javascript 中完成这一切可能更可行] 而不是使用 CSS 动画。