2009-10-20 4 views
0

높이를 설정하려고하는 일련의 표 셀이 있습니다. 모두 잘 작동하는 것처럼 보이지만, 불행하게도 Firefox는 다른 브라우저처럼 보이지 않는 전체 높이에 경계를 추가합니다. 사람이 앤서니크로스 브라우저 높이 함수 - jquery

에게 관계없이 보드, 패딩의 브라우저 사이에서 일관되게 높이를 설정하는 JQuery와 기능/플러그인 등

건배의

UPDATE를 알고 있다면

은 그러므로 내가 궁금 해서요 : 난 그냥 확인 두 배 나는 다음과 같은 문서 유형 사용하고 있습니다 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
+2

꾸준히 또는 단점 모드에 있는지 확인하고 있습니까? 상자 모델이 중요하기 때문에 중요합니다. – Pointy

답변

0

당신이 할 수있는 플러그인을 찾을 수 있습니다 모르겠어요,하지만 그것은 어려운 하나를 만들기 위해하지 않을 수 있습니다 :

브라우저 스니핑은 우리가 모질라에 대한 도청 크기에 영향을 미치는 총 수평 국경을 계산하고, 전달 된 값에서 해당 뺄 수, 순진 나쁜이지만, 여기에

은 일부 의사 코드입니다 :.

function totalPixelsAddedIntoCountByMozilla() { 
    //for you to define. 
} 

(function($){ 
    $.fn.extend({ 
    tableHeight: function(new_height) { 

     if($.browser.mozilla) { 
     return this.each(function(){ 
      $(this).height(new_height - totalPixelsAddedIntoCountByMozilla()); 
     }; 
     } 

     return this.each(function(){ 
     $(this).height(new_height); 
     }; 
    } 
    }); 
})(jQuery); 

그럼 대신 내가 어떤 "공식적인"플러그인 모르겠어요 $().height();

1

$().tableHeight()를 사용하지만 자신의 롤 어려울 안 :

jQuery.fn._height = jQuery.fn.height 

jQuery.fn.height = function(val) 
{ 
    if (arguments.length === 0) return this._height(); 

    this.css({'padding': '0px', 'border-width': '0px'}); 

    this._height(val); 

    this.css({'padding': '', 'border-width': ''}); 

    return this; 
}; 

이 코드는 요소에 인라인 스타일을 정기적으로 설정하지 않는 경우에 따라 달라 지므로 요소에 덮어 쓰게됩니다. 모든 CSS 규칙을 스타일 시트에 보관하면이 방법이 효과적입니다.

+0

이것은 현명한 접근 방법입니다. 나는 당신이 결함을 보지 않을 것이라고 상상할 것입니다, 그러나 그것이 일어난다면 그것이 유일한 단점이 될 것입니다. –

0

단일 TD 또는 전체 행을 변경 하시겠습니까? 후자의 경우 jQuery 런타임을 줄이면서 눈에 잘 띄지 않는 접근 방식은 TR의 자식으로 스타일 시트에 높이를 미리 설정하는 것입니다.

<style> 

#SomeTableorDivId TR TD {height:someheight; border:0; etc;} 

#SomeTableorDivId TR.preferred-height TD {height:newheight; border:0; etc;} 

</style> 

지금 당신이해야 할 모든 TD 태그 대신 TR 태그를 칠 논리를 작품 플러스 CSS는 크로스 플랫폼을 예측/제어하기가 쉽습니다.

$(someTRpointer).toggleClass('preferred-height'); 

TR에 도달하면 전체 행이 모두 변경됩니다. 저는이 크로스 플랫폼을 많이 사용했습니다.