-
ID:KORF2R さんの質問

テキストと画像を入れ替えるスクリプトを教えてください。
ホバー時にテキストリンクを画像に入れ替えたいです。
できれば、それにプラスしてアンダーラインがアニメーションで出てくると嬉しいのです。
アンダーラインのアニメーションはCSSで一旦作りましたが、CSSだけだと画像の入れ替えができなくて困っています。

という質問をしたところ、CSSのみでできると言われましたが、できるのでしょうか。
アンダーラインを引く時にbackgroundを使用しているため、画像をbackgroundで入れることができないのですが、どういう手段で画像を入れるんでしょうか。content?
雑魚でわかりませんので教えてください。

みんなの回答 8 件

ID:LVCtSC さんの回答

じゃぁ逆に聞くけれど、なんで CSS で出来ないの?
ヒント = 擬似要素 ( E:hover <-こういうのね )

ID:m2rMFl さんの回答

今作ってるものを見せた方が早いと思いますよ

ID:ppBhhX さんの回答

背景画像は複数指定できるよ。JS使うにしても、JSからCSSいじるだけだから、早い話、CSS分かんなきゃどーにもならないよ。

ID:KORF2R さんの回答

HTML
<div>
<div id="navi">
<ul>
<li><a href="#">About</a></li>
<li><a href="#">Work</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Access</a></li>
</ul>
</div>
</div>
-----
CSS
#navi ul li a::after {
content: ’’;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
-webkit-transform: scaleX(0);
-moz-transform: scaleX(0);
-ms-transform: scaleX(0);
-o-transform: scaleX(0);
transform: scaleX(0);
background-color: #000000;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
#navi ul li a:hover::after {
-webkit-transform: scaleX(1);
-moz-transform: scaleX(1);
-ms-transform: scaleX(1);
-o-transform: scaleX(1);
transform: scaleX(1);
}

置く画像はリンクそれぞれで異なります。
テキストサイズと同じheightの画像+CSSアンダーラインとなるため、背景複数設定の場合はアンダーラインを画像にしないといけない、もしくはliの中にspanか何かで要素を入れる必要がある、ような気がしています。

HTMLに装飾のための画像をおきたくないのでCSSで設定したいのですが、これまでbackgroundもしくは::after、::beforeによる挿入しかしたことがないため他の方法がわかりません。

ID:KORF2R

#navi ul li a {
position: relative;
display: inline-block;
}
抜けてました。

ID:SvxEon さんの回答

> CSSのみでできると言われましたが、できるのでしょうか。
回答信じないなら聞く意味なくない?

ID:KORF2R

CSSのみでのやり方が自分では導きだせなかったので聞いています。

ID:LVCtSC さんの回答

なんだこのソース・・・。ul と li の要素が他のに変わったら終わりじゃん・・・。

ID:LVCtSC

てか、なんで、after はあるのに before がないの?

ID:LVCtSC

他にも、E:nth-child(n) とか使える擬似要素がるじゃん。

ID:KORF2R

記述が面倒だったので手っ取り早く書いただけです。

ID:kGMMJc

このコメントは質問とは関係ない。トピ主を叩きたいだけ。
だから無視してよい。

ID:LVCtSC

いや、ヒントがでてるじゃん。
「 >>1 じゃぁ逆に聞くけれど、なんで CSS で出来ないの?
ヒント = 擬似要素 ( E:hover <-こういうのね )」
「>> after はあるのに before がないの?」
「>> 他にも、E:nth-child(n) とか使える擬似要素がるじゃん。」

----
結局の所、そういうヒントって読み取れない、または読んでいない。その上で文句しか言わない。だから、誰も回答なんかしないんだよ。
雑魚は雑魚でいいと思うし、誰しも最初は雑魚だし、これから成長すればいい。だけれども、質問の仕方、その後のコメントが、人間としてのモラルとか道徳に欠けていると思うんだけれどね。

ID:KORF2R

hoverでもなくbeforeでもなくnth-childでもなく、backgroundでできることでした。
そういう意味では、それらのアドバイスは的を射たものではなく、自分にとっては逆に混乱を招くコメントでした。
何より、最初のあなたのコメント「なんだこのソース・・・。ul と li の要素が他のに変わったら終わりじゃん・・・。」は、質問とは何ら関係のないことですし、kGMMJcT.mV16さんの仰るように叩きたいだけのコメントのように感じます。
自分が未熟であることは否定しませんし、改めるべきところもあると思いますが、叩きたいだけかつ混乱を招くコメントをしてくる方の発言をまともに受け止める暇は、こちらにはありません。
せっかくコメントしてくださったところ申し訳ありませんが、お互いに益のない無駄なやり取りでしたね。

ID:LVCtSC

『お互いに益のない無駄なやり取りでしたね。』
何か勘違いしているようだけれども、益があるのは [ あなただけ ] だけですよ?答える側には何の益もないです。そこをもっと自覚しましょうね。

ID:KORF2R さんの回答

ソースを載せるべきと言われたので載せましたが、載せても回答にならないコメントばかりで残念です。
上の方がbeforeがないといっていますが、beforeで画像を挿入すればいいということ?
すみませんが、回りくどい言い方をされると余計混乱します。
真面目に質問をしています。

ID:kGMMJc さんの回答

トピ主は自分で「これまでbackgroundもしくは::after、::beforeによる挿入しかしたことがない」と言っているが、このソースは「::afterによる挿入」しかしていない。
ということは、「backgroundによる挿入」をする余地はあるのではないか?
今のアンダーラインは::afterで挿入したものにbackgroundを指定しているとはいえ、要素本体にbackgroundで画像を指定すれば画像を表示させることはできる。その際どうやってテキストを消せばいいかは調べればいくらでも出てくる。

ちなみに、前のコメントにもあるようにbackgroundは複数指定できるし、実は::beforeや::afterも複数作ることができる。

ID:KORF2R

的を射た回答ありがとうございます。
試してみます。

ID:KORF2R

できました!
kGMMJcT.mV16さん、本当にありがとうございます。
あなたが回答してくださって、本当に助かりました。

ID:i0Z5g.

やったー!でもまだまだ雑魚だね

ID:KORF2R

そうですね。ここにいる方の9割は雑魚なんでしょうね。
まともに回答がもらえて本当に良かったです。

ID:ppBhhX

あなたが理解できる回答がたまたまこのコメだったというだけで、特別にどの回答からも悪意は感じないよ。上のコメにもあるようにヒントも十分にあるし。それをあたかも回答の質が低いみたいに言うのはお門違いも甚だしい。

最終更新日:2015-05-19 (2,802 views)

関連するトピックス

ページ上部に戻る