CSSで画像ロールオーバーのような事を実現しようとしています。
【画像】 テキストリンク1、テキストリンク2
【画像2】 テキストリンク3、テキストリンク4 以下同様に
テキストリンク1、テキストリンク2のどちらにマウスオンした時も【画像】を変化するようにしたいです。リンク1とリンク2のリンクURLは異なるものですが、画像の変化は同一です。
(これと同様な画像とリンクのセットを、ページ内にいくつも作ることを考えています。)
はじめは、以下のようにテキストリンク1にマウスオーバー→1枚の画像を左右に移動させて画像を変化させましたが、リンクが2つになるとうまく動作しなくなりました。
a タグではなく、画像にclassやidをふらないといけないのでは?と考え、いろいろ試してみましたが、うまく動作しません。
何か良い方法はありませんでしょうか?この方法では実現しないでしょうか?
<CSS部分>
a .gazoumenu {
background: url(gazou.gif) left top no-repeat;
display: block;
width: 20px;
height: 20px;
padding-right: 25px
}
a .gazoumenu :hover {
background-position: right top;
}
<HTML>
<p><a href="xxx.html" class="gazoumenu">テキストリンク1</a></p>
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
ちょっと変わったナビゲーションリンクですが、これに限らず、デザインを考えずにHTMLをきちんと書くことが重要です。
(ここでみんな失敗する。)明らかに数種類のリンクグループがあるのですから、文書構造上も2種類あるはずです。
★下記サンプルは画像が62px×50pxの手持ちのものを使いました。
★タブは全角スペースに置換してあります。
[HTML]デザインはまったく考えていません。文書構造だけ記述してある。
<div class="nav">
<ul>
<li class="a">
<ol>
<li><a href="">リンクA-1</a></li>
<li><a href="">リンクA-2</a></li>
</ol>
</li>
<li class="b">
<ol>
<li><a href="">リンクB-1</a></li>
<li><a href="">リンクB-2</a></li>
<li><a href="">リンクB-3</a></li>
</ol>
</li>
<li class="c">
<ol>
<li><a href="">リンクC-1</a></li>
<li><a href="">リンクC-2</a></li>
<li><a href="">リンクC-3</a></li>
<li><a href="">リンクC-4</a></li>
</ol>
</li>
</ul>
</div>
[CSS]HTMLが文書構造に従っていたら、スタイルシートも簡単になります。
div.nav ul,div.nav ul li,div.nav ul ol{display:block;list-style:none;margin:0;padding:0;height:51px;}
div.nav ul li ol li{float:left;clear:none;}
div.nav ul li{clear:left;position:relative;padding-left:65px;}
div.nav ul li ol li a{display:block;margin-top:10px;}
div.nav ul li ol li{position:static;padding:0;margin-left:10px;}
div.nav ul li ol li:before{position:absolute;top:0;left:0;}
div.nav ul li.a ol li:before{content:url(image/a-1.gif);z-index:1}
div.nav ul li.a ol li+li:hover:before{content:url(image/a-2.gif);}
div.nav ul li.b ol li:before{content:url(image/b-1.gif);}
div.nav ul li.b ol li+li:hover:before{content:url(image/b-2.gif);z-index:1}
div.nav ul li.b ol li+li+li:hover:before{content:url(image/b-3.gif);}
div.nav ul li.c ol li:before{content:url(image/c-1.gif);}
div.nav ul li.c ol li+li:hover:before{content:url(image/c-2.gif);z-index:1}
div.nav ul li.c ol li+li+li:hover:before{content:url(image/c-3.gif);}
div.nav ul li.c ol li+li+li+li:hover:before{content:url(image/c-4.gif);}
:beforeという擬似要素を使ってます。親要素のliに対して絶対配置しています。
★後方互換を考えなければ、子供セレクタ>を使ってもう少し簡単になります。
大変時間がかかり、いろいろ試行錯誤して、みなさまのおかげでなんとか解決しました!
みなさまにベストをつけたいのですが、おひとりしか選べないようですので
何度も書き込んでくださった方へ。
最終的には<span>を使って下の感じで解決できました。
HTMLは日々勉強ですね。。
おっしゃるとおりIE6はもう使わないようにしていきます。
ありがとうございました!
HTML
<ul>
<li><p id="linkA"><a href="">リンクA-1<span>リンクA-1</span></a></p></li><a href="">リンクA-2<span>リンクA-2</span></a></p></li>
</ul>
No.6
- 回答日時:
IE6では未確認です。
他にも色々書き方があると思います。空の spanをつかったり、IE6用も書けるかも。
古いIEは、Element:hoverはダメでa:hoverのみ有効だったりするので、あえてa内に<img>いれてます。
<div class="nav">
<ul>
<li class="a">
<ol>
<li class="pre"><a href=""><img src="image/a-1.gif" width="60" height="50" alt="">リンクA-1</a></li>
<li><a href=""><img src="image/a-2.gif" width="60" height="50" alt="">リンクA-2</a></li>
</ol>
</li>
<li class="b">
<ol>
<li class="pre"><a href=""><img src="image/b-1.gif" width="60" height="50" alt="">リンクB-1</a></li>
<li><a href=""><img src="image/b-2.gif" width="60" height="50" alt="">リンクB-2</a></li>
<li><a href=""><img src="image/b-3.gif" width="60" height="50" alt="">リンクB-3</a></li>
</ol>
</li>
<li class="c">
<ol>
<li class="pre"><a href=""><img src="image/c-1.gif" width="60" height="50" alt="">リンクC-1</a></li>
<li><a href=""><img src="image/c-2.gif" width="60" height="50" alt="">リンクC-2</a></li>
<li><a href=""><img src="image/c-3.gif" width="60" height="50" alt="">リンクC-3</a></li>
<li><a href=""><img src="image/c-4.gif" width="60" height="50" alt="">リンクC-4</a></li>
</ol>
</li>
</ul>
</div>
[CSS]
div.nav ul li{clear:left;position:relative;height:54px;list-style:none;padding-left:65px;line-height:50px;}
div.nav ul li ol li{list-style:none;display:block;float:left;clear:none;position:static;padding-left:0;margin-right:10px;}
div.nav ul li ol li a img{position:absolute;left:0;top:0;border:none;display:none;/* またはvisibility:hidden;*/}
div.nav ul li ol li.pre a img{position:absolute;left:0;top:0;display:block;/* またはvisibility:visible;*/}
div.nav ul li ol li a:hover img{display:block;/* またはvisibility:visible;*/}
ありがとうございます!
これから、教えていただいたものをもとにがんばってみます。
手も遅く、調べながらのため、きっと時間がかかってしまいますので、
まずはお礼を書かせてください。
No.5
- 回答日時:
IE7以前に有効な方法は画像自体を書かなけりゃならないので、ちょっと保留。
時間があるとき考えて見ます。
HTMLをデザインのために書かなけりゃならないので「しんどい」
なお、IE6はそろそろ除外しましょう。マイクロソフト自身も抹殺のためのキャンペーンをしている。協力しましょう。
マイクロソフト、IE6撲滅に向けた一大キャンペーン始める | スラッシュドット・ジャパン Submission ( http://slashdot.jp/submission/41710/%E3%83%9E%E3 … )
No.3
- 回答日時:
やろうとしていることも、やり方も問題ありませんよ。
また、すべてのaタグに対して同じ挙動を与えたいのであれば、IDやClassを付与する必要もありません。aタグがひとつしかない時に正常に動いているのであれば、おそらく記述ミスや基本的な文法に誤りがあるのだと思います。ひとまず提示されたサンプルに問題はないように見受けられるので、問題があるとしたら、その記述自体の部分的なものではなく、HTMLやCSS全体に関与する部分じゃないでしょうかね。
No.2
- 回答日時:
意味がわからないのですが、一つ一つのリンクについて背景画像が変化すると言うことですか?
「テキストリンク1、テキストリンク2のどちらにマウスオンした時も【画像】を変化するようにしたい」
この文章からは、別のところにある画像で
「【画像】 テキストリンク1、テキストリンク2
【画像2】 テキストリンク3、テキストリンク4 以下同様に」
からは、ふたつずつセットで、それぞれ画像が変化するとも読める
【画像】がA画像 リンク1:hover
↓
【画像】がB画像 リンク2:hover
【画像2】がA画像 リンク1:hover
↓
【画像2】がB画像 リンク2:hover
そもそものHTML・・・デザインは一切考えずに、きちんと文書構造に従ったHTMLを示してください。
そして、デザイン・挙動をわかりやすいように説明してください。
例)
[HTML]
<ul>
<li><a href="index.html">トップ</a></li>
<li><a href="page1.html">1ページ</a></li>
<li><a href="page2.html">2ページ</a></li>
</ul>
とか、
<p>
くわしくは<a href="./newProduct/">新製品のページ</a>に掲載してあります。
</p>
とか・・
そのうえで
・リンクにフォーカスが当たると、そのブロックの右側に置かれたスペースに、画像を貼り付ける。
・リンクのある項目にフォーカスが当たると、目印の画像が変化する
・リンクの背景を変化させる。普段はA画像を背景、フォーカスやマウスオーバーでB画像、アクティブになったときC画像、訪問済みはD画像
とか・・
この回答への補足
ありがとうございます!
言葉が足りませんでした。すみません。
こういった感じでうまく伝えられるといいのですが。
ご指摘ありがとうございました。
デザインは以下のように並んでいます-----------
【画像1(1-a表示)】 テキストリンクあ テキストリンクい
【画像2(2-a表示)】 テキストリンクう テキストリンクえ
【画像3(3-a表示)】 テキストリンクお テキストリンクか
---------------------------------------------
<動作>
「テキストリンクあ」に
マウスオン→【画像1】が[画像1-a] → [画像1-b] に変化、
クリック→あああ.htmlへジャンプ。
「テキストリンクい」にマウスオン→[画像1-a] → [画像1-b] に変化、
クリック→いいい.htmlへジャンプ。
同じように、
「テキストリンクう」にマウスオン→【画像2】が [画像2-a] → [画像2-b] に変化、
クリック→ううう.htmlへジャンプ。
「テキストリンクえ」にマウスオン→【画像2】が、[画像2-a] →[画像2-b] に変化、
クリック→えええ.htmlへジャンプ。
このように、マウスオンによってある箇所の画像が変化し、マウスアウトで元の画像に戻る。クリックするとジャンプするリンクを、いくつか作りたいと考えています。
【画像1】の変化は、1箇所の画像枠に対して1-a→1-bの一種類変化のみですが、その動作のきっかけとなる、マウスオンのリンクは、2箇所になります。
同様の動きをする、【画像2】枠に対し画像2-aから2-bへの変化・リンク2箇所、【画像3】枠に対し~、といように複数作ろうとしています。
はじめ、1-aと1-bにあたる2つの画像をくっ付けた状態1-abで作成し、左右に移動させる形で、画像の変化がでるように作りはじめました。
画像一箇所に対し「テキストリンクあ」のみでであれば、動作したのですが、「リンクい」を追加、または複数のセットになると、画像が2箇所(よく考えると当然なのかもしれません)表示されたり、動かなくなりました。
<CSS部分>
a .gazoumenu {
background: url(gazou1-ab.gif) left top no-repeat;
display: block;
width: 20px;
height: 20px;
padding-right: 25px
}
a .gazoumenu :hover {
background-position: right top;
}
a .gazoumenu2 {
background: url(gazou2-ab.gif) left top no-repeat;
display: block;
width: 20px;
height: 20px;
padding-right: 25px
}
a .gazoumenu2 :hover {
background-position: right top;
}
同じようにgazoumenu3を作成。
<HTML>
<div class="menu">
<ul><li>
<p><a href="あああ.html" class="gazoumenu">テキストリンクあ</a> <<マウスオンで画像1-bに変化
<a href=いいい.html" class="gazoumenu">テキストリンクい</a></p> <<マウスオンで画像1-bに変化
</li>
<li>
<p><a href="ううう.html" class="gazoumenu2">テキストリンクう</a> <<マウスオンで画像2-bに変化
<a href="えええ.html" class="gazoumenu2">テキストリンクえ</a></p> <<マウスオンで画像2-bに変化
</li>
<li>
<p><a href="おおお.html" class="gazoumenu3">テキストリンクお</a> <<マウスオンで画像3-bに変化
<a href="かかか.html" class="gazoumenu3">テキストリンクか</a></p> <<マウスオンで画像3-bに変化
</li>
</ul>
</div>
調べていて、javascriptのリモートマウスオーバーというものに似た動きをすると思ったのですが、別の場所の画像を変化させるのは動的なものなのでしょうか。cssでは難しいでしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excel vba で ulタグのなかのse...
-
【CSS】メニュー上部に固定させ...
-
HTMLで画像を3つ並べる方法
-
ボタンを横に並べて表示させる方法
-
liタグの中に<p>タグやら<dl>を...
-
リストマーカーをボックス内に...
-
タグの前にある空白について
-
html/cssの、navを2段にする...
-
画像にリンクを張ると画像がず...
-
HTMLで組織図を作成する方法
-
javascriptのアコーディオンメ...
-
CSS li float 2列組み
-
更新履歴の作り方
-
ulタグやliタグの中でbrタグ...
-
複数の画像を横並びにし、その...
-
リストの数字のフォントサイズ...
-
htmlの<ol>タグで、数字などを...
-
「olタグ」内に「hタグ要素」...
-
<ul>~</ul>が二つ続くと間に改...
-
<ol><li> 左側にスペースがで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
ulタグやliタグの中でbrタグ...
-
liタグの中に<p>タグやら<dl>を...
-
リストの数字のフォントサイズ...
-
html/cssの、navを2段にする...
-
<ul>~</ul>が二つ続くと間に改...
-
HTMLで組織図を作成する方法
-
<ul><li></li></ul>にするメリ...
-
レスポンシブWebデザインでリン...
-
番号付きリスト(<Ol><Li>・・...
-
<table>の高さ固定。情報増加時...
-
ol要素の番号とリスト項目の離...
-
htmlの<ol>タグで、数字などを...
-
html <ul></ul>の並びで一行空...
-
divタグ内のコンテンツが重なっ...
-
ulとliで囲った文字の一部を変...
-
HTML5のfooterに見出しを付けて...
-
文法チェックの<A>と</A>の間が...
-
jQuery-もっと見るボタンをスマ...
-
テーブル内のプルダウンの下に...
おすすめ情報