hover時に背景画変化するアニメーションを実装

このQ&Aのポイント
  • .animation-back-colorクラスを使用して、hover時に背景画が変化するアニメーションを実装したいが、上手くいかない。
  • animation-back-colorクラスにanimationプロパティを追加し、hover時に背景色が切り替わるように設定したが、うまく機能しない。
  • マルチクラスでホバー前の背景色を指定している場合、hoverは成功しないと考えられる。同じ要素に別のクラスがあり、始まりの色味がある場合は仕様上不可と思われる。
回答を見る
  • ベストアンサー

hover時に背景画変化するアニメーションを実装

hover時に背景画変化するアニメーションを実装したいのですがうまくいきません。 1 .animation-back-color { background: var(--color-secondly--gradient); animation: animation-back-color 8s infinite alternate!important; } .animation-back-color:hover { background-color: #FF7C7C; } 2 .animation-back-color { background: var(--color-secondly--gradient); animation: animation-back-color 4s infinite alternate!important; } @keyframes animation-back-color:hover { 0% { background-color: #FF7C7C; } 50% { background-color: #FFFF6B; } 100% { background-color: #FF9C6C; } } 上記両方ともうまくいきません。 またマルチクラスでホバー前の背景色が別クラスで指定してある場合、hoverは成功しないと考えてよいでしょうか? そのあたりは融通がきかず、hover前の色とと後の色クラス名は同じクラス名出ないと、同じ要素に別クラスがあり、 そこに始まりの色味があるという事は仕様上不可でしょうか?

  • CSS
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.2

No.1のコメントに対して回答します。 hover時に通常時つけているアニメーションをクリアしてあげるとちゃんと動くと思います。 .animation-back-color:hover{  background-color: #FF7C7C;  animation: none; }

okweb12345
質問者

お礼

1 .animation-back-color { background: var(--color-secondly--gradient); animation: animation-back-color 8s infinite alternate!important; } .animation-back-color:hover { background-color: #FF7C7C; } の件でしょうか? つまりアニメーションしているボタンの色をホバー時に代えたいならアニメーションをhover時に止めてかつ色を代えないとうまくいかないという事で良いでしょうか? 2のアニメーション~別のアニメーションへというやり方は不可能なのですかね。・

その他の回答 (2)

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.3

No.1の補足コメント、およびNo.2のお礼コメントに対して回答します。 No.1の補足コメント>> グラデーション背景をhover時にtransitionでアニメーションさせることはできません。 どのようなアニメーションをしたいかに拠りますが、background-sizeを大きめに設定して位置をずらす、透明度を変化させる等であれば可能です。 No.2のお礼コメント>> >つまりアニメーションしているボタンの色をホバー時に代えたいならアニメーションをhover時に止めてかつ色を代えないとうまくいかないという事で良いでしょうか? そうです。 >2のアニメーション~別のアニメーションへというやり方は不可能なのですかね。 そのような動作をさせたいならhover時のanimationにnoneではなくアニメーション名などを設定すれことで可能です。

okweb12345
質問者

お礼

やはりうまくいきませんでした。

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

下記で可能です。hoverをつけるのはkeyframesではなくクラス名の方です。 .animation-back-color:hover{  background-color: var(--color-secondly--gradient);  animation: animation-back-color 4s infinite alternate; } @keyframes animation-back-color{  0% { background-color: #FF7C7C; }  50% { background-color: #FFFF6B; }  100% { background-color: #FF9C6C; } } またマルチクラスでホバー前の背景色が別クラスで指定してあってもhoverは成功します。hover前の色と後の色は別のクラス名であっても指定することができるため、そこに始まりの色味があることも仕様上可能です。

okweb12345
質問者

お礼

情報不足ですいません。おっしゃる通り始めのソースであれば可能なのですが、実は通常の状態に下記のアニメーションがついており、これが原因の可能性が高いです、 このような場合、アニメーションがついているボタンに色を変えるhover効果を付けることは不可能なのでしょうか? .animation-color { animation: animation-color 1s infinite alternate; } @keyframes animation-color { 0% { background-color: #FF7C; } 50% { background-color: #FF6B; } 100% { background-color: #FC6C; } }

okweb12345
質問者

補足

アニメーションの方は別途考えている最中ですが、アニメーションでないグラデーションのホバージの変化もうまくいきません。 .p-gradient-back-color { background: var(--color--gradient); /* 1秒かけて背景色をアニメーションさせる */ transition: all 15s; } .p-gradient-back-color:hover { background: var(--color--gradient2); } のようにしたのですが、もしかしてグラデーションの場合hoverで変化させることは出来るものの数秒かけてゆっくり変化させることは不可能なのでしょうか?

関連するQ&A

  • CSSでテーブルのセルが、a:hover で背景を変わるようにしましたが、枠がちらついてしまいます。

    テーブルのセルに、リンクのあるテキストをはって、 a:hoverで背景が変わるようにしたのですが、 hoverの状態でセルの外側だけ背景が変わらずに、hover状態でないときの背景がほんの少しちらついてしまいます。 table .a{border: 0px;background-color:red;;padding: 2px;width: 150px;} table .a a:hover{border:0px;padding: 2px;width: 150px;background-color:orange;} のようにすると、 hover状態で、セルの枠が、ほんの少しredのままになってしまいます。 http://www.smashingmagazine.com/2008/08/13/top-10-css-table-designs/ の 3.BOX の例のように、hover状態できれいに背景の色が変わるようにしたいんですが、どう直せばいいでしょうか。よろしくおねがいいたします。

    • ベストアンサー
    • HTML
  • a:hoverで背景色を指定すると文字が消える!

    cssとHTMLを下記のように書きました。 a:hoverで背景色が白から赤へ、文字色が黒から白に変わるようにしたつもりでしたが、 実際にマウスカーソルを乗せると、背景色は赤になりましたが、 なんと文字は消えてしまったのです!! 文字が見えるようにするには、どうしたら良いか教えて下さいませ。 あと、変な所があればご教示いただけると嬉しいです。 css --------------------------------- .box { display: table; } .box-cell { float: left; display: table-cell; position: relative; color: #000; background-color: #fff; } .box-cell:after { clear: both; } .box-cell a { display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0; } .box-cell a:hover { color: #fff; background-color: #ff0000; } --------------------------------- HTML --------------------------------- <div class="box"> <div class="box-cell"> あいうえお<br /> かきくけこ<a href="http://www.yahoo.co.jp/"></a> </div> <div class="box-cell"> あいうえお<br /> かきくけこ<a href="http://www.yahoo.co.jp/"></a> </div> </div> ---------------------------------

    • ベストアンサー
    • CSS
  • 閲覧時に背景色、文字色をcssで変更したい

    WindowsXP、Firefox3を使用しています。 白背景に黒文字という一般的なウェブページの配色はまぶしいので、 Stylishというアドオンを使ってcssで背景色、文字色を変更しようと思い、 以下のようなcssを作成しました。 ------------------------ここから body { color: #696969 !important; background-color: #dcdcdc !important; background-image:none !important; } td { color: #343434 !important; background-color: #d3d3d3 !important; background-image:none !important; } ------------------------ここまで しかし、これだと色が変更できない領域があります。 例えば、 http://www.yahoo.co.jp/  ……一番下?の背景色しか変わりません http://www.4gamer.net/   ……一切変化しません http://www.flay.com/    ……背景色は変わりますが、文字色が変わりません アドオンを使わず、userContent.cssを使う方法にしても結果は同じようです。 どのウェブページでも背景色と文字色を変更するには、どう記述すればよいのでしょうか?

  • a:hover時のみ、divの背景を変えたい

    index.htmlで、ロゴにオンマウスした際に、ページの背景の透明度を変えたいのですが、どう記述していいか分からず困っております。 イメージとして、まずロゴは縦横300pxくらいの大きさで、上下左右センタリングされた位置にあるのですが、ロゴにオンマウスした時に、画面いっぱいの背景が半透明から不透明に変わる…といったものを作りたいです(画像添付しましたが、分かりにくかったら申し訳ないです)。 同じ要領で、ごく簡単に書いたタグがこちら(↓)なのですが、 <html> <head> <style type="text/css"> div{ background-color: #CCCCCC; width: 100px; height: 100px; opacity: 0.5; filter: alpha( opacity=50 ); /* IE */ } a:hover{ opacity: 1; filter: alpha( opacity=100 ); /* IE */ } </style> </head> <body> <div><a>リンク</a></div> </body> </html> div内のa領域にオンマウスした時にだけ、背景の透明度を変えたいのですが、動きません…。しかし、上記の例ですと、たとえ動いてもこれではa要素の背景の透明度しか変わらない気もします。 また、div :hoverは、div領域にオンマウスした時から背景が変わってしまうので、こちらは避けたいです。 今回は子要素から親要素の変更を指定する際の問題だと思ったので、セレクタを組み合わせて色々試したり、検索等もしましたが、どうしても分からないので質問させてください。

    • ベストアンサー
    • CSS
  • SASSで簡潔に書く方法

    現在このような形で一つずつ打っています。 /* news */ .column .news .tag { color:$orange !important; } .column .news .target { background-color:lighten( $orange, 25% ); } .column .news.hover h2 a, .column .news:hover h2 a { background-color:$orange !important; } /* information */ .column .service .tag { color:$accent !important; } .column .service .target { background-color:lighten( $accent, 25% ); } .column .service.hover h2 a, .column .service:hover h2 a { background-color:$accent !important; } /* child essay */ .column .essay .tag { color:$red !important; } .column .essay .target { background-color:lighten( $red, 25% ); } .column .essay.hover h2 a, .column .essay:hover h2 a { background-color:$red !important; } /* child dialy */ .column .dialy .tag { color:$water !important; } .column .dialy .target { background-color:lighten( $water, 25% ); } .column .dialy.hover h2 a, .column .dialy:hover h2 a { background-color:$water !important; } /* child book */ .column .book .tag { color:$pink !important; } .column .book .target { background-color:lighten( $pink, 25% ); } .column .book.hover h2 a, .column .book:hover h2 a { background-color:$pink !important; } /* child web */ .column .web .tag { color:$mint !important; } .column .web .target { background-color:lighten( $mint, 25% ); } .column .web.hover h2 a, .column .web:hover h2 a { background-color:$mint !important; } /* child graphic */ .column .graphic .tag { color:$viridian !important; } .column .graphic .target { background-color:lighten( $viridian, 25% ); } .column .graphic.hover h2 a, .column .graphic:hover h2 a { background-color:$viridian !important; } これを@eachを使ってまとめて指定することは可能ですか? @each $category in .news, .service, .essay, .dialy, .book, .web, .graphic, '' { .column {$category} ............ } よろしくお願い致します。

    • ベストアンサー
    • CSS
  • リンクポイント時に背景色をつけてサクサク表示させたいのですがうまくいきません

    リンクポイント時に背景色をつけるタグ <STYLE><!-- A:HOVER{background-color : #fecd0c;}--></STYLE> を使ってHPを作ってますが、表示したところ素早いカーソルの動きに対応しきれず、サクサクリンクの背景色が表示されません。 あるページでサクサク表示されるのですが、ページソースをみても特にタグの違いがわからずなぜここだけサクサク動いているのかわかりません。 ちなみにサクサク動いている方がページのサイズは重いのですが・・・ どうか改善策をご教授ください。宜しくお願い致します。

    • ベストアンサー
    • HTML
  • CSSで背景にグラデーションをかけたいけどできません。

    filter: progid:DXImageTransform.Microsoft.Gradient (StartColorStr=#000099, EndColorStr=#ffffff, GradientType=0) これをcssファイルのbodyのところに下記のように 付け加えたのですが反映されません。 BODY{ font-style:normal font-weight:normal font-size:small text-align:center;/ color:#000000 filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr=#000099, EndColorStr=#ffffff, GradientType=0) } 元は背景色と背景画像が指定してあった部分 background-color:#ffffff;/ background-image:url(./img/back.gif);/ を消してそこに入れたのですがそれは問題ないですよね? 教えてください、お願いします。

    • ベストアンサー
    • CSS
  • ユーザースタイルシートで文字色、背景色が変更できない

    以前も同様の質問をしたのですが、題名と内容がわかりづらかったのでもう一度質問させていただきます。 Internet Explorer7、Firefox3でユーザースタイルシートを使い、ウェブブラウジング中に文字色と背景色を変更したいと思います(WindowsXP sp2です)。 それで以下のようなcssを書きました。 ----------------------ここから html head+body { color: #464646 !important; color: #464646 !important; color: #464646 !important; background-color: #cdcdcd !important; background-color: #cdcdcd !important; background-color: #cdcdcd !important; background-image:none !important; background-image:none !important; background-image:none !important; } td { color: #464646 !important; color: #464646 !important; color: #464646 !important; background-color: #cdcdcd !important; background-color: #cdcdcd !important; background-color: #cdcdcd !important; background-image:none !important; background-image:none !important; background-image:none !important; } ----------------------ここまで これをユーザースタイルシートとして指定すると、色が変更できる場合もありますが、 サイトよっては一部の色が変更されません。 (例) 大部分の色が変更できるサイト http://www.kuronekoyamato.co.jp/ 一部しか色が変更できないサイト http://www.yahoo.co.jp/ http://www.4gamer.net/ 結果はIEとFirefoxで少し違いますが、色が完全に変更できない点は同じです。 色を完全に変更するには、どういう記述をすればよいのでしょうか? それとも、ユーザースタイルシートではそういうことはできないのでしょうか?

    • ベストアンサー
    • HTML
  • ブログの背景 グラデーションにするには(HTML)

    gradient関数みたいなものを使って body , #sub h2 span , dl#pagetop-link a { background: -moz-linear-gradient(rgb(113, 183, 198) 0%, rgb(255, 255, 255) 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(113, 183, 198)), color-stop(100%, rgb(255, 255, 255))); background-attachment:fixed } によってブログの背景にグラデーションをつけることができました。 しかしこの関数はブラウザによっては機能しないようです。 別のブラウザでも機能するようにするにはどうすればいいでしょうか?

  • CSS グラデーションが反映されない

    DreamWeaverでサイトを制作しています。 下記のように書いてもブラウザ上にグラデーションが反映されないのですが、 どういった原因が考えられるのでしょうか? #header{ color:#fff; background-color:#F60;   moz-box-shadow: 0 0 .05em rgba(0,0,0,0.4); -webkit-box-shadow: 0 0 .05em rgba(0,0,0,0.4); /* For WebKit (Safari, Google Chrome etc) */  background:-webkit- gradient(linear, top, bottom, from(#f60), color-stop(0.3,#C30), to(#fff));  /* For Mozilla/Gecko (Firefox etc) */  background: -moz- linear-gradient(-45deg, #f60, #fff);  /* For Internet Explorer 5.5 - 7 */  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F06000, endColorstr=#FFFFFFFF);  /* For Internet Explorer 8 */  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#FF0000FF, endColorstr=#FFFFFFFF)"; } フォントについてやbox-shadow等は反映されるのですが、グラデーションだけが。。 宜しくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう