2011-12-07 17 views
2

私は単純な登録フォームを作成しようとしています。すべてを整然と並べるために、私はテーブルメソッドを使用しました。ただし、テキストはテーブルの中央よりも少し下にあるのではなく、テーブルの中央に配置されています。以前も同様の方法を使用していましたが、うまく動作しました。HTMLフォームの入力/ラベルの整列

ここで問題を確認できます。 http://www.krawczyksolutions.com/sender/register.php

テーブル用のコード

<div class="head" align="center"> 
    <div align="center" class="box"> 
     <h2>Register New Account</h2><p/> 
     <form name="regform" action="javascript:checkForm();"> 
      <table> 
       <tr> 
        <td>First Name: </td> 
        <td><input type="text" name="fname" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Last Name: </td> 
        <td><input type="text" name="lname" class="input" size="30"/><p/></td> 
       </tr> 
       <tr> 
        <td>Company: </td> 
        <td><input type="text" name="comp" class="input" size="30"/><p/></td> 
       </tr> 
       <tr> 
        <td>Address Line 1: </td> 
        <td><input type="text" name="add1" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Address Line 2: </td> 
        <td><input type="text" name="add2" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>City: </td> 
        <td><input type="text" name="city" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Postcode: </td> 
        <td><input type="text" name="post" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Country: </td> 
        <td><input type="text" name="countr" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Email: </td> 
        <td><input type="text" name="email" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Confirm Email: </td> 
        <td><input type="text" name="cemail" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Password: </td> 
        <td><input type="password" name="pass" class="input" size="30" /><p/></td> 
       </tr> 
       <tr> 
        <td>Confirm Password: </td> 
        <td><input type="password" name="cpass" class="input" size="30" /><p/></td> 
       </tr> 
      </table> 
      <input type="submit" value="Proceed To Payment"/><p/> 
     </form> 
    </div> 
</div> 

CSSファイルには、次の(注:このページで使用されるCSSファイルのarn'tの要素の一部)が含まれます。

body 
{ 
    background-image:url("img/backgr.jpg"); 
    color:#9E9E9E; 
    font-family:Optima, ‘Lucida Grande’, ‘Lucida Sans Unicode’, Verdana, Helvetica, Arial, sans-serif; 
} 
#header 
{ 
    margin: 20px; 
    padding: 10px; 
    height: 60px; 
} 
#footer 
{ 
    margin: 20px; 
    padding: 10px; 
    height: 60px; 
} 
#leftcol 
{ 
    position: absolute; 
    left: 150px; 
    top: 160px; 
    width:400px; 
} 
#rightcol 
{ 
    position: absolute; 
    right: 150px; 
    top: 220px; 
    width: 300px; 
} 
.inputbox 
{ 
    background-color:black; 
    color:#9E9E9E; 
    font-family:Optima, ‘Lucida Grande’, ‘Lucida Sans Unicode’, Verdana, Helvetica, Arial, sans-serif; 
    box-shadow:1px; 
    border-radius:3px; 
    -webkit-border-radius:3px; 
    -moz-border-radius:3px; 
} 
.box {width:700px;padding:15px;background-color:#fff;margin-bottom:18px;border-radius:0.6em;-moz-border-radius:0.6em;-webkit-border-radius:0.6em;} 
.box { 
    -moz-box-shadow: 4px 4px 5px #111; 
    -webkit-box-shadow: 4px 4px 5px #111; 
    box-shadow: 4px 4px 5px #111; 
    /* For IE 8 */ 
    -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#111111')"; 
    /* For IE 5.5 - 7 */ 
    filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#111111'); 
} 
.head 
{ 
    margin-top:50px; 
} 
.input 
{ 
    font-size:14px; 
} 

UPDATE

mason81は、この特定の問題を解決しましたが、これに出くわす他の誰がそれを整列させるだけではなく、CSSのテーブルを使用してに関する真実の答えをお読みください。それをやる方がはるかに簡単で簡単です。

+0

スタートCSSのリセットと、その後、これらの問題を離れて行く、またはどちらかが修正する方がはるかに簡単です。開始するには、HTML5Boilerplateをチェックしてください。http://html5boilerplate.com/ – cdeszaq

+2

レイアウト用のテーブルがありません!!!! –

+1

ここをクリックhttp://jsfiddle.net/ASvvQ/テーブルは必要ありません。 –

答えて

5

はこれを試してみてください:

tr 
{ 
    vertical-align:text-bottom; 
} 
+0

完全に働いています。しかし、なぜそれが機能したのですか?テキストはtr要素の中央にあり、入力ボックスは上部にありました。なぜ、下部を整列すると、両方がtr要素の中間に置かれますか? – jskrwyk

+0

@JamesKrawこの回答はあなたの症状を解決しますが、問題は解決しません。レイアウト用にテーブルを使用しないでください。それは**最終的にあなたを後悔させるでしょう。 –

+0

尋ねられた質問を解決したので、これを正解と記しましたが、2つの回答を記入することができれば、回答もマークされます。 – jskrwyk

-2

は、それはそれをやっている理由があるため右表のセル内<p/>タグである

<td align=center>name</td> 
+1

-1スタイルにCSSを使用します。 HTMLアトリビュートを使ってスタイルを設定するのは悪いことです。 – cdeszaq

2

を試してみてください。それらを取り出して、行の間にスペースが必要な場合は、パディングスタイルをすべてテーブルセルに追加します。

td 
{ 
    padding-bottom: 10px; 
} 
5

あなたは、テーブルを使用する必要はありません。ラベル自体を使用してフォームを整列させます。

See this example

+0

古い習慣は大変ですが、確かに私はCSSだけに移行すべきだと思います。 – jskrwyk

+1

名前のうちの1つが特に長い場合、これはデザインを破ります。 – novacara

+0

@novacaraどのくらい正確に? –