画像マウスオーバーでキャプションを表示

メディアをアップロードした際に、「キャプション」項目にテキストを設定された画像を挿入した場合はキャプションショートコードが生成され、ページ内の各画像下にその設定したテキストが表示されます。

今回、キャプションをあらかじめ非表示にしておいてマウスオーバーすると表示されるような実装をしてみました。プラグインを探してみたのですがいい感じのものが見つけれなかった。(ご存知であれば、ご教授いただければと)

まずはキャプションの表示のされ方

ショートコードは以下のようなフォーマットになります。

[caption id="attachment_25" align="alignnone" width="300"]
<a href="画像URL">
    <img src="画像URL" alt="キャプション" width="画像幅" height="画像高" class="size-medium wp-image-[id]" />
</a> キャプション
[/caption]

このショートコードからデフォルトでは以下のように出力されます。

<div id="attachment_[id]" style="width: [画像幅+10px]" class="wp-caption alignnone">
<a href="画像URL" data-slb-group="66" data-slb-active="1" data-slb-internal="0">
<img src="画像URL" alt="キャプション" width="画像幅" height="画像高" class="size-medium wp-image-[id]" />
</a>
<p class="wp-caption-text">キャプション</p>
</div>

3.9からはHTML5対応され、以下のように出力することも可能になりました。

<figure id="attachment_[id]" style="width: [画像幅];" class="wp-caption alignnone">
<a href="画像URL" data-slb-group="66" data-slb-active="1" data-slb-internal="0">
<img src="画像URL" alt="キャプション" width="画像幅" height="画像高" class="size-medium wp-image-[id]" />
</a>
<figcaption class="wp-caption-text">キャプション</figcaption>
</figure>

figureタグの説明と対応ブラウザのバージョンはこちら HTML <figure> Tag

キャプションショートコードをHTML5対応にする

テーマによっては、(functions.phpなどで)追加してくれているものが増えてきています。

追加する場合は、finctions.phpに以下を追加して下さい。

add_action( 'after_setup_theme', 'my_theme_support');
function my_theme_support(){
    add_theme_support( 'html5', array(
        'caption',
    ));
}

+10pxの余白を除去

キャプション挿入のショートコードを使用した際に画像の右側に10pxついてしまうのでつけないようにしました。気になるようであれば、以下そのまま子テーマのfunctions.phpに追記してください。

function remove_caption_padding( $width) {
    return $width - 10;
}
add_filter( 'img_caption_shortcode_width', 'remove_caption_padding');

本題ですが、2パターン試してみました。
それぞれデモを用意してので試してみて下さい。

1.画像をずらしてキャプションを挿入

画像にマウスオーバーすると全体が上にスライドしてキャプションが見えるようになります。デモ

/* caption.css  */
.wp-caption {
    position: relative;  overflow: hidden;
}
.wp-caption p.wp-caption-text {
    background-color: #111;  color: #EEE;
    padding: 5px 10px;  margin: 0px;
}
// caption.js
jQuery(document).ready(function($) {
    $('div.wp-caption').each(function(i) {
        var img_ = $('img', this);
        var img_height = img_.attr('height');
        var p_height = $('p', this).outerHeight();
        $(this).height(img_height);
        $(this).hover(function() {
            img_.animate({marginTop : -p_height}, 500);
        }, function() {
            img_.animate({marginTop : '0'}, 500);
        });
    });
});

2.画像上にキャプションを挿入

画像にマウスオーバーすると、画像上にキャプションを表示します。デモ

/* caption.css  */
.wp-caption {
    position: relative; overflow: hidden;
}
.wp-caption p.wp-caption-text {
    background: none repeat scroll 0 0 #111111;  color: #EEE;  opacity: 0.8;
    padding: 5px 10px;  margin: 0;
}
// caption.js
jQuery(document).ready(function($) {
    $('div.wp-caption').each(function(i) {
        var p_ = $('p', this);
        var img_ = $('img', this);
        var img_height = img_.attr('height');
        var p_height = $('p', this).outerHeight();
        $(this).height(img_height);
        $(this).hover(function() {
            p_.animate({marginTop : -p_height}, 500);
        }, function() {
            p_.animate({marginTop : '0'}, 500);
        });
    });
});

実装方法

以下は、caption1.cssとcaption1.jsをそれぞれテーマフォルダ下/cssフォルダ、/jsフォルダに配置したファイルを読み込む例です。functions.phpに追記して下さい。独自のCSSやJSを読み込む
CSSの方は、中身をstyle.cssに追加する方法でもいいです。

function wp_caption_scripts() {
    wp_enqueue_style(  'caption-slide-css', get_stylesheet_directory_uri() . '/css/caption1.css', false, null );
    wp_enqueue_script( 'caption-slide-js',  get_stylesheet_directory_uri() . '/js/caption1.js', null, null, true );
}
add_action( 'wp_print_scripts', 'wp_caption_scripts');
  • このエントリーをはてなブックマークに追加

関連記事

「Google Analytics for WordPress」投稿URLにやたら長いパラメータがついてしまう

Google 検索結果をみていたら、Wordpressの投稿のURLが実際のものより異様に長くなっているので何かなと思って調査してみました。 このような感じで http://kwski.net/ca

Twitterのツイートボタンの設置

Twitterのツイートボタンの設置はプラグインを使用しなくても容易に実装できるようです。 ソーシャルボタン設置のプラグインはこちらにいちおうまとめています。 Tweetボタンの設置コード 公式

開発やテストに便利なプラグイン

開発やカスタマイズに使えそうなプラグインを集めてみました。 テーマのカスタマイズには、使用中のテンプレートファイルなどを表示してくれると便利ですね。個人的には、テーマ開発の際に、実行しているSQ

ブルー・オレンジ・ピンクと選べるテーマ「Bouquet」をカスタマイズ

プレビューはこちら ダウンロード 目次 ヘッダー画像の高さを変更 アイキャッチをアップロード h1タグがやたら多いので最適化 画像をレスポンシブ対応 フォント「Sorts Mill

Twenty Twelve "コメントをどうぞ"を消す

今回は「Twenty Twelve」で標準で投稿タイトル下に出力されるリンク"コメントをどうぞ"|"Leave a reply"を非表示にする方法を。(コメントやピンバックが1件の場合は"1件のフィー

no image

パーマリンク・スラッグなどURL カスタマイズ

管理画面からの設定 管理画面の「設定」→「パーマリンク設定」で以下の設定が可能です。 共通設定 色々なタグの組み合わせで、URLをカスタマイズできます。 パーマリンク設定の画面に利用可

ie.cssの子テーマ化など Twenty Twelve 1.1での変更点

TwentyTwelveが1.0から1.1にアップデートされたので、勉強もかねていくつか変更点を洗ってみました。 ie.cssを外出し pubdateの削除 rel="generator"

Twenty Fourteen 「投稿者」を非表示

TwentyFourteenでは、シングルページやアーカイブページにそれぞれ「投稿者」が表示されます。投稿者を非表示にさせる方法を投稿してみます。表示させる場合は、以下を参考に表示名などを変更してみて

条件を付けて訪問時に開くポップアップを実装できる「WordPress Popup」

「WordPress Popup」は、ユーザの訪問時にポップアップを開くように実装できるプラグインです。それぞれ条件によって開くかどうかを設定することができます。 ダウンロード / サンプル イン

Lightbox (画像ポップアップ) プラグイン

WordPressで使用できるLightbox(画像ポップアップ)プラグインのまとめ ひとまずインストール・有効化するだけで使用可能です。(3.7/3.8/3.9) blueimp lig

Comment

  1. WordPress | 画像マウスオーバーでキャプションを表示

    メディアをアップロードした際に、「キャプション」項目にテキストを設定された画像を挿入した場合はキャプションショートコードが生成され、ページ内の各画像下にそ... http://t.co/3nzrJDbAqf

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑