• ベストアンサー

画像の横にテキスト

画像の右側にテキストを配置したいです テキストが画像の上付近から始まるようにしたのですがどんな方法が一番良いのですか? 他にも方法はありますか? <img src="sample.gif" alt="" align="top">テキスト <img src="sample.gif" alt=""style="float: left">テキスト <img src="sample.gif" alt=""style="vertical-align: top;">テキスト また、HTML5ではどんな方法がいいでしょうか? よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • CSS
  • 回答数4
  • ありがとう数14

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

HTML5は、HTML4.01以上に文書構造とプレゼンテーションの分離が徹底されています。よって 「画像の右側にテキストを配置したい」という考え方自体なくなります。(HTML4.01でもそうだった)  HTML5は、CSS,DOM,WAI,APIも含む巨大な仕様です。まず、HTML4.01をしっかり確実に身につけましょう。  すなわち、次のようになります。 Q:画像とその説明をdl(定義リスト)でマークアップされたHTMLがあります。これを、画像の右側にテキストが表示されるようにしたいのですが・・どのようにスタイルシートを書けば良いでしょうか?  ★決して「画像の右側にテキストを配置したいがHTMLは?」にはならないし、なってはならないのです。 ※タブは_に置換してあるので戻す。 <dl class="stepByStep"> _<dt><img src="./images/BIBLO/01.jpg" width="320" height="240" alt="ビスをはずす"></dt> _<dd>本体裏側にある合計12本のビスをはずします。</dd> _<dd>中央にあるビスはCD/DVDドライブの固定も兼ねていますから、ビスをはずしたらドライブを取り外してください。</dd> _<dt><img src="./images/BIBLO/02.jpg" width="320" height="240" alt="裏蓋をあける"></dt> _<dd>FDDのボタンを押しながら裏蓋を注意深く開けていきます。一度に広げようとすると割れます。</dd> _<dt><img src="./images/BIBLO/03.jpg" width="320" height="240" alt="HDD固定ビスをはずす"></dt> _<dd>HDDを固定している4本のビスをはずし、横にスライドさせてマウントごと取り外します。</dd> _<dd>ひっくり返してリボンケーブルをはずします。</dd> </dl> <ol class="stepByStep"> _<li><img src="./images/BIBLO/01.jpg" width="320" height="240" alt="ビスをはずす"> __<p>本体裏側にある合計12本のビスをはずします。</p> __<p>中央にあるビスはCD/DVDドライブの固定も兼ねていますから、ビスをはずしたらドライブを取り外してください。</p> _<li><img src="./images/BIBLO/02.jpg" width="320" height="240" alt="裏蓋をあける"> __<p>FDDのボタンを押しながら裏蓋を注意深く開けていきます。一度に広げようとすると割れます。</p> _</li> _<li><img src="./images/BIBLO/03.jpg" width="320" height="240" alt="HDD固定ビスをはずす"> __<p>HDDを固定している4本のビスをはずし、横にスライドさせてマウントごと取り外します。</p> __<p>ひっくり返してリボンケーブルをはずします。</p> _</li> </ol> というHTMLがあるとして・・定義リスト/序列リストのいずれでマークアップされていても、 *.stepByStep{ width:600px; margin:5px auto;padding:5px; list-style:none; border:ridge 3px gray; } *.stepByStep img{ float:left; margin-bottom:10px; } *.stepByStep:after{ content:"";display:block; clear:left; } dl.stepByStep dt, ol.stepByStep li{ clear:left; margin:0;padding:0; } dl.stepByStep dd, ol.stepByStep li p{ margin:0 0 0 340px; line-height:1.6em;text-indent:1em; } で全く同じようにデザインできます。 ★発想を根本から変えることから始めましょう。 そのためには、まず仕様書くらいは一応目を通しましょう。  ⇒HTML 4.01 Specification (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/cover.html )  ⇒Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification (ja)( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/cover.html ) HTML5でも、このマークアップは変わらない。文書構造によったら <section class="stepByStep"> _<figure><img src="./images/BIBLO/01.jpg" width="320" height="240" alt="ビスをはずす"></figure> _<p>本体裏側にある合計12本のビスをはずします。</p> _<p>中央にあるビスはCD/DVDドライブの固定も兼ねていますから、ビスをはずしたらドライブを取り外してください。</p> _<figure><img src="./images/BIBLO/02.jpg" width="320" height="240" alt="裏蓋をあける"></figure> _<p>FDDのボタンを押しながら裏蓋を注意深く開けていきます。一度に広げようとすると割れます。</p> _<figure><img src="./images/BIBLO/03.jpg" width="320" height="240" alt="HDD固定ビスをはずす"></figure> _<p>HDDを固定している4本のビスをはずし、横にスライドさせてマウントごと取り外します。</p> _<p>ひっくり返してリボンケーブルをはずします。</p> </section> のマークアップをされる場面もあるでしょう。 ★プレゼンテーションではなく、文書構造だけをHTMLに書く。そうすれば、自在にデザインできるということ。

flash0
質問者

お礼

回答ありがとございます マークアップとCSSの分離ですね 次から分離して書きます。すいません

その他の回答 (3)

回答No.4

>どんな方法が一番良いのですか? 厳密、厳格に言えば文書構造にあわせた書き方です。 (デザインを一切無視して、文書構造だけを意識して書く書き方が、正しい書き方になります。 画像を左に表示したいからと言って、<img>を先に書かなければならないというわけではありません。) align属性、valign属性は使わずに、スタイルシートでデザイン(レイアウト)してください。 文書構造としてテキストが先に記載されるべきというのであれば、 テキスト<img style="float:left"> としておいて、CSSで、画像を左に、テキストを右に表示させるという書き方になりますし、 文書構造として画像が先に記載されるべきであれば、 <img style="float:left">テキスト という書き方になります。 その画像が背景画像であれば、<img>を使っては行けません。 <p style="background:略">テキスト</p> 一覧表であれば <table> <tbody> <tr><td><img></td><td>テキスト</td></tr> </tbody> </table> かもしれませんし、(テーブルの場合は文書構造とレイアウトが一致します。) 挿入画像などを示す <figure> <p><img></p> <figcaption>テキスト</figcaption> </figure> または <figure> <figcaption>テキスト</figcaption> <p><img></p> </figure> かもしれません。 >また、HTML5ではどんな方法がいいでしょうか? HTML4でもHTML5でも基本は変わりませんが、 HTML4/XHTMLでは上記、<figure>のかわりに<div>、figcaptionの変わりに<p>や<span>が使われます。

flash0
質問者

お礼

回答ありがとうございます float:leftが一番多いようですね。参考になりました

回答No.2

レイアウトはcssで行うのがいいのでは無いでしょうか。 imgにcssでfloat: left;を設定しましょう。 以下のサイトが参考になると思います。 >>●画像の左右にテキストを回り込ませる >>http://www.xml.vc/property/gazou/float.html

flash0
質問者

お礼

回答ありがとございます やはりcssでやったほうがいいですよね

回答No.1

>どんな方法が一番良いのですか? レイアウトや目的に合わせた方法です。 つまり「どれがいい/正しい」というのは無い。 >HTML5ではどんな方法がいいでしょうか? 同じです。

flash0
質問者

お礼

回答ありがとうございます マニュアル的なことはないってことですね。参考になりました

関連するQ&A

  • 画像横のテキストをセンターに配置したい

    HTML5, CSS3をベースに、添付画像(2)のような状態で作成したいなと思っております。 <ul> <li><a href="#"><img src="XXX.gif" alt="#" width="60" height="60">○○○○○</a></li> <li><a href="#"><img src="XXX.gif" alt="#" width="60" height="60">○○○○○○○○○○</a></li> <li><a href="#"><img src="XXX.gif" alt="#" width="60" height="60">○○○○○</a></li> </ul> HTMLはこんな感じでシンプルに。 特に何もしなければ、 (1)のように画像のベースラインとテキストのベースラインが同じ位置に配置されます。 テキストが2行になると画像の下にずれ込みます。 しかし(2)のようにテキストをセンターに配置したいなと。 テキストは多くても2行でとどめるつもりなので、 1行でも2行でもセンターになるようにしたい。 ではと思ってまず思い浮かんだのが画像を「float: left」すること。 でもそうするとテキストがベースラインから回避できますが、 センターにはいかず、画像のトップと同じ位置に配置されます。 テキストが1行なら、反強制でPタグでくくって 「margin: top」で調整することもできるかと思いましたが、 2行分は設定したいのです。 ちなみに画像のサイズは指定しておりますが、 li自体には横幅の設定はしていますが高さ設定はしていません。 実質画像の高さが高さになることになります。 簡単にできることかと思っていたのですが、思いのほか苦戦しております。 ご存知の方いらっしゃいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • 画像とテキストのレイアウト

    左に画像、その画像の右に複数行のテキストを、画像高さの中央に配置したいと思っています。 <table><tr><td><img></td> <td style="vertical-align:middle"> 文1<br> 文2<br> 文3<br> </td></tr></table> をテーブルを用いないでレイアウトしたいということです。 <img src="loc"> 文1<br> 文2<br> 文3<br> では、文1 のみが画像右に表示されます。 <img src="loc" style="float:left"> 文1<br> 文2<br> 文3<br> では、文全体が画像のtop位置から表示されます。 どのようにスタイルシートで指定すればいいのでしょうか?

    • ベストアンサー
    • HTML
  • [携帯]divで指定した背景色から画像がはみ出す。

    携帯用サイトを制作しているのですが、 <div style="clear:both;background-color:red;">    <img src="./images/icon.gif" width="64" height="64" align="left" style="vertical-align:middle;float:left;margin:5px;" />    <br />こんにちは </div> <div style="clear:both;~ と画像の横に文字が回りこんだとき、背景色が文字の部分にしかつかず、画像がはみ出した状態になってしまいます。 今回は1*1の透明なgif画像を使い、 <div style="clear:both;background-color:red;">    <img src="./images/icon.gif" width="64" height="64" align="left" style="vertical-align:middle;float:left;margin:5px;" />    <br />こんにちは       <div clear="all" style="clear:both;">          <img src="./images/space.gif">       </div> </div> <div style="clear:both;~ とすることで解消できたのですが、 参考にしていたサイトではどうやら画像を使わずに背景内に収めているようです。 後学のために、画像を使わず、背景から画像をはみ出さないように見せる方法を教えてください。よろしくお願いします。 docomoで動作確認しています。

  • floatで左右に分けて配置した2個の画像の中央にテキスト

    floatで左右に分けて配置した2個の画像の中央にテキストを回り込ませた後にテキストの続きの内容の画像を配置するとIE6でレイアウトが崩れしまします。 (NN7、Opera9、Firefox2では表示されるのですが…。) 初心者ですので困っています。お力をお貸し下さい。 ↓このように表示したいです。 ■■■■ テキスト ■■■■ ■画像■ テキスト ■画像■ ■■■■ ■画像■ ■■■■ ■■■■ ■画像■ ■■■■ ↓IE6ではこのような表示になってしまいます。 ■■■■ テキスト ■■■■ ■画像■ テキスト ■画像■ ■■■■       ■■■■ ■■■■       ■■■■ ■画像■ ■画像■ タグは以下のとおりです。 ☆HTML☆ <div id="contents01"> <div id="contents01_left"> <img src="img/contents01_01.gif"> </div> <div id="contents01_right"> <img src="img/contents01_02.gif"> </div> <p>テキストテキスト</p> <p><img src="img/contents01_03.gif"></p> <p><img src="img/contents01_04.gif"></p> <p><img src="img/contents01_05.gif"></p> </div> ☆CSS☆ #contents01{ width:480px; height:140px; padding:10px; } #contents01_left{ float:left; width:150px; padding-right:10px; } #contents01_right{ float:right; width:150px; padding-left:10px; } どうぞよろしくお願い申し上げます。

    • ベストアンサー
    • HTML
  • HTMLについて

    現在HTMLを勉強しています そこで画像の配置についてわからないところがあるので教えてください 添付した画像のようにしたいのですが緑の画像がかなりしたになってしまいます どうすればいいでしょうか? コードとCSSは HTML <body> ~~~省略~~~ <div class="menu_block"> <table class="menu_left"> <tr> <td class="photo"><img src="img/siri-zu.gif" style="margin-top:80px;"></td> </tr> <tr> <td class="photo"><img src="img/sekkenn.gif" style="margin-top:20px;"></td> </tr> <tr> <td class="photo"><img src="img/oiru.gif"style="margin-top:10px;"></td> </tr> <tr> <td class="photo"><img src="img/jeru.gif"style="margin-top:10px;"></td> </tr> <tr> <td class="photo"><img src="img/set.gif"style="margin-top:10px;"></td> </tr> <tr> <td class="photo"><img src="img/mini.gif"style="margin-top:10px;"></td> </tr> </table> <img src="img/3.gif" height="300" alt="3STEP" class="menu_right"> <img src="img/rank.jpg" style="margin-top: 80px ;" class="ranking"> <img src="img/test.jpg" width="600" height="200" style="margin-left: 200px;" class="rebyu"> </div> </div> </body> CSS @charset "UTF-8"; h1 { margin: 30px 0 30px 0; padding: 0 0 0 0; line-height: 0; text-align: center; } #wrapper { width: 1050px; margin: 0 auto 0 auto; } .menu_block { overflow: hidden; zoom: 1; } .menu_left { float: left; margin-right: 20px; } .menu_right { float: left; margin-top: 80px; margin-left: 20px; } .ranking { float: left; margin-left: 20px; } .rebyu { float: left; margin-top: 10px; } です 赤の真下に緑が来るというのが理想です

    • ベストアンサー
    • HTML
  • CSSで画像を中央に持っていく方法。

    簡単な問題です。 画像を liの枠内の上下左右中央に配置するには、どうすればいいでしょうか? 画像のサイズがまちまちなので、 paddingなどで数値を指定するのは、NGです。 vertical-align:middleはだめでした。 text-align:centerで左右の中央に持って行く所まで、できました。 HTML ==================== <ul class="book_slide"> <li><img src="image/bookmihon.jpg" width="51" height="75" alt="*" /></li> <li><img src="image/bookmihon.jpg" width="51" height="75" alt="*" /></li> </ul> ====================== css ======================= ul.book_slide li{ float:left; height:114px; width:80px; border:1px solid #000; text-align:center; } =======================

    • ベストアンサー
    • CSS
  • 画像リンクの下に文字を付けたいのですが

    画像リンクを複数横に並べ、かつそれぞれの画像の下に文字を表示(それぞれの画像の横幅の範囲内に)させたいのですがどうすればよいでしょうか? 画像と画像の間にスペースを入れることが出来たらなお良いです。 いろいろ調べてみて、 「<div style="float:left"><img src="1.gif"><br>caption 1</div> <div style="float:left"><img src="2.gif"><br>caption 2</div> <div style="float:left"><img src="3.gif"><br>caption 3</div> <div style="clear:both"></div>」 というタグを見つけましたが、これでは画像にリンクがつけられませんし、なぜか画像と画像の間に段が出来てしまいます。 どなたかよろしくお願いします。

    • ベストアンサー
    • HTML
  • 4枚の画像を均等間隔で一列に並べる

    4枚の画像を一列に並べようと思います。 4枚に与えられたスペースは550pxです。画像の下のコンテンツも550pxを基準に配置するので、4枚のうちの両側の2枚は550pxの両端に配置しようと思います。 この趣旨でコーディングしたのが下記URLです。 http://makoji.web.fc2.com/test/test_18/test.html 他の画像を margin-right: 14px; とすると綺麗に並びました。ただ確認をとったのは最近のブラウザだけで、古いブラウザでどうなっているのか分かりません。過去の例でうまく並んだと思ったらIE6.0で4枚目が2列目に改行されてしまっていたことがあります。 そこでmarginをブラウザに自動割り振りさせることが出来ないものかと思案するのですが・・・ とりあえず右端の画像を右端に寄せるために margin-right: 0px; margin-left: auto; としてみましたがダメでした。でも width: 125px; もしくは float: right; を挿入すれば解決できます。 しかしながら真ん中の2枚をどうすれば均等に配置できるかが分かりません。 この場合、古いブラウザを試せる環境を全部揃えて片っ端からチェックを入れるしかないのでしょうか。 -------------------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <style type="text/css"> <!-- * { font-size: 14px; font-wight: 100; color: #000000; } .wrap { margin: 0px auto; width: 700px; } .logo { border: solid 1px #FF0099; } .main { padding-top: 15px; padding-bottom: 15px; border: solid 1px #FF0099; } .main img { margin-right: 2px; float:left; display: block; } .menu { float: left; margin-top: 0px; margin-left: 10px; padding-left: 0px; } .menu li { margin-bottom: 2px; padding-top: 5px; padding-bottom: 5px; padding-left: 10px; width: 100px; list-style-type: none; background-color: #FFCCFF; } .list span { color: #FF0099; } .menu a:link { color: #FF0099; } .menu a:visited { color: #FF0099; } .menu a:active { color: #FF0099; } .menu a:hover { color: #FF0099; } .clear { clear: both; } /* インデックス */ .index_body { margin-top: 15px; padding-left: 133px; } .sample { margin-bottom: 10px; width: 550px; text-align:center; background-color: yellow; } .sample a { text-decoration: none; } .sample img { border: solid 1px #FF0099; float: none; } .sample .left { float: left; margin: auto auto auto 0px; text-align: center; } .sample .middle { float: left; margin: auto; text-align: center; } .sample .right { margin-right: 0px; margin-left: auto; text-align: center; } --> </style> </head> <body> <div class="wrap"> <div class="logo"> <img src="dot_999999.gif" width="698" height="120"> </div><!-- end of "logo"--> <div class="main"> <ul class="menu"> <li>ああ</li> </ul><!-- end of menu --> <div class="index_body"> <div class="sample"> <div class="left"> <img src="dot_999999.gif" width="123" height="170" alt="ああああ"> <div>aaaaa</div> </div><!-- end of "left" --> <div class="middle"> <img src="dot_999999.gif" width="123" height="170" alt="ああああ"> <div>aaaaa</div> </div><!-- end of 1of"middle" --> <div class="middle"> <img src="dot_999999.gif" width="123" height="170" alt="ああああ"> <div>aaaaa</div> </div><!-- end of 2of"middle" --> <div class="right"> <img src="dot_999999.gif" width="123" height="170" alt="ああああ"> <div>aaaaa</div> </div><!-- end of "right" --> </div><!-- end of "sample" --> <div><img src="dot_999999.gif" width="550" height="450" alt="" /></div> <div class="clear"></div> </div><!-- end of "index_body" --> </div><!-- end of "main" --> </div><!-- end of "wrap" --> </body> </html>

  • 画像を縦にそろえて表示させたいのです。

    画像を縦にそろえて表示させたいのです。 リストボックスの中身を「△」(1up.gif)「▽」(1down.gif)で入れ替える。 そんな画面を作ろうとしています。(今は画像を並べているだけです。) 「△」(1up.gif) 「▽」(1down.gif) の2っのボタンはリストボックス脇の上端と下端にタテに並べたい所ですが どうしても添付の画像のようになってしまい悩んでおります。 ※の行で何かしらやればよいのかと align="left" や BR Clear=ALL などを試したのですが「▽」ボタンだけがリストボックスの下の行に配置されてしまいます。 皆様のお知恵を拝借したく思います。 宜しくお願いします。 htmlソース <body> <hr align="left" width="100%" SIZE="5"> <select size="15" name="Listbox1" style="WIDTH:200px" multiple> </select> <IMG src="../images/1up.gif" align="top"> ※ <IMG src="../images/1down.gif"> <hr align="left" width="100%" SIZE="5"> <div align="left"> <IMG src="../images/Set.gif" </body>

    • ベストアンサー
    • HTML
  • HTMLで画像を囲むようにテキストを回り込ませることはできますか?

    htmlで、画像にテキストを回り込ませたいのですが、<img src="画像url" align="left">か<img src="画像url" align="right">ではなく、画像を真ん中に持ってきて下記のように左右にテキストを回り込ませることは可能ですか? テキストテキストテキスト テキスト    テキスト テキスト  画像 テキスト テキスト    テキスト テキストテキストテキスト

    • ベストアンサー
    • HTML

専門家に質問してみよう