グラデーション遷移は、少しの「ごまかし」で行うことができます。私は間違いなくcssのプロではありません(そして、私はここにいるのは初めてなので、早く私を嫌いにならないでください:D)、1つは不透明度1、もう1つは0のdivを互いに重ねて配置するだけです。(各divは設定されていますさまざまなグラデーション) ホバー時に、不透明度を 1 から 0 に、またはその逆に変更します。
タイミング関数を設定しますが、これらの div は互いの z-index プロパティに配置されますが、残りは行います。(Safari 用に最適化) 初歩的な方法かもしれませんが、これは (驚くほど) 完全に機能します。
#divgradient1
{
z-index:-1;
height:100px;
background: -webkit-linear-gradient(90deg, red, blue);
background: -o-linear-gradient(90deg, red, blue);
background: -moz-linear-gradient(90deg, red, blue);
background: linear-gradient(90deg, red, blue);
opacity:1;
transition:background,opacity,z-index;
-webkit-transition:background,opacity,z-index ;
transition-duration: 1s;
-webkit-transition-duration: 1s;
}
#divgradient1:hover{
z-index:-1;
opacity:0;
transition:background,opacity,z-index;
-webkit-transition:background,opacity,z-index;
transition-duration: 1s;
-webkit-transition-duration: 1s;
}
#divgradient2:hover{
opacity:1;
z-index:2;
background: -webkit-linear-gradient(-90deg, red, blue);
background: linear-gradient(-90deg, red, blue);
transition:background,opacity,z-index;
-webkit-transition:background,opacity,z-index;
transition-duration: 1s;
-webkit-transition-duration: 1s;
}
#divgradient2
{
z-index:1;
opacity:0;
height:100px;
background: -webkit-linear-gradient(-90deg, red, blue);
background: linear-gradient(-90deg, red, blue);
transition:background,opacity,z-index;
-webkit-transition:background,opacity,z-index;
transition-duration: 1s;
-webkit-transition-duration: 1s;
}
そして、それがどうあるべきかのdiv:
<div id="divgradient1" style="position:absolute;width:100px;"></div>
<div id="divgradient2" style="position:absolute;width:100px;"></div>