• ベストアンサー

IE6で横スクロールバーを消すとIE7では方向キーでのスクロールができなくなります。直し方を教えてください。

ホームページでインラインフレームを使ってるんですが。 IE6だと無意味な所に横スクロールバーがでます。 調べるとoverflow-x: hidden;を追加すれば消えるとあったのでやってみると今度はIE7でキーボードの方向キーでのスクロールができなくなりました。 これはIE7の仕様なのでしょうか? 仕様なら直し方を教えていただきたいのです。 お願いします。

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

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

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

今IEが手元にない環境から見ているので、実際の結果を検証できませんが…推測だけしてみます。 インラインフレームで表示される方のHTMLファイル(http://minatukiryu.blog60.fc2.com/index.php)(以下便宜上(a)ファイルとします)のコードと適用されているCSSを拝見しました。 おそらく、ですが(a)ファイルから参照しているCSS: http://minatukiryu.blog60.fc2.com/template/a_memo_1/style.css で、メインのコンテンツを納めるtableに対して設定されている以下のスタイルの .tb { (省略) margin-left : auto; margin-right : auto; width : 100%; (省略) } これらの部分がインラインフレーム側((以下便宜上(b)ファイルとします))に横スクロールを出させているのではないかと思います。本来、インラインフレームのwidth属性で820pxという値が決められており、インラインフレーム内のコンテンツ幅がそれより少なければスクロールに関しては初期値の"auto"が適用されますのでこの場合820pxの中での100%という様に解釈されていれば横スクロールは発生しない筈です。IE6以外のモダン・ブラウザではその様にきちんと表示されているのではありませんか?ちなみに今Safariで見ていますが、Safariでは横スクロールは出ていません。 IE6は何かとW3Cの仕様に準拠しない挙動をする問題の多いブラウザですので、本件でも100%や左右マージンの解釈が異なってしまい、インラインフレームの幅よりも内部で表示されるHTMLファイルのコンテンツ幅の方が広い様に勘違いしている為に、本来不要な筈の横スクロールバーが(b)ファイル上で出てしまっているのかもしれません。 (a)ファイルの構成を見る限り、上記の(IE6で不具合を引き起こす原因と仮定している)スタイル部分は削除してしまってもレイアウトにほぼ影響はしないと思われます。一度この部分を削除(あるいは隠す)して、再度IE6での表示を確認されてみてはいかがでしょう。 ちなみに、 > 調べるとoverflow-x: hidden;を追加すれば消えるとあったので とありますが、そもそもoverflowプロパティというのは「ブロック要素の内容が指定された横幅・高さの領域からはみ出した場合の表示方法を指定」するものですので、"overflow-x: hidden;"が有効になるのは「widthプロパティにより内容領域を指定されたブロック要素が、指定されたサイズよりも内容が大きなサイズをもつ場合」です。 (参考)http://w3g.jp/css/display_position/overflow 今回の場合、(a)ファイルに適用されるCSSの中で html, body {(省略)overflow-x: hidden;} としてしまっていますが、これでは「どこがはみ出す対象となるのか」が明確になっておらず定義が意味不明になっています。IE7でキーボード操作によるスクロールに弊害が出てしまっているのは、この妥当でない指定が影響してしまっているのだと思われます。こちらは削除して下さい。 これでだめでしたらこちらの仮定違いということでご容赦下さい。 蛇足ですが、(b)ファイルの方、HTML文書なのにDOCTYPEがなかったり、HTMLとXHTMLの記述が混在してしまっています。CSSやJavaScriptの挙動には、DOCTYPEが関わってくる場合がありますので、この機会に(b)ファイル側のHTMLの文法チェックなどをきちんとしておく事をお奨めしておきます、今後の為に。

porupopo
質問者

お礼

margin-left : auto; margin-right : auto; width : 100%; overflow-x: hidden; を削除するということでしょうか? やってみましたが、まだなってないです・・。 ちなみにfirefoxでも横スクロールバーはでませんでした。

関連するQ&A

  • インラインフレームの横スクロールバーを消すには?

    インラインフレームを使用したHPから、FC2ブログを呼び出そうとしています。 すると、必ず横スクロールバーが表示されます。 この横スクロールバーを消したい場合には、どのようにすれば良いでしょう。 ちなみにこのページになります。 http://ee.uuhp.com/~macyako/ ブログのbodyタグに以下を追加しましたが、無理でした。 body { overflow-x: hidden; } あと、インラインフレームの幅を広げてみたりしたのですが無理でした。 ソースが間違ったりしていますか?

  • 横スクロールバーが消えません

    webにフレームやFlashを導入してリニューアルさせてたのですが、横スクロールがいくつかのページで出てきてしまい困っております。 テーブル幅はどのページも600ピクセル以下に設定しています。mac os XのIE 5.2だと横スクロールバーは1つも出ないのですが、win XPのIE 6.0だと何故か何個か横スクロールが出てきてしまいます。 どこかのサイトで横スクロールバーを消す方法で <style type="text/css"> <!-- body { overflow-x: hidden; } --> </style> これで消えるとあったんで試してはみたのですが、なにせhtmlの知識が乏しいので、使い方も悪いのか、まだ消えません。 どうやったらこの横スクロールバーを消せるのでしょうか? どなたか分かる方いらっしゃったら教えてください。

    • ベストアンサー
    • HTML
  • iframeの横スクロール

    iframeを使ってほかのページを表示させているのですが、 どうしても横スクロールバーが出てしまうのでcssのbody要素に 「overflow-x: hidden;」と入れました。 確かにiframeの横スクロールバーは消えましたが、ページの横スクロールも消えてしまいました。 div idでiframeを囲ってcssでその場所だけに「overflow-x: hidden;」を入れると今度は横スクロールバーが消えません。。 色々調べてみたのですが同じような人がいないようで; 詳しい方教えていただけないでしょうか。 (説明がへたくそですみませんm(_ _)m)

  • 横スクロールバーが表示されてしまう

    ホームページを作成中なのですが、横幅の余白はあるのにのに横スクロールバーまで表示されてしまいます。 フレームを使用していて、そこにTABLEタグを入れるとどうやら必ず表示されるみたいです。html{overflow:hidden;}のタグを入れていますが、それでもだめみたいです。TABLEなしにすると横スクロールバーは表示されないのですが、デザイン上TABLEは使いたいのでカットは無理です。 解決方法が分かりません。どなたがアドバイスよろしくお願いします。HTML初心者なのでできれば分かりやすい説明をお願いします。 ちなみに使用しているブラウザはIE6です。

  • 横方向のスクロールをなくしたい

    縦3分割(cols="*,700,*")のフレームにし、真ん中だけ遷移させるページを作成しているのですが、CSSで、 body{ overflow-x:hidden; } と設定しているのですが、横方向にスクロールされてしまいます。フレームの値(width)より真ん中のページに置く幅の値が等しいか同値であるのですが、何か設定が要るのでしょうか? 因みに縦はスクロールします。(真ん中のフレームのみ) 考えてみましたが、結論が出そうになかったので教えてください。お願いします。

    • ベストアンサー
    • HTML
  • インラインフレームのスクロールバーについて

    インラインフレームのスクロールバーが現れないようにしたいのです。それも、縦方向は残して、横方向のスクロールバーが出ないようにしたいのです。 MacのIEで確認すると(当方はMacintoshでホームページを作成しています)縦方向のみスクロールバーが現れ、横方向は現れません。がWindowsで確認すると縦横ともに現れるのです。 タグではautoとyesとnoしか制御する方法はないのでしょうか? Javascriptなどでもかまいません。 どなたかご存じでしたら教えてください。お願いします(泣) ちなみにテーブルのセルの中に作っているのですが、タグはこんな感じです↓ <td width="104"> <iframe src="info.html" name="info" width="100%" height="92" frameborder="0"> <p>このページはインラインフレーム対応のブラウザでご覧ください。</p> </iframe> </td>

    • ベストアンサー
    • HTML
  • IEなどの横スクロールについて

    IEに表示されてるHPをスクロールするとき、キーボードの矢印キーで操作するのですが、 横に長いページを見たときに、横スクロールの速度が縦スクロールに比べてかなり遅いのですが、設定を変えれるのでしょうか?

  • スクロールバーを無くしてすくロースさせたい!

    タイトルのままなのですが、現在ページを作っているのですがデザインの関係からスクロールバーを表示させない仕様になりました。 CSSは、 overflow:hidden; の設定を試してみました。 しかし、この状態では当然はみ出したページ部分を読むことが出来ず困っております。 イメージとしては、overflow:hidden;の様にスクロールバーが無くなった状態でそのままスクロールできればと考えております。 フレーム方式にしたら出来るような記憶がありますが、何れにしてもフレームは使用したく無いです…。 どなたか、実現する方法をご存知の方いらっしゃいましたら、アドバイスを頂けますと助かります。 宜しくお願いします。

    • ベストアンサー
    • CSS
  • 横スクロールバーを表示したい

    スクロールバーの色を変更するために下記のタグを埋め込んだ所、 今まで表示されていた横スクロールバーが消えてしまいました。 横スクロールさせないと見えない部分があるので、ぜひ表示させたいです。 どうか教えてください! Win98se・IE6 HPビルダーでどこでも配置モードを利用しています。 <STYLE type="text/css"><!--body {scrollbar-face-color:#ffffff; scrollbar-track-color:#ffffff; scrollbar-arrow-color:#C0C0C0; scrollbar-highlight-color:#808080; scrollbar-shadow-color:#C0C0C0; scrollbar-3dlight-color:#ffffff; scrollbar-darkshadow-color:#ffffff; overflow-x : hidden ;} --> </STYLE>

    • ベストアンサー
    • HTML
  • IE6で、横スクロールバーだけ消したい

    本来、横スクロールバーが出るほどでもないようなページなのに IE6だけ、横スクロールバーが勝手に出てしまいます。 どうしたら、横スクロールバーを消すことができますか? (縦スクロールバーは必要です) ちなみに、フレームのページであっても、非フレームのページであっても出てしまうようですが、 下記の宣言を消すと、一応消えるのですが、他のスタイルシート等が無効になってしまうので困っています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ページの内容は、複雑なTABLE入れ子をもったページです。 IE5、IE5.5、Firefox、Operaではどれも出ません。 よろしくお願いします。

    • ベストアンサー
    • HTML