2012-08-08 172 views
0

我正在使用<table>來佈置標準HTML聯繫人表單。我們不要討論使用表格的優點,因爲HTML不應該用於表示而是結構(這就是爲什麼我認爲它是合理的)。CSS - 按鈕不填充表單元格

儘管如此,這裏是標記和CSS我使用(通過ASP.NET MVC的生成):

  <table class="fieldTable"> 
       <tbody> 
        <tr> 
         <th><label for="Name">Your name</label></th> 
         <td><input id="Name" name="Name" type="text" value="" /></td> 
        </tr> 
        <tr> 
         <td></td> 
         <td></td> 
        </tr> 

        <tr> 
         <th><label for="EmailAddress">Your e-mail address</label></th> 
         <td><input id="EmailAddress" name="EmailAddress" type="text" value="" /></td> 
        </tr> 
        <tr> 
         <td></td> 
         <td></td> 
        </tr> 

        <tr> 
         <th><label for="MessageBody">Message</label></th> 
         <td><textarea cols="30" id="MessageBody" name="MessageBody" rows="6"></textarea></td> 
        </tr> 
        <tr> 
         <td></td> 
         <td></td> 
        </tr> 

        <tr> 
         <td></td> 
         <td><button type="submit"><span>Send Message</span></button></td> 
        </tr> 
       </tbody> 
      </table> 

我的CSS:

.fieldTable th { 
    text-align: right; 
    font-weight: normal; 
    vertical-align: top; 
    padding: 0.25em; 
    padding-right: 0.5em; } 

.fieldTable input, 
.fieldTable textarea, 
.fieldTable button { 
    width: 100%; } 

input, textarea, button { 
    border: 1px solid #999; 
    padding: 0.5em; 

    border-radius: 5px; 
    -webkit-box-shadow: 0px 0px 7px 3px #c4c4c4; 
    box-shadow: 0px 0px 7px 3px #c4c4c4; } 

button  { background: #DDD; position: relative; } 
button:hover { background: #FFF; } 
button:active span { position: relative; top: 2px; left: 2px; } 

tr { outline: 1px solid blue; } 
td { outline: 1px solid red; } 

但是它似乎呈現像這樣:

Normal rendering Rendering with tr/td outlines

爲什麼<button>元素不能水平填充單元格?

回答

2

我想你可能會在尋找box-sizing,這是什麼決定是否在計算寬度/高度時添加或排除邊距/填充。

box-sizing:border-box;

這應該允許您設置百分比寬度/高度,它會填充而不會溢出。

編輯:它是默認的按鈕(如果你檢查元素,你會看到瀏覽器已經添加它)。它可以添加到您的textareas和輸入字段,以使它們與您的按鈕匹配。

如果你看看你的屏幕截圖。輸入字段在TD之外,按鈕似乎是唯一真正表現的。

+0

將此添加到'button'規則並沒有什麼區別(我也使用了vendor-prefixes)。 – Dai 2012-08-08 01:29:53

+0

對不起,我的意思是你把它添加到輸入字段。它已經在按鈕上了(在編輯中扔掉了)。 – SciSpear 2012-08-08 01:34:36

+1

我將你的答案標記爲接受,因爲你是第一個 - 即使我沒有正確解釋它的開始。 – Dai 2012-08-08 01:55:01

1

David我看了一下你的html並創建了一個基於它的jsFiddle。然後我修改了你的css,使用你正在尋找的box-sizing property。儘管它適用於DOM上的其他對象,但您可能只想將其提取到它自己的類中,僅用於textareas。

+0

啊,謝謝!但是'盒子大小'屬性是新穎的。我們如何在IE6的日子裏解決這個問題? – Dai 2012-08-08 01:54:36