ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

CSSテクニックコミュの助けてください。リキッドレイアウト。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
先日より解決できな問題が生じまして、どなたか手助けしていただけませんでしょうか

http://naokisumida.com/hoodie/base.html

現在このサイトをリキッドレイアウトで作っているのですが、CONTENTS部分の商品を並べるところが、
FLOAT:left;を使って左詰にすると、うまくレイアウトできません。

HTMLタグは以下の通りです。
<!--新着情報-->
<div class="itembox">
<h3 class="center-header-news"><img src="images/center-news.gif" alt="新着情報" title="新着情報" class="center-header-image" width="270" height="20" /></h3>
<h4>[2005/12/03] 入荷情報</h4>
<p class="news">CARHARTTのダック地ジャケットが入荷しました。</p>
<h4>[2005/12/01] HOODIE OPNENINGS</h4>
<p class="news">この度HOODIEをリニューアルオープンいたしました。B系ブランドや、アメリカンカジュアルブランドを低価格、高品質でお客様に提供できますよう、努力させて頂きます。何卒よろしくおねがいします。</p>
</div>
<!--//新着情報-->
<!--おすすめ商品-->
<div class="itembox">
<h3 class="center-header-reccomend"><img src="images/center-reccomend.gif" alt="オススメ商品" title="オススメ商品" class="center-header-image" width="270" height="20" /></h3>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<a href="" title="others"><img src="images/center-others.gif" alt="他の商品" title="他の商品を見る" class="center-others" width="90" height="16" /></a>
</div>
<!--//おすすめ筋商品-->
<!--売れ筋商品-->
<div class="itembox">
<h3 class="center-header-hotsell"><img src="images/center-hotsell.gif" alt="オススメ商品" title="オススメ商品" class="center-header-image" width="270" height="20" /></h3>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<div class="itemarea">
<a href="#"><img src="images/banner-540.gif" class="item-image" /></a><br />
<a href="#" class="text01">商品名</a><br />
<span class="text02">\5,000</span>
</div>
<a href="" title="others"><img src="images/center-others.gif" alt="他の商品" title="他の商品を見る" class="center-others" width="90" height="16" /></a>
</div>
<!--//売れ筋商品-->
<div id="center-bottom-menu"><a href="<{$home_url}>" title="ホーム">ホーム</a>|<a href="<{$view_cart_url}>" title="カートの中身">カートの中身</a>|<a href="<{$view_myaccount_url}>" title="マイアカウント">マイアカウント</a>|<a href="<{$view_inq_url}>" title="お問い合わせ">お問い合わせ</a>|<a href="" title="ヘルプ">ヘルプ</a></div>
</div>

スタイルシート
/*トップページ-----------------------------------------------*/

h3.center-header-news{
margin:5px 0px;
padding:0px;
height:20px;
}
h3.center-header-reccomend{
margin:5px 0px;
padding:0px;
height:20px;
}
h3.center-header-hotsell{
margin:5px 0px;
padding:0px;
height:20px;
}

.center-header-image{
margin:0px;
padding:0px;
display:inline;
}

.center-others{
margin:0px;
padding:0px;
}

.itembox{
padding:5px 0px;
margin:0px;
float:none;
}
.itemarea{
padding:5px;
margin:5px 0px 0px 5px;
width:100px;
float:left;
}

a img.item-image{border:2px solid #ffffff; width:100px; height:100px;}
a:hover img.item-image{border:2px solid #555555; width:100px; height:100px;}
a:action img.item-image{border:2px solid #555555; width:100px; height:100px;}

.item-name{text-align:left;}
/*トップページ-----------------------------------------------*/

解決策としまして、
<div id="center">内だけで、FLOATをクリアできれば大丈夫だと思うのですが、いろいろ調べたところできなさそうでした。
display:inline;で<div class="itemarea">をインライン要素にしてみたのですが、IEでは解決できたのですが、FIREFOXでは解決できませんでした。
<div class="itembox">で、FLOAT:left;が解除されて、くれればいけると思ったのですが、どうも解決できません。
CLEAR:both;を入れたところ、両脇のボックスもCLEARされて、一番下部にメインのコンテンツ部分がレイアウトされてしまいます。
いろいろ試してみたのですが、どうもまだ解決できないのです。

どなたか同じような症状を解決されたという方がいましたらお手伝いしていただければ幸いです。

お手伝いよろしくおねがいします。

コメント(6)

.itembox h3 { clear: left; }
これでいけるような気がしますが、試してはいません。
ceroさん>
ご返事ありがとうございます。
.itembox h3 { clear: left; }
を入れてみたのですが、左側全てがクリアされてしまって、無理でした。
今、ITMEDIAを参考にもう一度考えなおしています。

http://www.itmedia.co.jp/

レイアウトの仕方が僕のHTML内では、
左カラム、右カラム、コンテンツ
となっているのですが、ITMEDIAでは、
左カラム、コンテンツ、右カラムになっています。
なので、そちらに以降してみたら、CLEAR:left;が効くのではないかと思いまして。。。

ほんと、スタイルシートって難しいです。
もっと勉強しなくてわ。
中央カラムにはID振ってありましたね(見落としてました)。

#center .itembox h3 { clear: left; }

―これもダメっぽいですか?
creoさん、たびたびありがとうございます。
#center .itembox h3 { clear: left; }
でも、同じことになります。。。
IEだと、display:inline;
をitemarea内に入れてあげるときっちり表示はされるのですが、FIREFOXで思いっきりレイアウトが崩れてしまいます。。。

どうしたらいいものか。
もうこんな時間ですね。
解決できなくてかなり悔しいです。
詳しく試していませんが
itemboxにclear:leftを適用すると、その他エリアのfloatまで解除してしまうと思うので、『他の商品を探す』の
<a href="" title="others">を
<a href="" title="others"
style="display:block;clear:left;">
もしくはclear用のクラスを作成して適用すれば大丈夫だと思います。

こういったエリア内でのfloat解除は多々出てくるので、それ用のクラスや、<hr>を再定義してclear:leftとすると便利です。
※ブロックレベル要素であるか、display:blockにする必要がある。
そのためだけにタグを追加するのは本来あまり好ましくないのですが、他のエリアのfloat解除を回避するために仕方なく使う事があります。

あと、やっぱり左カラム、コンテンツ、右カラムでfloat:leftで回り込ませるの一般的だと思うので、左カラム、コンテンツ、右カラムの記述順は、難易度が高くなりそうな気がします(なんとなくですが)。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

CSSテクニック 更新情報

CSSテクニックのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング