• 締切済み

上下マージンの取り方(CSS)

スタイルシート(CSS)に携わる方々へ、 皆様の知恵を拝借したく、質問させていただきます。 段落間(P,UL等)の上下マージンの取り方についての質問です。 (A)予め段落の上マージンをゼロにリセットし、段落間は下マージンで操作  例:  p,ul { margin-top:0; margin-bottom:1em; } /* リセット */  .hoge { margin-bottom:0.5em; } /* 上の段落に指定 */ (B)予め段落の下マージンをゼロにリセットし、段落間は上マージンで操作  例:  p,ul { margin-top:1em; margin-bottom:0; } /* リセット */  .hoge { margin-top:0.5em; } /* 下の段落に指定 */ サイト構築において、(A)か(B)で悩んでいます。 皆様の意見を「具体的な理由」もあわせてお教え下さい。

  • HTML
  • 回答数5
  • ありがとう数3

みんなの回答

回答No.5

僕は最近はマージンはマージン。 パディングはパディング。 横幅は横幅でクラスを小分けにすることが一番多いですね。 htmlはクラスだらけになりますが、 あとでレイアウト修正になったときにcssだけいじれば、大抵は力技でなおってますかね。 事前にディレクターの本音はそれとなく探っておいて決める場合もありますw

noname#119957
noname#119957
回答No.4

間隔の調整は、上と下、どちらでとる事が多いですか? >> いままで、pとulで同じマージンを設定することはありませんでしたのでこのCCSの意味自体がわかりません。(リセットは最初に全部に対して行う:この方法はMDNの解説書なんかで常識的に解説されていますね^^) メインのCSSファイルでマージンとパッディングを0にセットしてから・・・ <p class="box1"></p> <ul id="navi"><li></li></ul> などの場合は、それぞれで形が別なので、独立したプロパティーとしていましたね。この場合、共通してpにプロパティーを与えるとフォントを変えたり、いろいろできますが、実質上こういうのは、めんどうなので、#wrapperとかbodyで一括に記述していましたね。。

noname#119957
noname#119957
回答No.3

その前に、CSSでは、基本的に、全てのマージン・パディングを0にリセットすることから作業を始めます。 cssの最初に * {  margin:0;padding:0; } をいれて全てゼロにリセットして置かないとブラウザによりこの規定値が異なりますので、ブラウザ毎にばばらばらの位置指定となって具合が良くないと思います。

misaki-umk
質問者

お礼

ご回答ありがとうございます。 >ゼロにリセットして置かないとブラウザによりこの規定値が異なりますので 確かにそうですね。 ただ、ken_tyan様も上下の段落に間隔を取りたい場合があると思います。その場合、やはり段落の上か下にマージンを設定する必要が出てきますよね。 ken_tyan様は、間隔の調整は、上と下、どちらでとる事が多いですか?

noname#100277
noname#100277
回答No.2

コンテンツの内容次第でしょう。 ドチラでも構わないと思います。

misaki-umk
質問者

お礼

ご回答ありがとうございます。 多くのサイトで流用できる「基本CSSセット」を作りたいのですが、その場合様々なケースで対応できるような設定が必要だと思います。 その上で、より汎用的に作るなら、aides様は、上と下、どちらをお考えになられますでしょうか?

回答No.1

結論からいうと、どっちを選んでもメリット、デメリットの確率は50%だと考えられます。 Aの方法だと、上のマージンを消したいときに上のマージンを消さなければならないし、Bの方法も下のマージンを消したいときに下のマージンを消さなければならない、というのは当然ですね。 Aだと上に要素を追加した時は自動的にマージンが取られているから新たにマージンを取る必要はないですが、下に要素を追加する場合は新たにクラスを指定するなりしなければなりません。 Bはまた同じですね。 A、Bどちらを採用するかは作成者or運営者の好みであり、作成するサイトの構造に依存するでしょう。 既存コンテンツの下にコンテンツを追加していくならBが(若干ですが)楽になるし、上にコンテンツを追加していく場合ならAを採用すると思われます。

misaki-umk
質問者

お礼

ご回答ありがとうございます。 ちなみにreggaepunc様は、現在どちらの方法をよくお使いになられていますか?

関連するQ&A

  • 箇条書きの、項目間のマージンをCSSで空ける

    箇条書きの項目間のマージンをCSSで空けるために li{ margin-top:0.5em; } と <style>-</style> に書きました。 ふつうの箇条書き: <ul> <li>AAAAA</li> <li>BBBBB</li> </ul> では、項目間にマージンができてくれたのですが、 画像を先頭にした箇条書きでは、だめでした。 たとえば、 <ul imagesrc="botan.gif"> <li>AAAAA</li> <li>BBBBB</li> </ul> とすると、項目間のマージンがゼロです。 なぜでしょうか?良い方法はないでしょうか?

    • ベストアンサー
    • CSS
  • CSSでマージンを残しつつ中央そろえにする方法について

     こんにちは、Phoenix001と申します。  趣味でホームページ製作をしている者です(ただし割と初心者です)。  先日、ネットサーフィンをしてホームページ作成の参考になるサイトを探していた所、 http://www.gardenxgarden.com/ というサイトを発見いたしました。  このサイトはサイトのサイズが横800pxだと思うのですが、1200pxで開くと左右に均等にマージンがあり、ウィンドウを小さくするとマージンからなくなり、さらにウィンドウを小さくしてもページが崩れないように出来ています。  私はこのようにマージンを作りつつ中央にサイトがあり、ウィンドウを小さくするとマージンからなくなるページは始めて見たので是非自分でもやってみたいのですが、CSSの設定はどうやるのでしょうか?  練習用にHTMLとCSSのソースを作りましたので、これでやり方を示していただけると幸いです。  HTML、CSS内容がメニューとコンテンツの(参考サイトのページ3分割ではなく)2分割です。マージンのやり方なので問題はないと思います。  なるべく間違いがないように骨組みは(マージン以外)作ったつもりですが、間違えていたらご容赦ください。  どうぞ、よろしくお願いいたします。 ■練習用HTML <head> <title>マージンがあり、ウィンドウを小さくするとそこからなくなっていくサイトを作るには?</title> <link rel="stylesheet" type="text/css" href="index.css" media="screen,print"> </head> <body> <div id="main">■■←Mainで全体を覆いますよね?使用しない場合は消してください。 <div id="head"> <h1>マージンのあるサイト</h1> </div> <div id="menu"> <h2>リンク</h2> <ul> <li>マージン</li> <li>作りたいです</li> </ul> </div> <div id="content"> <p>マージンがあるのに中央にそろえられて、ウィンドウを小さくするとマージンから消えていくサイトは始めてみました。是非創ってみたいです。解答しやすくなるようにコンテンツのデータを入れてあります。</p> <h2>案内</h2> <p>HTML、CSSが分かる方、解答をお願いいたします。</p> <dl> <dt>マージン</dt> <dd>ページの余白のこと</dd> <dt>やり方</dt> <dd>分からないです</dd> <dt>作る意欲</dt> <dd>沢山あります。</dd> </dl> </div> </div> ■HTML終了 ■練習用CSS(いらないものは消して、いるものは追加してください。h1、h2は分かりやすくなるように入れています。) body { background-color: white color: black; margin-left : auto ; margin-right : auto ; } h1 { font-size: 1.6em; background-color: #480; color: white; padding: 0.2em; } h2 { font-size: 1.0em; border: 1px solid #480; padding: 0.2em; } p { line-height: 1.6em; } div#main { float: middle; width: 800px; } div#menu { float: left; width: 9em; background-color: white; margin-right: 1em; padding: 0.4em; } div#menu h2 { font-size: 1em; } div#menu ul { font-size: 0.9em; list-style-type: none; margin-left: 0; padding-left: 0.5em; } div#menu li { margin-bottom: 0.4em; } div#content { float: left; width: 80%; } div#content h2 { font-size: 1.2em; border: 1px solid #800; padding: 0.2em; } div > *:first-child { margin-top: 0; } ■CSS終了

    • ベストアンサー
    • HTML
  • css使って<br>みたいに改行したいけど出来ない

    ブログの記事を書くときに<br/> を連発して改行していたんですが、seo敵によろしくないらしいのでこれからは cssを使って書き変えていこうと思いました ワードプレスのエディターから style.css の一番下に p.p1{ margin-top: 1em; } p.p2{ margin-top: 2em; } p.p3 { margin-top: 3em; } こうやって書きました。 それでブログの記事htmlを書くときには <p class=“p1"></p> ⇐これ書けば1行空白が空く <p class=“p3"></p> ⇐これ書けば3行空白が空く と思い書いてみたんですが <p class=“p1"></p> <p class=“p3"></p> どちらを書いても、記事は1行分の空白しか空きませんでした 大げさに p.p6{ margin-top: 6em; } というのをcssに書いて 記事のhtmlに <p class=“p6"></p> と 書いても空白は1行しか空きませんでした(;へ:) ブラウザのキャッシュを消して表示し直したりしてますが駄目です1行しか空きません なぜでしょうか??cssの記入場所が悪いのか書き方が悪いのか margin-top   を margin-bottom に変えても変わりませんでした 初心者にもわかるよう、 cssを使った改行、レイアウト変更方法を教えてください なんかcssで指定して html側になんかp classみたいな指定をした方が SEO対策になっているとか ルールにのっとっているらしいですが ググってもわかりませんでしたし なぜか一行分の空白しか空きませんで困っております。 こうやって何行も空けたいです! <p style="margin-top:6em;"></p> とhtml側に書くと改行思ったようにできます これが一番簡単ですがそれもcssで指定してないから良くないらしいです たすけて!

  • CSSレイアウト マージンについて

    下記のタグにてメインスペースを両側10pxにしたいのですが、うまくいきません。 下記のようなレイアウトにてうまくmarginなどを行う場合は どのようにしたらよろしいでしょうか? なお簡単にタグを記載してくださいますと幸いです。 CSS body {    margin:3em; color:#339900; background:#ffffff; } h1 { padding:0.1em; text-align:center; leter-specing:1em; border-top: 1px solid #000000; border-bottom: 1px solid #000000; } .mainspace { background:#aaaaaa; width:480px;       margin-right:10px;       margin-left:10px ; position:absolute; left:260px; } .leftmenu { background:#bbbbbb; width:200px; position:absolute; left:50px; } .rightmenu { background:#cccccc; width:200px; position:absolute; right:50px; } HTML <h1>メインタイトル</h1> <div class="mainspace"> <h2>サブタイトル</h2> <p> ただいまテスト中です。<br> ただいまテスト中です。<br> ただいまテスト中です。<br> ただいまテスト中です。<br> ただいまテスト中です。<br> </p> </div> <div class="leftmenu"> <ul> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> </ul> </div> <div class="rightmenu"> <ul> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> <li>メニュー</li> </ul> </div>

    • ベストアンサー
    • HTML
  • CSSの記述でのクラスの定義で

    CSSの記述の中で .yoko1 { padding : 0 0 5px 10px; border-bottom: 4px solid #00ffff; margin-top: 1em; margin-bottom: 2em; } とクラス名が付いています p.yoko1 { padding : 0 0 5px 10px; border-bottom: 4px solid #00ffff; margin-top: 1em; margin-bottom: 2em; } こっちはタグ名に応じたクラスを定義していますが タグ名に応じたクラスを使用するメリットはなんなのでしょうか? 全てはじめに書いたクラスをしようしても問題はないように思うのですが、、まだ勉強始めたばっかりで疑問に思い質問させていただきました。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSファイルのコメント

    CSSファイルにコメント(/*・・・・*/)を入れるとIEで表示されないことがあります。 ftpするとWEB上では表示されるようです。 ローカル環境だけで起こるようなのですが、このような現象後存知ですか? たとえば、CSSの内容は /*ヘダー*/ h1,h2,h3,h4,h5,h6,ul,ol,dl,p { margin-top: 0px; margin-bottom: 0px; } /*内容*/ body { margin: 0px auto; width: 750px; font-size: 0.8em; color: #333333; line-height: 1.5em; 宜しくお願いします。

    • ベストアンサー
    • CSS
  • CSSでmargin-left: -20px;という記述はありですか?

    ulの●の部分がどうしても左にレイアウトされてしまうので、ul部分を全体的に右に動かしたいと思っています。 しかし下記のようにマイマスをつかいことぐらいしか思いつきませんでした。 文法上?これは問題ないのでしょうか。 また、他に良い方法があったら教えてください。 div#content ul { margin-left: -20px; margin-bottom: 1em; margin-right: 20px; margin-left:1em; }

    • ベストアンサー
    • CSS
  • CSSについての質問です

    下記のプログラムについて解らないのですが、containerの内のh1と ulの位置関係ですがh1にmargin-bottom: 0と指定し、ulにmargin-top: 0としてあるが、この2つがくっつかないのは何故でしょうか? 親切な方、ご回答いただけますようよろしくお願いします。 body{ background-color: #f2f2f2; padding: 0; margin: 0 } div#container { width: 750px; margin-left: auto; margin-right: auto; background-color: white } h1{background-image: url(画像.jpg); width: 640px; height: 120px; margin-bottom: 0; margin-left: 50px; } ul{ list-style: none; text-align: center; padding: 0; margin-left: 10px; margin-top: 0 } li{ width: 128px; float: left; padding: 0px; margin: 0px; }

  • マージン部分の表示がうまくいかない

    素朴な質問です。 キミドリのDIVの中にテキストが入る「A(青)」のDIVが入れ子になっています。 テキスト量に応じてそれぞれ縦のサイズを可変させます。 親のキミドリを基準に上下から50pxのマージンを取る意図で「A(青)」に“margin-top:50px”“margin- bottom:50px”を設定しているのですが、Safari3、Firefox3では上下50pxのマージン部分がキミドリで表示されません。 おそらく表示されないのが正しいCSSの仕様通りだとは思うのですが、マージン部分もキミドリで表示したい場合ははどのようにソースを書けばいいでしょうか? 親のキミドリにpaddingを設定するしかないのでしょうか? 以下ソースです。 ご教示よろしくお願いします。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>サンプル</title> </head> <body style="margin:0px;padding:0px;"> <div style="background:#0F0;width:220px;"> <div style="width:100px;background:#00F;margin-top:50px;margin-bottom:50px; margin-left:10px;">あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</div> </div> </html> </body>

  • cssでのテーブル

    初心者です。 本を読みながら、スタイルシートでテーブルを作っているのですが、 左に設置したメニュー(縦に並べたボタン)のテーブルの右側に不要なスペースができ、メニューのテーブルと同じ色になってしまいます。 【内容】 .tdmenu{ vertical-align:top; background-color:#fa8072; width:140px; } p.menu{ font-size:0.75em; margin-left:0; margin-right:0; margin-bottom:50px; margin-top:0; width:140px; background-color:#fa8072; height:2em } これが適応されていると思われます。 回答よろしくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう