下記のようなHTML、CSSで、
floatしたdiv「leftside」内にp要素を配置すると
p要素の上下に空間が発生します。
このp要素の上下の空間はなんでしょうか?
どうすれば消えますか?
ちなみに、スタイルシートから「leftside」の「float: left;」を削除するとp要素の上下空間はなくなります。
または、pタグで囲まなくても空間は消えます。
よろしくお願いいたします。
■Html
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="test_style.css" media="all">
</head>
<body>
<div id="warapper">
<!-- ヘッダ -->
<div id="head">
</div>
<!-- 左サイト -->
<div id="leftside">
<p class="test">leftside</p>
</div>
<!-- コンテンツ -->
<div id="contents">
contents
</div>
<!-- フッター -->
<div id="footer">
<p>fotter</p>
</div>
</div>
</body>
</html>
■Css
@charset "utf-8";
body{
/*font-family: "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "MS Pゴシック", "MS PGothic", sans-serif;*/
font-family: "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
font-size: 90%;
text-align:center;
padding: 0;
margin: 0;
background-color: #fff;
}
#warapper{
text-align: left;
width: 800px;
margin:0 auto; /*ページ全体をセンタリングする指定*/
padding: 0;
background-color: #ffffcc;
}
#head{
background-color: #000;
height: 160px;
margin: 0 0 20px 0;
padding: 0;
position: relative;/*ロゴ画像を右下に配置するため*/
}
#topbar{
background-color: #dcdcdc;
height: 50px;
margin: 0 0 20px 0;
padding: 0;
}
#leftside{
background-color: #ccc;
width: 180px;
float: left;
padding: 0;
margin: 0 0 20px 0; /*下方向に余白を設ける*/
overflow:hidden;
}
#contents{
background-color: pink;
width:600px;
float: right;
padding: 0;
margin: 0 0 20px 0; /*下方向に余白を設ける*/
}
#contents_all{
background-color: pink;
margin: 0 0 20px 0; /*下方向に余白を設ける*/
padding: 0 0 0 0;
}
#footer{
background-color:#666;
text-align: center;
clear: both;
margin: 0;
padding: 0.5em 0;
}
.test {
background-color: red;
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ウェブページ製作されているならfirefoxと Firebug(
https://addons.mozilla.jp/firefox/details/1843 )はお使いだと思いますが、それはp要素のもつマージンだという事は分かりますよね。英文の場合は、段落は前後にmarginをとって表示するのが一般的ですが、日本語は文字も大きく、新しい段落はインデントで示しますので、タイプセレクタで
p{margin:0;line-height:1.8em;text-indent:1em;}
のようにしておくと良いでしょう。他のp要素--例えば画像を入れるためにpを使うときは、しdiv.figure>p{text-indent:0}として上書きします。
まだスタイルシートでのデザインを始められたばかりのように見受けられますので、今のうちに大事な事を簡単に説明しておきます。
<!doctype html> これはHTML5のDocument typeですが、そうなるとdivは安直に使えません。
Note:Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable.( http://www.w3.org/TR/html5/grouping-content.html … )
著者は他に適切な要素がないときの最後の最後の手段としてdiv要素を使用する。
この場合は明らかに
<body>
<header>
<h1>タイトル</h1>
<nav>
<p>ナビゲーション</p>
</nav>
</header>
<section>
<h2>本文タイトル</h2>
<p>記事</p>
<section>
<h3>項見出し項見出し項見出し</h3>
<p>HTML5ではh(headding)ではなくsectionの階層で階層が決まる。</p>
<section>
<aside>
<p>本文と直接関係ない(asideな)記事。これは本文より前に書かない!!</p>
</aside>
</section>
<footer>
<h2>文書情報</h2>
</footer>
</body>
ですよ。
※HTML5 では、文書をよりよく構造化するために、次の要素が新しく追加されました。( http://standards.mitsue.co.jp/resources/w3c/TR/h … )
たとえ(HTML4で)DIVを使っても<div id="warapper">や<div id="leftside">はありません。
『DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するため( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』でしたから、
<body>
_<div class="header">
__<h1>タイトル</h1>
__<div class="nav">
___<p>ナビゲーション</p>
__</div>
_</div>
_<div class="section">
__<h2>本文タイトル</h2>
__<p>記事</p>
__<div class="section">
___<h3>項見出し項見出し項見出し</h3>
___<p>記事</p>
__</div>
__<div class="aside">
___<p>本文と直接関係ない(asideな)記事。これは本文より前に書かない!!</p>
__</div>
_</div>
_<div class="footer">
__<h2>文書情報</h2>
_</div>
</body>
プレゼンテーションにスタイルシートを用いる最大の理由は「構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」なのですから、HTMLに文書構造と関係ないことは書かないほうがメンテナンスも楽になります。例えば将来asidを右にしたいとか、スマホだと下にというとき、left-sideじゃまずいでしょ。
そのうえで、スタイルシートでscreen対象のデザインをしていきます。
段組にfloatを使うと本文(section)内でfloatやcleaerが使えませんし、そもそも重要でないものを先に書くのはSEO的にもまずい。
[CSS2.1]<head></head>内に記述する場合。
・たったこれだけ
・必ず基点となるセレクタを書くようにしましょう。(CSS2.1)
・グループ化,継承を活用しましょう。
<style type="text/css" media="screen"><!-- HTML5はtypeは不要,mediaはかならず指定しておく -->
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6,p{margin:0 auto;line-height:1.8em;}
p{text-indent:1em;}
div.header,div.section,div.footer{
width: 80%;
min-width:460px;max-width:800px;/* スマホや幅広ディスプレイ用下限と上限 */
margin:0 auto;padding: 5px;
position:relative;
}
div.header{
padding-bottom:50px;
min-height: 160px;
position: relative;
}
div.header div.nav{
height: 50px;
position:absolute;bottom:0;left:0;width:100%;
}
div.section{padding-bottom:20px;min-height:300px;}
div.section h2,div.section p,div.section div.section{
margin-left:180px;
width:auto;
}
div.section * p{margin:0;}
div.section div.section{min-width:0;min-height:0;padding:0;margin:0;}
div.section div.aside{
width: 180px;
position:absolute;
top:0;left:0;
height:100%;
}
/* 色づけ */
div.section div.aside p{background-color: red;}
div.header{background-color:black;}
div.header div.nav{background-color: silver;}
div.section div.aside{background-color: aqua;}
div.section{background-color: fuchsia;}/* pinkはキーワードにない */
div.section div.section{background-color:yellow;}
div.footer{background-color:gray;}
-->
</style>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS htmltとcssのコードで 1 2022/11/26 13:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
複数のボタンを等間隔に、かつ...
-
<div id="container">の使いか...
-
html の divとtable の役割
-
HTML属性での「""」 「''」違い
-
オシャレな区切り線はありませ...
-
DD,DT,DDを横並び。paddingとma...
-
footerのclear:bothが効きません
-
div要素が重なってします
-
背景画像に全体または部分的に...
-
h1を親要素の縦中央、画像の横...
-
HTMLのJIS規格について
-
divとpの使いわけ
-
インラインフレームのページ内...
-
HTML5の終端タグ「 />」について
-
可変長要素を中は左寄せのまま...
-
h1に自分自身へのリンクを張...
-
[CSS]リキッドレイアウト上で、...
-
ローカルとWeb上で見え方が違う...
-
min-heightとheightの違いについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
div要素が重なってします
-
HTML属性での「""」 「''」違い
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
html の divとtable の役割
-
<div id="container">の使いか...
-
divとpの使いわけ
-
min-heightとheightの違いについて
-
HTML5 iframe の代わり
-
divの中に外部のHTMLを埋め込む
-
3カラムレイアウトで「常に残り...
-
ヘッダーを左右に二分割する方...
-
画面を縮小するとカラムが落ち...
-
reuterのScraypingで不思議な現...
-
htmlの見出しタグ(<h1>)の次...
-
1サイト内にHTML5とXHTMLが混在...
-
inline-blockをネストすると表...
-
html5でheaderの中にnav
-
<!-- #BeginLibraryItemとは
おすすめ情報