2016-07-20 9 views
4
function adjustHeight(){ 
      var headerHeight=$(element).find('.header').outerHeight(); 
      console.log(headerHeight); 
      var temp=$(window).height()-headerHeight; 
      console.log(temp); 
      $('.users').height(temp); 
     } 

一度最初に、ウィンドウ上.users要素の

高さのサイズを変更する呼び出しは常に一時変数を慰めているものよりも30ピクセル以上です。

 $('.users').css('height',temp+'px'); 

これは正常に動作します。

<div class="mainPage" data-bind="visible:mode() === 'authenticated',handleHeightOfElements:''"> 
    <div class="header"> 
     <div> 
      This is header text 
     </div> 
    </div> 
    <div class="mainBody"> 
     <div class="users"> 

      All users: 
      <div data-bind="foreach:userList"> 
       <div class="user"> 
        <span data-bind="text:$data.userName,css:{onlineUser:$data.online()}"> 
        </span> 
        </div> 
       </div> 
     </div> 

.users{ 
float: left; 
width: 140px; 
background: antiquewhite; 
padding: 15px; 
box-sizing:border-box; 
} 
+0

動作を表示する例を設定できますか? – empiric

+0

'padding:15px'は、上部と下部に15pxのパディングを追加します。 15 + 15 = 30. '.height()'は要素のinnerHeightを設定します。あなたのCSSからのパディングがこの値に追加されます。 – empiric

+0

[こちらの例](https://jsfiddle.net/nwcydn8r/)をご覧ください。 cssセクションで 'padding 'の有無にかかわらずotを実行し、' .user'要素を調べてみてください。 – empiric

答えて

3

まず:.css("height").height()は同等です。

しかし、あなたは$(window).height()マイナス('.header').outerHeight()

.outerHeight()の結果の計算は要素のパディング、マージンやボーダーを含んでいるtemp$('.users').height(temp)を設定します。

.css("height")または.height()のケースではありません。

30pxオフセットは余白/パディング/ボーダーから来ると思います。
の場合は、最後の編集padding: 15px;と一致します。ここで

EDIT
は、あなたの計算誤差が画像化されている:

enter image description here

暗くなった部分は、あなたの計算で考慮されていません。

+0

.header要素にはパディングもマージンもありません。また、.users要素にはbox-sizingを使用しています:border-box、それは何にも影響しないはずです。 –

+1

@rishabhdev彼は正しいです。あなたの '.users' - divにはパディングがあります。 – empiric

関連する問題