2010-06-23 36 views

回答

4

首先,JSF在這裏是無關緊要的。現在全部是關於其生成的HTML代碼。在網頁瀏覽器中打開頁面,右鍵單擊並查看源代碼。集中你 HTML源碼。這就是CSS(和JS)可以看到並應用的全部內容。

我假定你的意思是100%的高度,完整的視口高度(「可見」高度)。現在,要在CSS中實現完整的視口高度,只需在所需的HTML元素上設置height: 100%是不夠的。它將相對於其父元素,所有鏈直到<html>元素。所以,如果你基本上有:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>100% viewport height demo - FAIL</title> 
     <style> 
      .mytable { height: 100%; background: yellow; } 
     </style> 
    </head> 
    <body> 
     <table class="mytable"><tr><td>cell</td></tr></table> 
    </body> 
</html> 

這將是<body>元素的高度的100%。 <body>本身的高度依次相對於<html>元素的高度。但是這兩個元素沒有100%的高度。 Copy'n'paste'n'run它。你會看到,它不包括完整的視口。

如果要實現完整的視區高度,則需要在<body><html>元素上同時應用height: 100%(您當然也需要重設邊距)。

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>100% viewport height demo - GOOD</title> 
     <style> 
      html, body { margin: 0; height: 100%; } 
      .mytable { height: 100%; background: yellow; } 
     </style> 
    </head> 
    <body> 
     <table class="mytable"><tr><td>cell</td></tr></table> 
    </body> 
</html> 

將這些知識應用於JSF。 h:panelGrid只是呈現<table>元素。其styleClass將呈現爲HTML class屬性。