在CSS中,当使用悬停转换时,是否可以通过第三种颜色进行转换?

在CSS中,当使用悬停转换时,是否可以通过第三种颜色进行转换?,css,animation,keyframe,Css,Animation,Keyframe,我有一个元素,在静止状态下是红色的,当用户将光标悬停在它上面时是绿色的。我已将其设置为便于0.4s的转换 我不希望颜色从红色直接过渡到绿色,而是希望它在中间点穿过黄色。因此,当用户将鼠标移到它上面时,它会在一个平滑的过渡中从红色变为黄色再变为绿色。这可能吗 这是我当前的代码 .element { background-color: red; -webkit-transition: all 0.4s ease; transition: all 0.4s ease; } .e

我有一个元素,在静止状态下是红色的,当用户将光标悬停在它上面时是绿色的。我已将其设置为便于
0.4s
的转换

我不希望颜色从红色直接过渡到绿色,而是希望它在中间点穿过黄色。因此,当用户将鼠标移到它上面时,它会在一个平滑的过渡中从红色变为黄色再变为绿色。这可能吗

这是我当前的代码

.element {
    background-color: red;
    -webkit-transition: all 0.4s ease;
    transition: all 0.4s ease;
}
.element:hover {
    background-color: green;
}

您可以使用CSS
@keyframes
动画语法

@keyframes animate-color {
  0%   { color: red; }
  50%   { color: yellow; }
  100% { color: green; }
}

element:hover {
   animation: animate-color 0.4s forwards; 
}
更改
0.4s
值以控制动画的运行速度

下面是一个使用
-webkit动画
@-webkit关键帧的
Chrome
示例:

确保涵盖所有浏览器的可能性,因为
Chrome
Firefox
internetexplorer
Opera
的语法不同

以下是有关在CSS3中配置动画的更多信息,您可以控制诸如
动画延迟
动画方向
,等等


您可以使用CSS
@keyframes
动画语法

@keyframes animate-color {
  0%   { color: red; }
  50%   { color: yellow; }
  100% { color: green; }
}

element:hover {
   animation: animate-color 0.4s forwards; 
}
更改
0.4s
值以控制动画的运行速度

下面是一个使用
-webkit动画
@-webkit关键帧的
Chrome
示例:

确保涵盖所有浏览器的可能性,因为
Chrome
Firefox
internetexplorer
Opera
的语法不同

以下是有关在CSS3中配置动画的更多信息,您可以控制诸如
动画延迟
动画方向
,等等


您可以为此使用关键帧:

.element{
背景色:红色;
高度:300px;
宽度:300px;
}
.element:悬停{
-webkit动画:更改颜色0.4s向前;
动画:向前更改颜色0.4s;
}
@-webkit关键帧更改颜色{
0%{背景:红色;}
50%{背景:黄色}
100%{背景:绿色}
}
@关键帧改变颜色{
0%{背景:红色;}
50%{背景:黄色}
100%{背景:绿色}
}

您可以为此使用关键帧:

.element{
背景色:红色;
高度:300px;
宽度:300px;
}
.element:悬停{
-webkit动画:更改颜色0.4s向前;
动画:向前更改颜色0.4s;
}
@-webkit关键帧更改颜色{
0%{背景:红色;}
50%{背景:黄色}
100%{背景:绿色}
}
@关键帧改变颜色{
0%{背景:红色;}
50%{背景:黄色}
100%{背景:绿色}
}

另一种选择是,如果您不能使用
@关键帧
(尽管我不明白为什么不能),可以使用伪元素作为中间颜色。您只需使用
转换延迟
控制转换延迟:

.element{
宽度:100px;
高度:100px;
背景色:红色;
-webkit过渡:所有0.4s易用性;
过渡:所有0.4s缓解;
位置:相对位置;
-webkit转换延迟:0.4s;
过渡延迟:0.4s;
}
.要素:之前{
位置:绝对位置;
宽度:100%;
身高:100%;
内容:“;
背景:绿色;
-webkit过渡:所有0.4s易用性;
过渡:所有0.4s缓解;
不透明度:0;
-webkit转换延迟:0秒;
转换延迟:0s;
}
.element:悬停:之前{
不透明度:1;
-webkit转换延迟:0.4s;
过渡延迟:0.4s;
}
.元素:悬停{
背景颜色:黄色;
-webkit转换延迟:0秒;
转换延迟:0s;
}

另一种选择是,如果您不能使用
@关键帧
(尽管我不明白为什么不能),可以使用伪元素作为中间颜色。您只需使用
转换延迟
控制转换延迟:

.element{
宽度:100px;
高度:100px;
背景色:红色;
-webkit过渡:所有0.4s易用性;
过渡:所有0.4s缓解;
位置:相对位置;
-webkit转换延迟:0.4s;
过渡延迟:0.4s;
}
.要素:之前{
位置:绝对位置;
宽度:100%;
身高:100%;
内容:“;
背景:绿色;
-webkit过渡:所有0.4s易用性;
过渡:所有0.4s缓解;
不透明度:0;
-webkit转换延迟:0秒;
转换延迟:0s;
}
.element:悬停:之前{
不透明度:1;
-webkit转换延迟:0.4s;
过渡延迟:0.4s;
}
.元素:悬停{
背景颜色:黄色;
-webkit转换延迟:0秒;
转换延迟:0s;
}

这实际上相当聪明:P+1这实际上相当聪明:P+1