教えて!gooにおける不適切な投稿への対応について

div要素を左右交互に配置していくと重なってしまいます。
どうしたらよいでしょうか。

gooドクター

A 回答 (2件)

重なるのが嫌なら、floatにすればいい。

そうすれば、重なる状況では下に落っこちる。

どうしたら?ではなく、どうしたいのかです。なぜ重なるのかは、左右の幅が合計で親要素の100%を越えているからではないかと推察します。計算してみてください。

左右の幅がmarginとwidth+border+paddingの合計の値が親要素の100%以下になっていますか?
または、
box-sizing: border-box;の指定をし、marginとwidthの合計の値が親要素の100%以下になっていますか?


どうしたらよいのでしょうかって、私は重なっても困らないので、そのままでもいいのでは?と思います。dragon_さんが、どうしたいの?サイズを小さくしてでも重ならないようにしたいのか、大きさはそのままで別のデザインにしたいのか?



以下は幅50%のdiv要素を左右交互に配置した例です。50%が2つなので、100%です。

<style type="text/css">
div{
width:50%;
box-sizing: border-box;
float:right;
margin:0;
padding:1em;
background:#ffdddd;
border:1px solid #ffffff;
}
div:nth-child(odd){
float:left;
background:#ccffff;
}
</style>
</head>

<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</body>
</html>
    • good
    • 0

DIVでは分かりません。

大原則なので御存知だと思いますが、DIVは『id属性及び class属性と併用することで、文書に構造を付加するため( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』のものでデザインのために使用するものではありません。HTML5では、
【引用】____________ここから
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 … )]より
翻訳すると「注意:著者には、他に適切な要素がない時の最後の最後の手段としてDIV要素を使用することが強く推奨される。DIVでないより適切な要素を使用する事は、読者にはより良いアクセシビリティを著者にはメンテナンス性の向上につながる。」

 DIVでは分からないので、私の経験からその質問に該当する事象として次の場面が思い浮かびます。

 HTML5で表現すると、多分次のような場面だと思われます。
<body>
 <header>文書のヘッダ</header>
 <section>主文
  <section>
   項目記事
   <nav>ナビゲーション目次</nav>
   <aside>このsectionと直接関係ない記事</aside>
  </section>
  <section>
   項目記事
   <nav>ナビゲーション目次</nav>
   <aside>このsectionと直接関係ない記事</aside>
  </section>
・・・・・
 </section>
 <footer>この文書のフッタ</footer>
</body>
★HTMK5未満の場合は、<section></section>は<div class="section"></div>となっていたところです。

 とすると、この質問は
「sectionごとのナビゲーションと関連記事を、そのsectionの右左に配置したいが、sectionが短い時に重なってしまう。それを重ならないようにしたい」
(対策)
1.左右に配置されるコンテンツの高さが分かっている場合、それが属するsectionのmin-heightを指定する。
┌─┐┌───┐┌─┐
│↑││ ↑ ││↑│
│固││min- ││固│
│定││height││定│
│↓││ ↓ ││↓│
└─┘└───┘└─┘
2.左右に配置されるコンテンツの高さが未定の場合は、overflow:autoなどでスクロールを提供する。
になるでしょう。
┌─┐┌───┐┌─┐
│↑││ ↑ ││↑↑
│未││ 未 ││未scroll
│定││ 定 ││定↓
│↓││ ↓ ││↓│
└─┘└───┘└─┘

 別の状況でしたら、文書構造を分かるように指示してください。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング