• ベストアンサー

素朴なcaptionについて質問させてください。

幾つか悩みが浮上しているのでどれか1つでもアドバイスいただけたらと思います。 よく写真やテーブルの上下に説明等のキャプションを使うのですが、毎回align属性等にてtopやbottomの指定を行っています。 質問1 これはCSSで指定を行うには何を指定してやればよいのでしょうか??またCSSで可能でしょうか?出来れば<caption>だけで、bottomの指定を行いたいです。 質問2 そもそも、captionはw3c的に推奨要素なのでしょうか? 質問3 写真にcaptionをつけたい場合、毎回テーブルの中に画像を入れて、captionをつけているのですが正しいでしょうか?いきなり画像だけにcaptionつけることって不可能ですよね?? 変な質問ばかりで申し訳ないのですが、悩んでいます。 どなたかアドバイスいただけたら幸いです~!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

質問1 <caption align="bottom">sample</caption> を CSS で。 caption-side:bottom; という指定方法は用意されていますが、対応しているブラウザというと・・・。 http://hp.vector.co.jp/authors/VA022006/css/corrbrwser/tables.html#caption-side という事で、出来ないと思っていた方が良いかと・・・。 (#2 の方が提示の vertical-align は caption の align とは違うし・・・って少なくとも WindowsXP SP2 IE6 では実現できませんでした。) 質問2 captionはw3c的に推奨要素 http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/tables.html#edef-CAPTION はい。ただし、caption は表題です。表(TABLE)の題名です。そしてあらわしたい情報が表形式の情報であるかが問題です。推奨(w3c)を意識するなら、まずその情報全体が表形式であらわす物なのかで table の使用の可否が決まり、その上でその表の題名(表題)が caption であらわせるという事です。表の内容の1つである画像の説明を caption でという事は意味的に誤りです。(技術的には可能でありますが、ここでの質問が w3c推奨云々の意味的な点なので・・・。) 質問3 技術的には実現できているのでしょうから間違いとはいいませんが、意味的には表でもないのにデザインの為に table を用いるという事で誤りです。 とはいえ、caption は table の中で各1回しか指定できません。 という事で caption の使用自体を白紙にしましょう。 table で幅の意識等は既にあるでしょうから、それを div に代えれば良いでしょう。caption に当たるのは適当に要素を(div でも可)選んで記述すれば済む事かと・・・。 最後に w3c の推奨を意識するならば、HTML の場合はデザインはあまり気にしない(CSS に任せる)という事なので、もし表題を記述するという事は top でも bottom でもブラウザまかせという感覚になりますが・・・。 実際、CSS が無効の環境もあるし意図的に閲覧者が CSS を無効にしたり・・・。 結論というかお勧め・・・。 W3C では(align属性が)非推奨ですが、現状維持で<caption align="bottom">sample</caption>が良いと思います。それか根本的にタグ(要素)の見直しか・・・。 理由はソースの現状と修正の手間と各ブラウザの対応状況からして苦労するメリットがちょっと・・・。

momonga_Q
質問者

お礼

みなさん大変参考になりご意見をありがとう御座いました。 色々勉強になることばかりで大変感謝いたします。 改めてありがとう御座いました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#edef-CAPTION 上記URLのHTML4.01仕様書邦訳では、w3c的に<caption>は、非推奨要素ではないと思われます。 但し、align属性は推奨しないとされているようです。 この要素は、http://www.w3.org/TR/html4/strict.dtdでは<table>内にのみ0回又は1回出現しなければならない要素とされています。 <!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> 他にcaptionが出現できる要素はみあたりませんのでcaptionを出現させる場合、tableを出現させる必要があるようです。 http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/tables.html そんなことでCSS2仕様書邦訳の表についての項を読むとcaptionのCSSでの見栄えの指定方法が解ります。 ここで全てを書き尽くすことが不可能ですので参考になる章だけを上げさせて頂きます。 17.4 視覚整形モデルにおける表の扱い 17.4.1 題名の位置と端揃え 'caption-side' が使えるPC用ブラウザが有るかは疑問です。 CSS1では、表に関する定義はされていないようです。 'display' の値も block | inline | list-item | noneとなっていてtable-captionがありませんのでcaptionを特別扱いしないのではないかと思われます。 caption{display:block} かな? http://www.doraneko.org/webauth/css1/19961217/Overview.html w3c的にはこんな感じだと思いますよ。

全文を見る
すると、全ての回答が全文表示されます。
  • 7659
  • ベストアンサー率66% (4/6)
回答No.2

質問1 captionのスタイルをCSSで設定することはもちろん可能です。 caption{ vertical-align : bottom;} たとえばbottom指定ならこんな感じでしょうか。 質問2 W3CでもHTML4.0?で定義されているので推奨しないことはないのでは。 質問3 画像には直接つけることはできないですね。

全文を見る
すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

captionタグはそもそもテーブルに使うものなので画像のキャプションとして使うにはどうかと思います。 今の使い方ですと結局テーブルの中に画像を入れているわけですから、行を追加してそこにキャプションを書いたらどうでしょうか? <table> <tr><td align="center"><img src="xxxx"></td></tr> <tr><td align="center">キャプション名</td></tr> </table> もしくは div タグを使うのもいいかもしれません。 <div style="text-align:center"> <img src="xxxx"><br> キャプション名 </div>

momonga_Q
質問者

お礼

ありがとう御座います。 ご意見がいただけて安心いたしました。 そうですよね!画像のcaptionではないですし、必ずテーブルが必要なのはおかしいですよね。 しかしながら、<td align="center">といった非推奨の要素は使いたくありません。 何か良い、またはみなさんが行っていく書き方などあれば宜しくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CSSのcaption-side:・・・

    続けて質問すみません。 CSSのcaption-side:なのですが、 right / left / bottom はテーブルのどこに配置されるのが正しい配置ですか?        TOP   ┏━━━━━━━━━━━┓   ┃              ┃   ┃              ┃ left┃              ┃right   ┃              ┃   ┃              ┃   ┗━━━━━━━━━━━┛        bottom ですか?  left   TOP  right ┏━━━━━━━━━━━┓ ┃              ┃ ┃              ┃ ┃              ┃ ┃              ┃ ┃              ┃ ┗━━━━━━━━━━━┛      bottom ですか?

  • 写真とキャプションを横並びにしたいです

    テーブルは使わずにhtmlとcssで作れたらと思っています。 写真と説明を横並びにして、さらにその横に違う写真と説明のセットを並べて配置したいのです。 つまり、画像、キャプション 画像、キャプション と配置したいのですが、どうすればいいのかよく分かりません・・・。 教えていただけると大変ありがたいです。 どうぞよろしくお願いいたします。

  • legendの属性alignをCSSに変更する・・・

    legendの属性alignをCSSに変更する場合 調べたら text-align ではなく float で左右が配置できることがわかりましたが、top や bottom に関しては無かったので教えてください。 それと、なぜ text-align ではなく float なのでしょうか?

  • 画像の下部にキャプションを入れる

    現在スマホサイトを作成しています。 そこに掲載する画像の下部にキャプションを入れたいと思っています。デザインでいうと下記サイトに掲載されているようなキャプションです。 http://subculsheets.blog.fc2.com/blog-entry-19.html 上記のサイトと違う点は画像の周りに5pxの白い枠を作成したこと、画像のキャプションには半透明の黒い画像を予め作成し背景として使用していることです。 スマホサイトの場合は、縦で見る時と横で見る時で横幅が変わります。 何となくはできたのですが、現在は縦画面で見た時にキャプションが2px程右にはみ出してしまっています。横画面で見るとちゃんと収まっています。 キャプションをつける画像のサイズは統一して380px×265pxの画像を使用しています。 下記が現在のコードです。 HTML----------------------------------------------------------- <div class="photo-center2"> <img src="../img/○○.jpg"> <div class="caption-txt2">キャプションテキスト</div> </div> --------------------------------------------------------------- CSS----------------------------------------------------------- .photo-center2 img{ width:100%; max-width:380px; } .photo-center2{ position: relative; border:1px solid rgb(204, 204, 204); padding: 5px; background-color:#ffffff; margin:0 auto; margin-bottom: 15px; width:90%; max-width:380px; } .caption-txt2{ position: absolute; color: #fff; padding: 5px; font-size: 12px; bottom: 9px; background-image: url("../images/caption.png"); text-align:center; width:95%; max-width:382px; } ------------------------------------------------------ どのように修正すれば縦画面で見た時もキャプションをはみ出さずに済むでしょうか? ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • Lightbox2でのキャプションについて

    画像の拡大表示のために、Lightbox2を使用しております。 画像のキャプションとして、title属性内にHTMLで装飾した長い文章を入れています。 しかしLightboxのキャプションはtitle属性であるため、(当然ですが)サムネイル画像にマウスカーソルを置いたときにブラウザが表示するポップアップにおいて、キャプション用文章のHTMLタグまで表示されてしまってみっともないです。 出来ればtitle属性は本来の使い方にしておいて、Lightboxのキャプション専用の属性を新たに加える・・・というような感じにするには、どのように改造したら良いでしょうか? ソースは以下のような感じです。 ●現状 <a href="/image/test.jpg" rel="lightbox" title="<h2>題名</h2><p>この写真はテストです。</p>"><img src="image/test_thumbnail.jpg"></a> ●理想(こんな感じに出来たらいいなぁというイメージです) <a href="/image/test.jpg" rel="lightbox" title="テスト画像" caption="<h2>題名</h2><p>この写真はテストです。</p>"><img src="image/test_thumbnail.jpg"></a> おそらくlightbox.jsのどこかをいじるのだと思いますが、試しに218行目の imageLink.title を imageLink.caption に書き換え、さらに223行目の anchor.title を anchor.caption に書き換えてみましたが、ダメでした。(JavaScriptの知識がゼロのため、まったく的外れなことをしているかもしれません) 他に何か良い方法はありますでしょうか?

  • img の align 属性を css に変更したいが、位置がずれる

    img タグで、align 属性 top, middle, bottom を使用して 文章中の図の位置を調整していました。 CSS での位置表示に変更しようと思い、 align="..." を class="..." に変更し、CSS で img.top {vertical-align: top;} img.middle {vertical-align: middle;} img.bottom {vertical-align: bottom;} と設定しましたが、alignで設定していたときと位置がずれます。 解決法について探しているのですが、以下のような説明しか見つからず、 わかりません。 ■top 上端に合わせます。 ■middle 中央に合わせます。 ■bottom 下端に合わせます。 http://www.tagindex.com/stylesheet/img/vertical_align.html 解決法をお分かりの方、どうか教えてください。

    • ベストアンサー
    • HTML
  • 横に並んだ画像の固まりをセンター

    下記CSSでキャプション付き画像を横向きに並べて配置したのですが 横に並んだ画像の固まりをセンターにもっていくCSSがわかりません どなたか知りませんか? <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <style type="text/css"> <!-- div.imagebox { border: 1px dashed #0000cc; /* 1.枠線 */ background-color: #eeeeff; /* 2.背景色 */ } p.image, p.caption { text-align: center; /* 3.中央寄せ */ margin: 0px; /* 4.余白・間隔 */ } p.caption { font-size: 80%; /* 5.文字サイズ */ color: darkblue; /* 6.文字色 */ } div.imagebox { border: 1px dashed #0000cc; /* 枠線 */ background-color: #eeeeff; /* 背景色 */ width: 140px; /* 横幅 */ float: left; /* 左に配置 */ margin: 5px; /* 周囲の余白 */ } .imagebox_a { display: block; margin-left: auto; margin-right: auto; } --> </style> </head> <body> <div class="imagebox_a"> <div class="imagebox"> <p class="image"><img src="./photo.jpg" width="140" height="95" alt="海の写真"></p> <p class="caption">キャプションですよ</p> </div> <div class="imagebox"> <p class="image"><img src="./photo.jpg" width="140" height="95" alt="海の写真"></p> <p class="caption">キャプションですよ</p> </div> <div class="imagebox"> <p class="image"><img src="./photo.jpg" width="140" height="95" alt="海の写真"></p> <p class="caption">キャプションですよ</p> </div> <div class="imagebox"> <p class="image"><img src="./photo.jpg" width="140" height="95" alt="海の写真"></p> <p class="caption">キャプションですよ</p> </div> </div> </body> </html>

    • ベストアンサー
    • CSS
  • cssでターゲット指定

    スタイルシートの役割を超えているような気がするので、できないとは思いますが cssでリンクのターゲット属性を指定することはできませんか そもそもターゲット属性は非推奨でしたっけ? もし、cssで可能なら教えてください

    • ベストアンサー
    • HTML
  • 【CSS】floatで左右に並べた<div>を下揃えにできますか?

    CSS(スタイルシート)においてfloatで2つのdivを左右に並べる方法は定番ですが、この2つのblockレベル要素は高さが違えば下部が不ぞろいになります。 これは仕方ないとして、上部が不揃いになってもいいので下揃えにできませんでしょうか? text-align:bottom;やvertical-align:bottom;ではできませんでした。tableを使えば可能でしょうが今回はtableなしという事でお願いいたします。

    • ベストアンサー
    • HTML
  • HTMLのレイヤーとは?

     別の質問で、レイヤーを重ねてみてはどうか、という回答を頂いたことがあります。レイヤーとは何ですか?  あるサイトで、画像の上に画像(周りを透過させたgifアニメ)を見ました。大変綺麗でした。また、その上に重ねられたgif画像は枠線を表示したテーブルの、その枠線の上まではみ出ていました。  どうやっているのだろうと思いソースを見たら <IMG SRC="上のgifアニメ" ALIGN="MIDDLE" NATURALSIZEFLAG="3"></div> <IMG SRC="下の画像" ALIGN="BOTTOM" NATURALSIZEFLAG="2">  とありました。CSSには #layer { position: absolute;  の次にtop,left,width,heightvisibilityの設定がしてありました。  同じように画像を重ねる方法をタグ辞典で探したら、positionとz-indexで指定するよう書いてあり、指定する項目もよく似ていますがlayerの文字はありません。  layerとはどのようなタグでしょうか?

    • ベストアンサー
    • CSS