プロが教えるわが家の防犯対策術!

リストを表示して画像を右にだしたのですが、float:right を使用した場合、変なスペースが表示されます。
隙間なく表示したいです。だれか、ご教示願います。

以下ソースです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobil … />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></s …
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobil …

</head>

<body>

<div data-role="page">
<div role="main" class="ui-content">
<ul data-role="listview" data-split-icon="info">
<li data-icon="false">
<a href="xxxxxxx" target="_self">
<div style="float:right;"><img src="exsample.jpg" width="100" height="100"/></div>
<h3>リスト要素1</h3>
<p>リスト要素2</p>
</div>
</a>
</li>
</ul>
</div>
</div>

</body>
</html>

A 回答 (2件)

スタイル(プレゼンテーション)もHTML(文書構造)も質問からは読取れないので、具体的なアドバイスは不可能です。


>変なスペースが表示されます。
 これは、firebugでどの要素に由来する物か確認する。

 『リストを表示して画像を右にだしたのですが、』に絞って、潤を追って方法を説明します。

[1] ひたすら文書構造をHTMLでマークアップします。
 構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )は、現在のHTML+CSSを用いたページ作成の基本ですが、もう15年になるのに(^^)

下記をサンプルとします、
<body>
 <header>
  <h1>ページタイトル</h1>
  <nav>ナビゲーション</nav>
 </header>
 <section>
  <h2>写真リスト</h2>
  <dl><!-- 写真が主要なコンテンツなのでimg要素を使用する。-->
   <dt id="Photo1"><img src="" width="" height="" alt=""></dt>
   <dd>画像の説明</dd>
   <dd>撮影場所</dd>
  </dl>
  <nav>
   <h3>目次</h3>
   <ol>
    <li><a href="#Photo1">写真1</a></li>
    <li><a href="#Photo2">写真1</a></li>
   </ol>
  </nav>
  <aside>
   <h3>本文とは関係ない記事</h3>
  </aside>
 </section>
 <footer>
  <h2>この文書のフッタ</h2>
 </footer>
</body>

[2] HTMLが正しいかAnothe html Lint( http://www.htmllint.net/html-lint/htmllint.html )などでチェックし、修正します。
 これがまずいと期待通りにデザインできないので

[3] スタイルシートを書きます。
 このとき、[1]の文書構造を使ってセレクタ書きます。
section dl dt{clear:right;}
section dl dt img{float:right;}

これで画像が右でリスト項目ごとに整理されるはずです。

★数日前に( https://oshiete.goo.ne.jp/qa/9016357.html )でも回答しましたが、きちんとHTML書くことが基本です。

[より具体的なサンプル]
★ Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html )
 の[DATA}でチェック済みのHTML5+CSS2.1です。
★ タブは_に置換してあるので戻す。
★ :は:(全角)に置換してあるので戻す。

<!doctype html>
<html>
<head>
_<meta charset="utf-8">
_<title>サンプル</title>
_<meta name="description" content="">
_<meta name="author" content="IRUKA">
_<link rel="stylesheet" href="css/style.css">
<style media="screen">
<!--
/* ここから一般的な1+3+1カラムの指定 */
html,body{margin:0;padding:0;}
header,section,footer{width:95%;min-width:640px;max-width:1000px;margin:0 auto;}
section{position:relative;}
body>section>*{margin:0 200px;padding:5px;}
section nav,section aside{margin:0;position:absolute;top:0;width:180px;height:100%;}
section nav{left:0;}
section aside{right:0;}
section dl{position:relative;padding:0;}
section dl{}
section dl dd{margin:0;padding:0 0 0 1em;text-indent:1em;}

/* ここからが主題の画像を右にfloatの指定 */
section dl:after{content:"";display:block;clear:right;height:0;}
section dl dt img{float:right;width:30%;height:auto;margin:2px 5px;padding:5px;}
section dl dt{clear:right;font-weight:bold;padding-top:5px;}
/* ここまで */
/* わかりやすいように色指定 */
body{background-color:gray;}
body>section>*{background-color:silver;}
section dl{background-color:silver;}
section nav,section aside{background-color:lime;}
section dl dt img{background-color:white;}
-->
</style>
</head>
<body>
_<header>
__<h1>ページタイトル</h1>
__<nav>ナビゲーション</nav>
_</header>
_<section>
__<h2>写真リスト</h2>
__<p>使用した画像は<a href="https://pixabay.com/">Pixabay - 無料の写真</a>のフリー画像です。</p>
__<dl>
___<dt id="Photo1">金魚の写真1<img src="https://pixabay.com/static/uploads/photo/2012/01 … width="640" height="480" alt=""></dt>
___<dd>画像や画像のタイトルは定義リスト(dd)の定義要素(dt)、画像の説明は定義リストの説明要素(dd)を使ってマークアップする。</dd>
___<dt id="Photo2">金魚の写真2<img src="https://pixabay.com/static/uploads/photo/2013/12 … width="640" height="426" alt=""></dt>
___<dd>画像の説明</dd>
___<dd>HTMLやCSSを学ぶときに、素人の説明をつまみ食いしても上達しません。多くは誤まったHTMLやCSSを覚えてしまいます。</dd>
___<dd>まず仕様書をしっかり読んで理解してから書いてみる。判らないところを探すというのが、最も短期間で上達します。</dd>
___<dt id="Photo3">金魚の写真3<img src="https://pixabay.com/static/uploads/photo/2012/01 … width="640" height="480" alt=""></dt>
___<dd>divは文書構造を示すためです。安易に使ってはならない。適当な要素がないか探す。</dd>
___<dd>適当な要素がないときは、idやclassで何のブロックであるかを示す。例えば要約だったら(summary)、アルバムだったら(album)とか・・</dd>
___<dd>その文書構造を元にセレクタを書く。デザインのためにclassやidを書くなんて事は決してしない。初心者が最も犯しやすい間違い。後でメンテナンスで困る。</dd>
__</dl>
__<nav>
___<h3>目次</h3>
___<ol>
____<li><a href="#Photo1">写真1</a></li>
____<li><a href="#Photo2">写真2</a></li>
____<li><a href="#Photo3">写真3</a></li>
___</ol>
__</nav>
__<aside>
___<h3>本文とは関係ない記事</h3>
__</aside>
_</section>
_<footer>
__<h2>この文書のフッタ</h2>
_</footer>
</body>
</html>
    • good
    • 0

どのようなスタイルシートなのかが判断できないので



 まず、基本が間違っている。HTMLが間違っていたら、ブラウザはその構造を補完しますが、その時点で期待と異なる物になるし、HTML5以前はブラウザにより異なるので期待通りになりません。
<!DOCTYPE html>なのでHTML5だと思いますが、HTML5では、DIVは原則として使いません。【超重要】
【引用】____________ここから
NOTE:Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable. Use of more appropriate elements instead of the div element leads to better accessibility for readers and easier maintainability for authors.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで
[4.4 Grouping content — HTML5]( http://www.w3.org/TR/2014/REC-html5-20141028/gro … )より
 もちろん、それ以前のHTMLであっても『DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加する( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』でデザインのために書く物ではありませんでした。以前のHTMLでは文書構造が分からないために、HTML5では文書構造を示す新しい要素が追加され( http://standards.mitsue.co.jp/resources/w3c/TR/h … )、DIVが使えなくなった。
 
<body>
 <header><!-- この文書のヘッダ -->
  <h1>ページタイトル</h1>
 </header>
 <section><!-- この文書の本文(見出し(h)を必ずひとつ持つ) -->
  <h2>内容の見出し</h2><!-- このsectionの見出し -->
  <ul><!-- 順不同リスト -->
   <li></li><!-- リストの項目 -->
   <li></li>
と率直に文書構造だけをHTMLで記述して、スタイルシートで指定して行きます。画像がそのページの重要なコンテンツ(内容)であれば

<section><!-- この文書の本文(見出し(h)を必ずひとつ持つ) -->
 <h2>内容の見出し<img src="" width="" height="" alt=""></h2><!-- このsectionの見出し -->
 <ul><!-- 順不同リスト -->
  <li></li><!-- リストの項目 -->
  <li></li>

とすればよい。
 そうでなければ、背景か内容の追加(content:)で右に配置して、内容自体はその分marginを取ればよい。

><h3>リスト要素1</h3>
><p>リスト要素2</p>
 の意味が不明--並列したリスト項目なのに一方はh3
 ひょっとして
<dl>
 <dt>定義</dt>
 <dd>説明</dd>
と定義リストを使うか
<ul><!-- またはol -->
 <li>リストの項目
  <p>この項目の詳細</p>
 </li>
を使うべきじゃないかと・・・

>変なスペースが表示されます。
 これも何を言われているかわかりませんが、h1,h2,・・p,ul,ol,liなどには、ブラウザによって異なりますがmarginやpaddingによって余白を持ちます。
 ウェブ開発でしたら、Web 開発( https://addons.mozilla.org/ja/firefox/extensions … )ツールの豊富なfirefoxをお使いだと思いますが、それらは Firebug( https://addons.mozilla.org/ja/firefox/addon/fire … )で簡単に調べられます。
    • good
    • 0
この回答へのお礼

<div style="float:right;">の部分がまず間違っているということでしょうか?


アドバイスを元にいかのように修正しましたが、意図している表示となりませんでした。
どこに不備があるかご教示いただけないでしょうか?

<style type="text/css">
h2.sample1:after {content: url("xxxx.jpg") }
</style>


<li data-icon="false">
<h2 class="sample1"><img src="" width="" height="" alt=""></h2><!-- このsectionの見出し -->
<ul><!-- 順不同リスト -->
<li>テスト1</li><!-- リストの項目 -->
<li>テスト2</li>
</ul>
</li>

cssの定義として①を追加し、htmlで②を追加しましたが。
意図している表示となりませんでした。

以下のような表示となりました。
--------
画像
テスト1
テスト2
--------

希望としては、以下のような感じに表示したいです。
--------
テスト1  |画|
テスト2 |像|
--------

お礼日時:2015/07/12 00:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!