• ベストアンサー

CSSハックの使い方を教えてください

CSSでサイトを作っているのですが、フッターとメインのwrapperの間を開けるのに、どうしてもすべてのブラウザで共通のCSSではできません・・・かなり格闘したのですが・・・ そこで、この際CSSハックを使おうと思っています。 といっても、よくわかってないのですが、CSSハックを使えば、IE6にはこの指定、IE7にはこの指定、Firefoxにはこの指定、opera、safari・・・ など個別のブラウザに異なったCSSを指定することができるのでしょうか? 実際の記述方法を教えていただけないでしょうか? 「firefoxとopera」にはwrpperにmargin-bottomをかけて、IE6,7にはfooterにmargin-topをかけて解決しようと思うのですが・・・ ちなみに、この現象のほかの解決方法ってあるのでしょうか? #wrapper{ position:relative; width:870px; margin:0px auto; text-align:left; } #foot{ position:relative; width:100%; height:auto; clear:both; }

noname#64096
noname#64096
  • HTML
  • 回答数6
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • abril
  • ベストアンサー率69% (388/560)
回答No.6

推測でもう1パターン。 ・#footは、#wrapperの内側で#wrapperに対して100%の幅である。 ・#footは、#leftもしくは#rightの何れか描画エリアが垂直方向に長い方から常に35pxの余白を伴う。 ---------------------------------------------------------------------- 【HTML】 ---------------------------------------------------------------------- (省略) <!-- ********* ラッパー ******** --> <div id="wrapper"> <!-- ********* ヘッダー ******** --> <div id="head"> ヘッダー </div> <!-- ********* 左側 ******** --> <div id="left"> 左側 </div> <!-- ********* 右側 ******** --> <div id="right"> 右側 </div> <!-- ********* フッター ******** --> <div id="foot"> フッター </div> </div> </body> </html> ---------------------------------------------------------------------- 【CSS】 ---------------------------------------------------------------------- /* ラッパーの設定*/ #wrapper { overflow: hidden; width: 870px; margin: 0 auto; text-align: left; } /* ヘッダーの設定*/ #head { width: 870px; height: 88px; background-image: url(img/head-bg.gif); margin: 0; } /* 左側の設定*/ #left{ width: 200px; float: left; margin: 0 0 35px 0; } /* 右側(メインコンテンツ)の設定*/ #right { width: 650px; float: right; margin: 0 0 35px 0; } /* フッターの設定*/ #foot { clear: both; width: 100%; } ---------------------------------------------------------------------- 上記、#wrapperの内側に#footが入る場合の変更点: ・<div id="wrapper">からclass="clearfix"は削除。その替わり、#wrapperに"overflow: hidden;"を追加して#wrapperに高さを認識させる。 ・#wrapperから不要になった"padding-bottom: 35px;"を削除。 ・#leftと#rightにそれぞれmargin-bottomの値を35px追加。 ・#footに"clear: both;"を追加。 これでもhackは不要です(少なくとも先程の検証環境上では。おそらくMac OSXでも主要モダン・ブラウザならば問題ないと思います。※これは検証していませんので保証しませんが)。 …余計な事かも知れませんが。 質問履歴を見るとこのHTML+CSSの分野だけではなく、サーバ移管、CGI、PHP、グラフィック、フルFlashサイト、MovableType設置…等々、ご自身でビギナーと仰られている割には正直言って驚くほど一気に広範囲に手を出されている様ですが、一つ一つ最低限の基礎をきちんと理解するところまではクリアしてから進まないと、いつまで経っても正しい知識は身に付かずスキルを自分のものにすることはできず、従って応用が利かない状態が続くと思います。残念ながら現在の状態ではHTML+CSSですら(質問者様はそうは思っていらしゃらないのかもしれませんが)「基本的な知識は身につけている」とは言えません。 趣味ではなくお仕事でされている以上、必要最低限の事は自ら学んで確実なものにしていかなければ、いくらこの場で解決方法を回答者から聞くことができたとしても、「そこまで」止まりでしょう。

noname#64096
質問者

お礼

いつもありがとうございます。 自分のいままでしてきた質問を掘り出されるのは正直、恥ずかしいですね(笑 確かに以前質問させていただいて、FLOATやPOSITIONについて理解するといったものの、ほとんど理解できないまま時間を消化しています・・・ 問題の解決方法はNo2の方の回答とNo5のいただいた回答を組み合わせ?て解決しました。 四苦八苦でしたが・・・ 余計なことなんてとんでもありません。 確かにそのとおりです。あくまで、自分ではですが、一番理解しているつもりのCSSプラスHTMLをなんとかものにするため努力していきたいと思います。 ありがとうございました。

その他の回答 (5)

  • abril
  • ベストアンサー率69% (388/560)
回答No.5

ソースを見ましたが… 失礼ながら相変わらず、positionやfloatを「理解して」定義してらっしゃるとは思えません。 ほぼANo.4の回答者様のご指摘と被りますが: ---------------------------------------------------------------------- /* ラッパーの設定*/ #wrapper{ position:relative;→子要素にabsoluteを使用しているわけでもないので不要。 (省略) } /* ヘッダーの設定*/ #head{ (省略) float: left;→親要素の幅一杯でfloatする意味がないので不要。 (省略) } /* 左側の設定*/ #left{ (省略) height:auto;→初期値がautoなのでこれも(この提供されたソースを見る限りは)不要。 (省略) margin: 0 0px 35px 0;→ここのマージンの事を仰っていると思うので、詳細は後述。 } /* 右側(メインコンテンツ)の設定*/ #right { (省略) } /* フッターの設定*/ #foot{ position:relative;→(上記説明参照)同様に不要。 (省略) height:auto;→(上記説明参照)同様に不要。 clear:both;→#wrapperにclearfixを併用しているということは#wrapper内でfloatが解除されているのでこれも不要。 } ---------------------------------------------------------------------- という様な適切ではない定義が多々見受けられます。 そして問題の解決ですが、hackを使用しなくても容易でした。ただし、提供されたソースを見ても若干「正確にはどういう表示イメージにしたいのか」というのが計りかねる箇所がありますので、それによって何通りかの方法がありますが、それはきちんと補足して頂かないと想像の域を出ませんのでとりあえず2通りだけ。 まずは以下の様に推測させて頂きました。 ・書式は(今までの質問者様の質問履歴から)XML宣言なしのXHTMLと仮定。 ・#wrapperはclearfix(どういうタイプのを使用しているか不明ですが、有効であると判断)でメイン部分(#left+#right)のfloatが解除されている。 ・#footは#wrapperの外でbodyに対して100%の幅である(テキストがセンタリングではないのでちょっと解せませんが)。 ・#footとメイン部分との余白は、#wrapperの内側で与えたい。 ---------------------------------------------------------------------- 【HTML】 ---------------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <link rel="stylesheet" href="./css/common.css" type="text/css" media="all" /> <title>サンプル</title> </head> <body> <!-- ********* ラッパー ******** --> <div id="wrapper" class="clearfix"> <!-- ********* ヘッダー ******** --> <div id="head"> ヘッダー </div> <!-- ********* 左側 ******** --> <div id="left"> 左側 </div> <!-- ********* 右側 ******** --> <div id="right"> 右側 </div> </div> <!-- ********* フッター ******** --> <div id="foot"> フッター </div> </body> </html> ---------------------------------------------------------------------- 【CSS】 ---------------------------------------------------------------------- /* ラッパーの設定*/ #wrapper { width: 870px; margin: 0 auto; text-align:left; padding-bottom: 35px; } /* ヘッダーの設定*/ #head { width: 870px; height: 88px; background-image: url(img/head-bg.gif); margin: 0; } /* 左側の設定*/ #left { width: 200px; float: left; margin: 0; } /* 右側(メインコンテンツ)の設定*/ #right { width: 650px; float: right; } /* フッターの設定*/ #foot { width: 100%; } ---------------------------------------------------------------------- 以上のサンプルで検証した結果、IE6.0/7.0、Firefox2.0~、Opera9.25 on Windows XP上でどれも問題なく表示され、#wrapperと#foot間の余白はいずれも35pxとなっています。ご覧の通りhackなどは一切使用していません。 もしこうではなく、 ・#footとメイン部分との余白は、#wrapperの外側で与えたい。 ということであれば: ---------------------------------------------------------------------- 【CSS】 ---------------------------------------------------------------------- /* ラッパーの設定*/ #wrapper { (省略) padding-bottom: 35px;→削除 } /* フッターの設定*/ #foot { (省略) margin-top: 35px;→追加 } ---------------------------------------------------------------------- となるだけです。 これでもない、という別の表示イメージを想定してらっしゃるのであれば、正しいイメージがこちらにわかる様に補足して下さい。

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.4

こんにちは safari , IE7は持っていないのでどうか分かりませんが・・・ 下側・・・コンテンツを内包する<div>…を使用すればIE6 , Firefox , Opera , Netscapeで同じにすることできると思いますが・・・ <div id="wrapper"> <div id="head"></div> <div id="left"></div> <div id="right"></div> <div style="clear:both;"></div> </div> </div id="foot"></div> フッターはwrapperの外ですよね? 中であれば <div style="clear:both;"></div>はいりません ※position配置しないのであればposition:relative;は必要ない気がするのですが? ※#headのfloat:left;は必要ありません ※(footがwrapperの外)#footのclear:both;はいりません ※(footがwrapperの内)<div style="clear:both;"></div>の位置に<div id="foot"></div>を持ってきてください ただid="left"に対してmargin-bottomを設定してますので左コンテンツの方が多ければ余白が開きますが、右コンテンツの方が左コンテンツ+余白(35px)より多くなると余白は空きません そちらの方は<div style="clear:both;">にmarginやheightを指定することで解決できます (id="foot"がwrapper内であればfootの方にmargin-topを指定)

noname#64096
質問者

お礼

ありがとうございます。 コンテンツを内包する<div>… 下の方と同じような解決方法でしょうか? ひとまず解決したものの、これから先も困らないために一度試してみます。 本当にありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

前回の質問を拝見しました floatをclearするところを工夫すればブラウザの違いは吸収できそうですが・・ <div> <div id="a">左コンテンツ </div> <div id="b">右コンテンツ</div> <div style="clear:both"/> </div> <div id="c">フッター</div>

noname#64096
質問者

お礼

ありがとうございます。 <div style="clear:both"/> </div> これって中身は空白のままでしょうか? 一度試してみます。 本当にありがとうございました。

回答No.2

float を使った時の、高さの概念は、ブラウザによって違うものです。 wrapper にborder:1px solid #000000; をかけてみれば、現状が分かると思います。 私は、プログラマなので、htmlでは、できればいいや~位にしか思ってないので、やっつけですが、 <!-- ********* フッター ******** --> <br clear="all"> </dIV> 以上へ変更してみては、いかがでしょうか? だめでしたら、footerのmarginを削除して、wrapperかfooterにpaddingで試してみてください。 お役に立てれば幸いです。

noname#64096
質問者

お礼

ありがとうございます。 wrapperにpaddingを追加でやりたいことができました。 本当にありがとうございます。

  • abril
  • ベストアンサー率69% (388/560)
回答No.1

> CSSでサイトを作っているのですが、フッターとメインのwrapperの間を開けるのに、どうしてもすべてのブラウザで共通のCSSではできません 「間を詰める(なくす)」のではなく「空ける」方であれば大抵問題ない筈なのですけどね。 > この際CSSハックを使おうと思っています。 CSS hackは最後に「やむを得ず」使う手段です。「(CSS hackがどういうのものか)よくわかってない」状態で使用することはリスクを伴うと思いますが、大丈夫ですか? > CSSハックを使えば、IE6にはこの指定、IE7にはこの指定、Firefoxにはこの指定、opera、safari・・・など個別のブラウザに異なったCSSを指定することができるのでしょうか? hackの記述法によっては個別に分けられるものもあり、一緒くたになってしまう組み合わせもあります。 > 実際の記述方法を教えていただけないでしょうか? > 「firefoxとopera」にはwrpperにmargin-bottomをかけて、IE6,7にはfooterにmargin-topをかけて解決しようと思うのですが・・・ 上記に回答することは簡単なのですが、質問者様はそろそろ「知りたいことがあったらまず調べて理解を試みる」という習慣を付けられた方が良いでしょう。本件の場合はキーワードも明快な事この上ないのですし。「CSS ハック」でググって下さい。無数の解説とサンプルが出てきますから。 ただし、CSS hackはブラウザのヴァージョン・アップにより無効になったり有害になったり(本来バグであったものが解消されて有効になる、もしくはバグ故無視される筈の記述が有効になっていたものがバグが解消されて無視される様になる)する可能性を含む、諸刃の剣であることも理解しておくべきでしょうね。今後、その様な事態が起きた時に更なる対応が必要に迫られる事があるかもしれない、という覚悟が必要だということです。 > ちなみに、この現象のほかの解決方法ってあるのでしょうか? これだけではわかりません。情報が不足していますので、もっと詳細なソースを提供して下さい。

noname#64096
質問者

お礼

ありがとうございます。 CSSハックについては再度調べなおしてみます。 別の解決方法ですが・・・ <div id="wrapper" class="clearfix"> <!-- ********* ヘッダー ******** --> <div id="head"> </div> <!-- ********* 左側 ******** --> <div id="left"> </div> <!-- ********* 右側 ******** --> <!-- TemplateBeginEditable name="right" --> <div id="right"> </div> <!-- TemplateEndEditable --> <!-- ********* フッター ******** --> </dIV> <div id="foot"> /* ラッパーの設定*/ #wrapper{ position:relative; width:870px; margin:0px auto; text-align:left; } /* ヘッダーの設定*/ #head{ width:870px; height:88px; float: left; background-image: url(img/head-bg.gif); margin: 0px; } /* 左側の設定*/ #left{ width:200px; height:auto; float:left; margin: 0 0px 35px 0; } /* 右側(メインコンテンツ)の設定*/ #right { width: 650px; float: right; } /* フッターの設定*/ #foot{ position:relative; width:100%; height:auto; clear:both; } 簡単に詳細を記述すると以上のような感じです。 http://okwave.jp/qa3517253.html?ans_count_asc=20 こちらを参考にいろいろ試してみたのですが、うまくいきませんでした・・・ どうかよろしくお願いいたします。

関連するQ&A

  • blogのwrapperの上下に余白が10pxほど空いていますが、つめるにはどうしたらいいでしょうか?

    wordpressを使用してブログを作成していますが、wrapperの上下の部分に、10pxほど余白ができてしまっています。 IE5 IE6 FireFoxのいずれでも、余白があるのですが、この余白をつめるには、どうしたらいいのでしょうか? cssの定義は以下の通りなのですが、これは、cssでは、余白を埋めることはできないのでしょうか? .wrapper { background: url(images/wrapper.png) repeat-y; position:relative; width:1000px; margin:0px auto 0px auto;

    • ベストアンサー
    • HTML
  • cssハックを勉強中で、使い方について質問です。

    現在cssハックを勉強中です。 あるサイトで調べるとoperaだけに使う場合 *+html:first-child p { /* for Opera */ line-height : 150%; } このように表示されてました。 IE4-IE6のアンダースコアハックの使い方は分かったのですが 上記のcssハックは今ひとつ使い方が分かりません。 例えば下記のcssがあったとして ul.piyo{ margin:0 0 10px 0; } ul.piyo li{ margin:0; } ul.piyo li.hoge a { width:100px; height:10px; display:block; padding:0; margin:0; background:url(../img/hoge.gif) ; } ul.piyo li.hoge a:hover { background-position:0 -18px; } ...以下、hoge2、hoge3と同じ<li>のcssが続く。 各hoge、hoge2、hoge3の下部分にoperaだけmargin10pxをつけたい場合 *+html:first-child li.hoge { /* for Opera */ margin:0 0 10px 0; } このように表記し、hoge2、hoge3と付け足せばいいのでしょうか? 説明下手で申し訳ありません。 分かりづらいところは補足いたしますのでどうぞご回答よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • CSSハックについて・・・

    ホームページを作っていて、IEではちゃんと表示されるのですが、 FirefoxとOperaでは思い通りに表示されません。 これをどうにかしたいと思います。 前に、どこかのサイトでCSSハックという言葉を見たことがあるのですが、主にFirefoxに、CSSハックを利用したいです。 Firefoxのみ、またはFirefoxを含む様々なCSSハックの方法を教えてください! 今は、OperaよりもFirefoxを優先してほしいです。

    • ベストアンサー
    • HTML
  • CSSレイアウト・背景グラデーション

    初めまして <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" でCSSでヘッダー・右袖・左メイン・フッターとレイアウトしてます。 ヘッダーから下は右・左・フッターとコンテンツIDでまとめてます。 bodyと#wrapperを使いセンター表示にしてますがページによって テキストボリュームの差がかなりあるのでそれぞれのheightは設定してません。 autoでも非設定でも複数ブラウザで大丈夫だったので省きました。 このレイアウトでIE・Safari・FireFoxなどでレイアウト崩れはしないのですが、枠線を付けたり背景画像で境界線に影を付けたりすると問題が出ます。 FireFoxとSafariだけヘッダー部分にしか影が出ません。 IEやSleipnirではフッターまで反映されます。 ページ毎のテキストボリュームが違うためheight設定してませんが数値指定するとすべてのブラウザで反映されます。 heightに数値いれるとテキストが少ないページでは無駄な表示域がでてしまうので避けたいです。 解決策や当方の設定に問題点があるでしょうか? 影画像は820pxで制作#wapperの背景に指定してます。 よろしくお願いします。 body { text-align: center; padding: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; } #wrapper { text-align: left; width: 800px; margin-top: 0px; margin-bottom: 0px; margin-right: auto; margin-left: auto; padding: 0px; } #header { margin: 0px; padding: 0px; width: 800px; height: 300px; } #contents { padding: 0px; margin-top: 10px; margin-right: 0px; margin-left: 0px; width: 800px; height: auto; margin-bottom: 0px; } #contents #left { margin: 0px; padding: 0px; width: 200px; float: left; height: auto; } #contents #right { padding: 0px; float: right; width: 600px; margin: 0px; height: 1280px; } #footer { margin: 0px; padding: 0px; width: 800px; height: 60px; } 上では#wrapperに画像設定してませんが#wrapperに背景設定してます。 どのブラウザでもレイアウト崩れは起きてないです。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • CSSでブラウザごとにレイアウトが崩れたりします。

    はじめまして。 現在、CSS初心者でお店のホームページを作成しているのですが、作ったサイトのレイアウトがブラウザごとにレイアウトが違って見えます。 細かな部分でも違って見えてきてしまっているのですが、大枠のレイアウトが崩れてしまっていて、なんとか修正できないものかと頑張っています。 ■■■■■■    ■=ヘッダー □□●●●●    □=メニュー □□●●●●    ●=コンテンツ(中身)1 □□○○○○    ○=コンテンツ(中身)2 □□○○○○    ▲=フッター ▲▲▲▲▲▲ このようなレイアウトで組んでいるのですが、初心者なため、ひたすら「div」で囲って、さらにその中をdivで囲ってなんとかレイアウトを組みました。 そこで、問題の崩れているレイアウトですが、メニュー(□)とコンテンツ(○+●)の部分の高さを「auto」にしているのですが、フッターの部分が左のメニュー(□)の高さにしかあっておらず、右のコンテンツの途中からフッターが出てきてしまいます。 ※コンテンツ(○+●)部分はさらに大枠の「right」で囲っており、メニュー部分は「left」で、両方ともdivで、高さは他と同様に「auto」トなっております。 ちなみにこの現象はIE7のみでして、IE6やfirefoxなどでは正常に表示されました。 全てのhtmlファイルごとに高さを指定して、divを指定すれば、解決するとは思うのですが、テンプレートを使用しているため、なんとかこのまま解決方法を見いだせればありがたいのですが、、、 どうか教えていただけないでしょうか? body{ margin:0px; padding:0px; text-align:center; } /* ラッパーの設定*/ #wrap{ position:relative; width:790px; background-color:#FFFFFF; margin:0px auto; text-align:left; } /* ヘッダーの設定*/ #head{ width:790px; height:100px; background-color:#FFFFFF; } /* 左側の設定*/ #left{ width:210px; height:auto; float:left; background-color:#FFFFFF; } /* 右側の設定*/ #right{ width:580px; height:950px; float:right; background-color:#FFFFFF; margin-bottom: 15px; } #sub_main { width: 550px; margin-left: 15px; background-color: #FFFFFF; margin-top: 10px; height: auto; margin-bottom: 5px; } #sub_main2 { width: 550px; margin-left: 15px; margin-top: 15px; background-color: #FFFFFF; height: auto; } #foot{ position:relative; width:100%; height:auto; background-color:#CCFFCC; clear:both; float: left; } ※sub_main1,2は●と○になります。 どうかよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSに追加した、footer記述が不完全か 

    footer 部を下記の通りCSSに追加したが、画面の最大化では正常ですが、最小化にすると右に横ずれを生じ、どこを修正すべきか分からず解決出来きません。 どうかご教示のほどお願いします。 (例題を参考にして記述したものです。) html{ position: relative; min-height: 100%; padding-bottom: 100px; } div#footer{ font-size: 12px; position: absolute; left: 150px;  (例題は、 left: 0; であるが、大幅に左にずれる。) bottom: 0; width: 960px; (例題は、width: 100%; であるが、右にずれて、設置した仕切り線が無限に右に伸びる現象になる。) height: 100px; } 参考までにCSSに既に記述している---次のwrapper 表示に関係があるのでしょうか。 div#wrapper{ margin: 0 auto; text-align: left; width: 100%; line-height: 1.6; }

    • ベストアンサー
    • CSS
  • CSSでIEとFirefoxでの表示の違い

    IE6とFirefox2.0で試しています。 次のように、naviでborderを使うとIE6では普通に表示されるのですが、 Firefoxだと右側にborderのサイズの2倍分くらいはみ出てしまいます・・・ 両方に正常(希望通り)に表示されるようにするには どのような記述にすれば良いのでしょうか? 「sample.css」 .wrapper { background-color: #ccffcc; margin: auto; width: 600px; height: 100%; } .navi { background-color: #aaffaa; border: 3px solid #ff4500; width: 600px; height: 150px; position: relative; } 「a.html」 <html> <head> <link rel="stylesheet" href="sample.css" type="text/css"> </head> <body> <div class="wrapper"> <div class="navi"> </div> </div> </body> </html>

    • ベストアンサー
    • HTML
  • DreamweaverでのCSSファイル作成について

    DreamweaverでCSSレイアウトを行っています。 ボックスモデルハックのIE5.5以前のブラウザ用の値がいつの間にかモダンブラウザ用の値になってしまします。原因がおわかりの方教えてください。 (---------例--------) #main{ margin:20px auto; padding: 30px 50px; width:700px; voice-family: "?"}?""; voice-family:inherit; width: 600px; } html>#main { /* Opera */ width: 600px; } がいつの間にか、 #main{ margin:20px auto; padding: 30px 50px; width:600px; voice-family: "?"}?""; voice-family:inherit; width: 600px; } html>#main { /* Opera */ width: 600px; } といった感じに、widthが全て同じ値になってしまいます。同じような経験がある方いませんか? ※『?』はバックスラッシュの文字化けです

    • ベストアンサー
    • HTML
  • どう変更してもIE6だけCSSレイアウトが崩れてしまいます。

    CSSレイアウトで、サイトを作成していたのですが、 最近になってIE6で確認してみると、レイアウトが崩れまくっていました。。。 3カラムレイアウトなのですが、Firefox等他のブラウザではきちんと表示されるので、なぜかIE6だけ縦1列になってしまいます。。 こちらのサイトでもIE6はレイアウトが崩れやすいという情報がたくさんあり、そちらのアドバイスを参考にしながら1日かけてがんばってのですが、できませんでした。もう限界です(涙) 現在のCSSは、 * { margin:0; padding:0; } .wrapper { width: 740px; margin: 0 auto; } .header { width: 740px; } .main { width: 740 px; /* 両端ブロックとコンテンツを囲んでいるクラスです。 */ } .menu {display: inline; float: left; width: 205px; } .contents {display: inline; float: left; width: 385px; } .affiliate {display: inline; float: left; width: 150px; } .footer { clear: both; width: 740px; } というような状態です。 どなたかアドバイスいただけますと大変幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSで指定した背景画像にリンクエリアを設定する方法。

    メインビジュアルとしてCSSで背景画像として指定したものの中にリンクエリアを作って、そこの部分だけにマウスをもってきた時に、リンク先に飛ぶようにしたいのですが、毎回firefox, IE7,IE6でのmargin, padding,の違いに四苦八苦してます。 大抵は、margin-topを違うブラウザ用にpadding-topにして、*htmlや、*:first-child+html等のハックでカバーしてたりするのですが、今回はそれでもうまくいかず、どなたか教えて頂けたらと質問させて頂きました。 以下CSSのソースです。 #main_visual { background:url(../img/main_visual.jpg) no-repeat; width:666px; height:418px; text-indent:-9999px; } #main_visual a{   display:block; width:338px; height:43px;   position:relative; top:324px; left:308px; } 上のように、666 X 418の画像の中に、 上から324px 左から308pxの位置に大きさ338 X 43のリンクエリアをつくリたいのですが、、上記だと、IE7 IE6ではうまくいくみたいですが、 firefoxとsafariだと、positionが全くきかず左上の位置(top:0 left:0)にリンクエリアがきてしまってます。。 どのようにリンクエリアを指定するのが最もスマートな方法なのでしょうか? 毎回悩んでます。。ちなみに、*:first-child+html このIE7用のハックってまだ使えたりするんでしょうか?^^;

    • ベストアンサー
    • CSS

専門家に質問してみよう