• ベストアンサー

CSSだけで添付図のように表示できますか?

CSSのスキルアップのための問題を作りました。 ・フランス国旗にホバーするとベルギー国旗に変わります。 ・ベルギー国旗からマウスアウトするとフランス国旗に戻ります。 ・国旗の下にある国名のためのタグは不要です。 (JS無用)    [仕様]   1.2とおりの国旗を切り替え表示します。   2.CSSだけで整形のこと   3.ベンダープレフィックスも追記のこと   4.タグは変更、追加、削除ができない   5.画像やリンクによる表示は無効   6.配色はつぎのとおり    ・フランス:青、白、赤    ・ベルギー:黒、黄、赤 CSSのスキルアップに励んでいる方の回答をお待ちしております。 [CSS] <style> body { background-color: skyblue; } .flag { width: 150px; height: 75px; border: solid 1px gray; } /* 添付図のように整形するスタイル設定 */ </style> [HTML] <div class="flag"></div>

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

  • ベストアンサー
  • fji-jp
  • ベストアンサー率84% (11/13)
回答No.2

CSSのネスト記法において、FirefoxではDOCTYPE宣言がされていないとhover中のbackgroundが反映されなくて、少しだけハマりました(笑) .flag { width: 150px; height: 75px; border: solid 1px gray; background: -moz-linear-gradient(left, blue 0%, blue 33.3%, white 33.3%, white 66.6%, red 66.6%, red 100%); background: -webkit-linear-gradient(left, blue 0%, blue 33.3%, white 33.3%, white 66.6%, red 66.6%, red 100%); background: linear-gradient(to right, blue 0%, blue 33.3%, white 33.3%, white 66.6%, red 66.6%, red 100%); &:after { content: "フランス"; display: inline-block; position: relative; top: 75px; width: 150px; text-align: center; } &:hover { background: -moz-linear-gradient(left, black 0%, black 33.3%, yellow 33.3%, yellow 66.6%, red 66.6%, red 100%); background: -webkit-linear-gradient(left, black 0%, black 33.3%, yellow 33.3%, yellow 66.6%, red 66.6%, red 100%); background: linear-gradient(to right, black 0%, black 33.3%, yellow 33.3%, yellow 66.6%, red 66.6%, red 100%); &:after { content: "ベルギー"; } } }

retorofan
質問者

お礼

ご投稿ありがとうございます。

Powered by GRATICA
retorofan
質問者

補足

確認させて頂きました。 完璧でした! ( ^o^)/🎉

その他の回答 (1)

回答No.1

あなたがCSSスキルアップのために作成した問題、興味深いですね。できるだけ要件に沿った方法で、CSSを使用してフランス国旗とベルギー国旗を切り替える方法を提案します。 ```css .flag { width: 150px; height: 75px; border: solid 1px gray; background-image: linear-gradient(to right, #0000ff 0%, #0000ff 33%, #ffffff 33%, #ffffff 66%, #ff0000 66%, #ff0000 100%); transition: background-image 0.5s ease-in-out; } .flag:hover { background-image: linear-gradient(to right, #000000 0%, #000000 33%, #ffff00 33%, #ffff00 66%, #ff0000 66%, #ff0000 100%); } ``` 上記のCSS設定は、以下の要件を満たしています。 1. `.flag`クラスが適用されているdiv要素は、フランス国旗の色(青、白、赤)で始まります。これは`background-image`プロパティを使用した線形グラデーションを使って実現しています。国旗のそれぞれの色は要素の幅の3分の1を占めるように設定されています。 2. セレクタ`.flag:hover`にて、マウスが`.flag`要素の上に来た時、ベルギー国旗の色(黒、黄、赤)に変化するよう設定されています。これも上同様、線形グラデーションを用いて表現しています。 3. `transition`プロパティを使用して、色が変化する際のアニメーションが滑らかになるよう設定しました。 4. 要件にあるように、画像やリンクを使わずに、純粋にCSSのみで表示を切り替えています。 5. また、タグを変更することなく、既存のHTMLにスタイルを適用することで解決しています。 このコードをあなたの既存のCSSに追加することで、希望の国旗の切り替えが実現できるかと思います。CSSにおける疑似クラスとグラデーションの使用を理解する良い練習になるでしょう。あなたのスキルアップの旅がより一層実りあるものになることを願っています。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

retorofan
質問者

お礼

ご投稿ありがとうございます。

Powered by GRATICA
retorofan
質問者

補足

確認させて頂きました。 ちょっと残念でした! 😪 [問題点] ・国旗の下部に国旗名が表示されない。 ・次の要件も考慮して欲しかったです。 「国旗の下にある国名も連動して変更される (JS無用)」

関連するQ&A