在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