Solved

XHTML compliant table formatting

Posted on 2006-07-18
6
628 Views
Last Modified: 2013-12-16
Experts, I'm doing some development in XHTML, and have come across a problem with setting tables to be 100% the width and height of the page.

Basically, I've found a way to set the table to fit the size of the page, but the top row of the table will not set to 40px height.  Also, in the bottom row, the Iframe isn't rendering on the page (if I remove the height and width attributes it renders fine, but doesn't expand to fit the table cell).

How can I achieve the above, but still keep my page XHTML compliant?

The code from my page is below.

Many thanks!

////////////////////////////////////////////////////////////////////////////////////////////

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <title>Test</title>
</head>
<body style="height: 100%; width: 100%; margin: 0px;">

      <table style="width: 100%; height: 100%;" cellpadding="0" cellspacing="0" border="1">
            <tr style="height: 40px;">
                  <td valign="top" style="height: 40px;">
                        Top Row
                  </td>
            </tr>
            <tr>
                  <td>
                        Bottom Row
                        <iframe id="ifrArticle" width="100%" height="100%" frameborder="yes" src="http://www.google.com"></iframe>
                  </td>
            </tr>
      </table>
</body>
</html>

////////////////////////////////////////////////////////////////////////////////////////////
0
Comment
Question by:SamDorling
6 Comments
 
LVL 18

Assisted Solution

by:Eternal_Student
Eternal_Student earned 200 total points
ID: 17128452
I found a script that will enable this .... try this:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <title>Test</title>
       <script language="JavaScript">
            <!--
            function resize_iframe()
            {
              //resize the iframe according to the size of the
              //window (all these should be on the same line)
              document.getElementById("ifrArticle").style.height=
                  parseInt(document.body.clientHeight-
                  document.getElementById("ifrArticle").offsetTop-8)+"px";
            }
            
            // this will resize the iframe every
            // time you change the size of the window.
            window.onresize=resize_iframe;
            
            //Instead of using this you can use:
            //      <BODY onresize="resize_iframe()">
            
            
            //-->
      </script>

      
</head>
<body style="height: 100%; width: 100%; margin: 0px;">

     <table style="width: 100%; height: 100%;" cellpadding="0" cellspacing="0" border="1">
          <tr style="height: 40px;">
               <td valign="top" style="height: 40px;">
                    Top Row
               </td>
          </tr>
          <tr>
               <td>
                    Bottom Row
                    <iframe id="ifrArticle" width="100%" onload='resize_iframe()' frameborder="yes" src="http://www.google.com"></iframe>
               </td>
          </tr>
     </table>
</body>
</html>
0
 
LVL 1

Author Comment

by:SamDorling
ID: 17128515
Thanks for the comment Eternal_Student, however I was hoping to find a solution that didn't involve having to use JavaScript to set the height of rows - is there no way of doing what I want to achieve just via HTML, but keeping it XHTML compliant?

Thanks!
0
 
LVL 1

Assisted Solution

by:dharmeshmaniar
dharmeshmaniar earned 100 total points
ID: 17137163
try following:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <title>Test</title>
</head>
<body style="height: 100%; width: 100%; margin: 0px;">

     <table style="width: 100%; height: 100%;" cellpadding="0" cellspacing="0" border="1">
          <tr style="height: 40px;">
               <td valign="top" style="height: 40px;">
                    Top Row
               </td>
          </tr>
          <tr>
               <td style="width: 100%; height: 100%;">
                    Bottom Row
                    <iframe id="ifrArticle" width="100%" height="100%" frameborder="yes" src="http://www.google.com"></iframe>
               </td>
          </tr>
     </table>
</body>
</html>

/////////////////////////////////////////////////////

Apply 100% height and width on the other <td> so the first row will take 40px and the other will occupy the left space.
0
Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

 
LVL 1

Author Comment

by:SamDorling
ID: 17137301
Thanks dharmeshmaniar, we're getting there, however the page is now 100% height plus 40 extra pixels (i.e. there's a scroll bar on the page, and the iframe goes off the bottom of the page by 40 pixels, presumably due to setting the bottom cell to be 100% height).

How can I get the iframe to fit the bottom cell, but not go off the bottom of the page?

Thanks!
0
 
LVL 5

Accepted Solution

by:
zeroxp earned 200 total points
ID: 17151776
in xhtml, a page has default width but no default height. so you cannt inherit height from it using percentage height.
a div or table must inherit height from an absolute value.
so you could either set a pixel height in the container table:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
</head>
<body>
<table style="width: 100%; height:555px;" cellpadding="0" cellspacing="0" border="1">
   <tr>
   <td style="vertical-align:top; width:100%; height:10%;">Top Row</td>
   </tr>
   <tr>
   <td style="width:100%; height:89%;">
   <iframe id="ifrArticle" width="100%" height="100%" frameborder="1" src="http://www.google.com"></iframe>
   </td>
   </tr>
</table>
</body>
</html>

or dont give height in the table and set absolute height for each row.
0
 
LVL 5

Expert Comment

by:zeroxp
ID: 17322332
a work around with min-height for mozilla, (ie renders in another manner anyway, so it will be full height)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<style type="text/css">
html {height: 100%;}

body {min-height: 95%; margin: 0; padding: 0; height:100%;}

* html body {height:100%;}
</style>
</head>
<body>
<table style="width:100%; height:100%;" cellpadding="0" cellspacing="0" border="1">
   <tr>
   <td style="vertical-align:top; width:100%; height:10%;">Top Row</td>
   </tr>
   <tr>
   <td style="width:100%; height:89%;">
   <iframe id="ifrArticle" width="100%" height="100%" frameborder="1" src="http://www.google.com"></iframe>
   </td>
   </tr>
</table>
</body>
</html>
0

Featured Post

VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This is a PowerShell web interface I use to manage some task as a network administrator. Clicking an action button on the left frame will display a form in the middle frame to input some data in textboxes, process this data in PowerShell and display…
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
The purpose of this video is to demonstrate how to update a WordPress Site’s version. WordPress releases new versions of its software frequently and it is important to update frequently in order to keep your site secure, and to get new WordPress…
The purpose of this video is to demonstrate how to prevent comment spam on a WordPress Website. This will be demonstrated using a Windows 8 PC. Plugin Akismet will be used. Go to your WordPress login page. This will look like the following: myw…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now