サポート » 使い方全般 » 投稿画像の写真にマウスオーバーした際にアイコンを表示する

  • 解決済 mame777

    (@mame777)


    WordPressで投稿画像の写真にマウスオーバーした際に、アイコンを表示したいです。ベースとなる写真はリンクになっています。画像のサイズがまちまちであるため、中央にアイコンをのせたいです。

    中央に表示することはできましたが、マウスオーバーした際の挙動がおかしいです。おそらくですが、マウスオーバーしたとき、判定する位置がずれているんだと思います。判定位置を直すと、アイコンが左上に表示されてしまいます。

    つまり、現在、片方はできると片方がおかしくなる状態です。いろいろと試したのですが、うまくいきません。。

    以下、ソースになります。

    ● アイコンは中央に表示できますが、位置がずれています。上から左からマウスを持ってくると、反応しません。理屈はわかるのですが、解決方法がわかりません。。

    <a href="http://" target="_blank" class="item">
    <span class="overlay"></span>
    <img src="http://aaa.com/picture.jpg"  />
    </a>
    a.item{
    	position:relative;
    	float:left;
    }
    span.overlay{
    	position:absolute;
    	top: 50%;
    	left: 50%;
    	margin-top:-15px;
    	margin-left:-15px;
    	width:100%;
    	height:100%;
    	background-image:url(../uploads/images/icon.png);
    	background-repeat:no-repeat;
    	opacity: 0;
    	filter:alpha(opacity=0);
    }
    span.overlay:hover {
    	opacity: 1;
    	filter: alpha(opacity=100);
    }

    ● topとleftを動かさなければ、位置はあいますが、アイコンが左上に表示されます。marginなどいろいろと試しましたが、中央に持ってくることができませんでした。

    span.overlay{
    	position:absolute;
    	top: 0px;
    	left: 0px;
    	margin-left: auto;
    	margin-right: auto;
    	width:100%;
    	height:100%;
    	background-image:url(../uploads/images/icon.png);
    	background-repeat:no-repeat;
    	opacity: 0;
    	filter:alpha(opacity=0);
    }

    お手数かと思いますが、アドバイスいただけると助かります。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは

    こんな感じでどうですか?

    <style>
    	.item{
    		position:relative;
    		display:inline-block;
    	}
    	.overlay{
    		position:absolute;
    		top:0;
    		left:0;
    		right:0;
    		bottom:0;
    		margin:auto;
    		width:64px;
    		height:64px;
    		visibility:hidden;
    	}
    	a:hover .overlay{
    		visibility:visible;
    	}
    
    </style>
    <a href="http://" target="_blank" class="item">
    	<img  class="overlay" src="overlay.gif" />
    	<img src="item-image.jpg" style="width:300"  />
    </a>
    トピック投稿者 mame777

    (@mame777)

    こんばんは。

    的確なご回答ありがとうございます。
    素晴らしいです。ばっちりと動作しました。

    ただ、そのあと、いじってみたのですが、

    visibility

    opacity
    に変えるだけでは、消えないのですね。

    後でフェードのアニメーションをつけたかっため、opacityを使いたかったのですvisibilityとopacityは同列の使い方ができるものではないですかね?CSSのリファレンスを眺めてみたのですが、いまいちそのあたりの理解が追いつかず、後学のために恐縮ですが、もしよろしければ何かアドバイスをもらえると助かります。

    他所でサンプルをダウンロードしてみたら、javascriptが使われていましたし、スライドやフェードなどを追加したいときは、cssのみで実現するのは難しいのでしょうか?

    <style>
    	.item{
    		position:relative;
    		display:inline-block;
    	}
    	.overlay{
    		position: absolute;
    		top: 0;
    		left: 0;
    		right: 0;
    		bottom: 0;
    		margin: auto;
    		width: 64px;
    		height: 64px;
    		visibility:hidden;
    		opacity:0;
    		transition:visibility 2s,opacity 2s;
    	}
    	a:hover .overlay{
    		visibility:visible;
    		opacity:1;
    		transition:opacity 2s;
    	}
    </style>
    トピック投稿者 mame777

    (@mame777)

    たびたびありがとうございます。
    ただ、これだけではうまくフェードが動作しないようです。。
    今のところ解決に至っていません。。

    たびたびありがとうございます。
    ただ、これだけではうまくフェードが動作しないようです。。

    なぜ動かないのか、わかりませんね

    safari用追加しておきました

    IE8とかで動かしたいという事ですか?

    http://www.tenman.info/study/css/fade.php?page=doc2

    トピック投稿者 mame777

    (@mame777)

    ヒントになり、無事、動くようになりました。

    いえ、IE以外のブラウザ、firefoxやsafariなどで動作確認していました。

    すいません、テーマが原因でした。transitionが上書きされていました。
    つまらないことで、お手数おかけして申し訳ございませんでした。
    何度もありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「投稿画像の写真にマウスオーバーした際にアイコンを表示する」には新たに返信することはできません。