2012-04-13 12 views
0

は、これらの二つの機能を考えてみましょう:jQueryの(ドキュメント).width()は

  1. jQuery(document).width()
  2. jQuery(window).width()

(1)あなたの幅を与えますWebページ、および(2)は、おおよそのブラウザビューポートの幅を示します。

しかし、800ピクセル幅のウェブページがあるとします。

ブラウザウィンドウの幅が800ピクセル未満の場合、方法(1)は常に800を返します。これは良好です。

しかし、ブラウザウィンドウの幅が800ピクセルより大きい場合、メソッド(1)は(2)と同じであり、800ではなく戻ります。したがって、(1)の値はブラウザウィンドウに依存します。これは良くない。

私の質問は、ブラウザのウィンドウサイズを制御できないことと、ほとんどの場合ブラウザウィンドウの幅がウェブページの幅よりも大きいため、javascript/jqueryを使用して実際のウェブページの幅を取得する方法?

+0

「実際のウェブページの幅」と言いましたか?ウィンドウの幅が必要ですか?原稿の幅は?体の幅は? –

+0

あなたはjQuery( 'body')をtredしていますか?width()? – Anji

+0

より正確には、「実際のウェブページの幅」とは、ブラウザが水平スクロールバーを追加しない最小の幅を意味します。 – lasseschou

答えて

1

AFAIKでは、ブラウザーがスクロールバーを追加すると、ある特定のレンダーをブロックにレンダリングできません。 固定幅のメインコンテンツブロック(私がお勧めします)があれば、その幅を得ることができます。これは常に同じままです。

<div id="content"> 
<!-- Main block --> 
</div> 

CSS:

#content{ 
    width:800px; 
    margin:0 auto; 
} 

JS:

$("#content").width() 
+0

[OK]を、ありがとう、しかし、次の質問は:どのように私は "メインコンテンツブロック"は何ですか?私は事前にHTMLコンテンツを知らない。 – lasseschou

+0

これはStackOverflow上でどのように行われているかを見てください。 **すべて**メインコンテンツはボディ>コンテナ>コンテンツブロックにあり、中央に配置され、幅は960pxに固定されています – Arnthor

+0

まさに!だから問題は次のようになります。この欄を見つけて幅を決定する方法は?私はHTMLコードを事前に知らないので、一般的な解決策が必要です。 – lasseschou

0

本当に疑問を得るが、任意のオブジェクトの幅を取得する多くの方法があるないでください、ここで最もあり一般に使用される:

FIDDLE

そのフィドルにマークアップを追加して、あなたが探しているものを取得しているかどうかを確認してください。

+0

アイデアをお寄せいただきありがとうございますが、それは解決策に私を近づけません。 – lasseschou

+0

まあ、私はまだそれを取得していないのですか?実際のコンテンツの幅、言い換えれば、その要素が何であるか、どこに配置されているか、名前が付けられているかなどを知らなくても、メインコンテンツを含む要素の幅は決して狭くはありません。どんな解決策でも最も遅く、まったくうまくいかないでしょう。これは一般的に使われていないので(私はこれまでどこでも見たことがないと思うので)、問題に対する他のより良い解決策があるかもしれません。 – adeneo

+0

私はあなたの混乱を理解しています。しかし、それをランダムなWebページに挿入するトラッキングスクリプトと考えてください。マウスがコンテンツに対して相対的にどこに位置付けられているかを知る必要があるため、単に「主要素」の幅を把握する必要があります。 – lasseschou

関連する問題