- ベストアンサー
リンクのスタイルをテキストと画像を別々にするには?
リンクのスタイルの設定で詰まってしまい困っています。 テキストと下線部分にpaddingを入れたいため、text-decorationではなくborderで下線を設定しています。 このような場合、 画像のみborderを消し、テキストのみにborderを適応させることは可能でしょうか? <a href="#"><img src="hoge.gif"></a><a href="javaScript..." >テキスト</a>のように書けば簡単なのですが、挙動が望んでいたものと違ってしまうため、<a href="javaScript..."><img src="hoge.gif">テキスト</a>のままでお願いします。 (自分でjsが書ければ解決しそうな気もしますが…残念ながらjsは借りてきたものです) サンプルでもう少し詳しく説明しています。 http://imaichie.web.fc2.com/sample.html
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
補足ありがとうございました。 やはり画像とテキストがまとめて<a></a>で挟まれているままでは無理がありますね。 たとえばメニュー1を <img src="tree0.gif" name="myIMG0" id="myIMG0" onClick="exMenu('treeMenu0')"><a href="javaScript:exMenu('treeMenu0')">メニュー1</a> <ul id="treeMenu0" style="display:none"> <li><a href="#">リンク</a></li> <li><a href="#">リンク</a></li> <li><a href="#">リンク</a></li> </ul> とするとメニュー自体の挙動は恐らくご希望通りだと思うのですがいかがでしょうか(動作と関係ない記述は省略しました)。 この場合画像をクリックしたときには音は出ないのですが、画像とテキストどちらをクリックしてもリストの出し入れはできますし画像も切り替わります。
その他の回答 (2)
<div>については#1さんの通り。 ちなみに今のソースではa:hoverで下線を出していますが、これでないとだめなんですよね?一般的なリンクのように下線出しっぱなしでよければメニュー1の修正でできます。 a img { text-decoration: none; } としたうえで「メニュー○」を<span class="○○"></span>ではさみ a:hoverにつけているプロパティを○○につければ実現できるのですが。 それと、メニューの外側に<ul><li></li></ul>があるのは何故なんでしょうか?
お礼
回等ありがとうございます。 そうですね、link自体にはクライアントの指示で下線は引けません。 しかし、メニューがかなり長くなるため、強調のためにa:hoverで下線を出しています。 メニューの外側に<ul><li></li></ul>がついてるのはもともと三層~四層の入れ子リストメニューだったためです。分かりやすくするために一層まで削ったのですが、こんがらがっていたようです…。指摘されるまで気がつきませんでしたが、このサンプルページでならいりませんね。ありがとうございます!
- 918BG
- ベストアンサー率48% (476/984)
サンプルのメニュー3が良さそうな感じですが、<div>はブロック要素ですから改行してしまいます。 <div>のかわりにインライン要素の<span>~</span>を使ったらどうなるのでしょうか。
お礼
回答ありがとうございます。 なるほど、ブロック要素は改行されるのですね。不勉強でした…。 spanを使ってみましたが、メニュー1のような状態(画像に下線、+/-が作動しない)になってしまいます。 どうも<a href="javaScript...">と<img src...>の間に何か書くと+/-作動しないようです。
お礼
回答ありがとうございます! おっしゃる方法で解決した!…と思いきや、サンプルページでは希望通りになったのですが、実際のページ(3層入れ子)に組み込んでみるとなぜかjsが作動せず…。 コピペしたのでスペルミスなどはないはずですが…。 どこかにはあると思うので地道に探してみます。 本当にありがとうございました!