2017-03-19 5 views
0

CSS display: table/table-row/table-cellのプロパティを持つ表を再現しようとしています。しかし、このようにして作成されたテーブルには、<form>要素が含まれているため、テーブルの構造が崩れているようです。アラインメントはオフになり、フォームを含む完全な行は前の行の最初のセルの幅などに制限されます。CSSの "display:table"プロパティで再現された表のフォーム

このような状況でフォームが他の要素のように動作するようにすることはできますか? CSSにdisplay: inlineというフォームを定義しましたが、それは役に立ちません。

私のコード(読みやすくするためにそれを簡体字)OPの要求を1として

form { 
 
    display: inline; 
 
} 
 

 
.calendarTable { 
 
    display: table; 
 
    margin: auto; 
 
    width: 60%; 
 
} 
 

 
.calendarRow { 
 
    display: table-row; 
 
} 
 

 
.calendarCell { 
 
    display: table-cell; 
 
    text-align: left; 
 
    padding: 10px; 
 
    vertical-align: middle; 
 
}
<div class="main"> 
 
    <div class="calendarTable"> 
 
    <div class="calendarRow"> 
 
     <p class="calendarCell">Some title</p> 
 
     <p class="calendarCell">Some title</p> 
 
     <p class="calendarCell">Some title</p> 
 
    </div> 
 

 
    <?php some php loop ?> 
 
    <form method="post"> 
 
     <div class="calendarRow"> 
 
     <p class="calendarCell"> 
 
      <some inputs> 
 
     </p> 
 
     <p class="calendarCell"> 
 
      <some inputs with formaction> 
 
     </p> 
 
     </div> 
 
     <br> 
 
    </form> 
 
    <?php end php loop; ?> 
 

 
    <form method="post"> 
 
     <div class="calendarRow"> 
 
     <p class="calendarCell"> 
 
      <some inputs> 
 
     </p> 
 
     <p class="calendarCell"> 
 
      <some inputs with formaction> 
 
     </p> 
 
     </div> 
 
    </form> 
 
    </div> 
 
</div>

+0

やあ、それは私たちはあなたが間違っているものを見つけるのを助けるようになります、u'reコードスニペットの一部を提供してください。 – arisalsaila

+0

@arisalsaila確かに、例を示すコードを追加しました... – DannyBiker

+0

テーブルが必要な場合は、なぜ「

」を使用していませんか? CSSを使用しても「
」は作成されず、同等のものでもありません。 – Rob

答えて

0

UPDATE

私はそれかどうかを知りたいと思いました可能ですこのシナリオでは、フォームが適切に動作するようにしてください。

確かに、有効かどうかわかりませんが、完璧に動作します。

SOLUTION

が更新スニペットを参照してください各<form>display:table-row

を割り当てます。


  1. 1行目は3つのセルを有していた2番目と3番目の行は、わずか2セルそれぞれを有し.calendarRow S

  2. 巻き付け<form> sがありました。

我々は<table><tr>、および<td>に無効なHTMLを適用した場合、それらも同様に不安定に実行することになり。このスニペットでは私が持っている:

  1. はさらに、テーブルの動作を制御する<forms>
  2. 追加1第二のセルと第三行
  3. 追加table-layout:fixedを削除しました。各セルの幅を32%と宣言しています。通常、これは第3列が他の列より多くの内容を有するために達成するのが難しい。
  4. 細胞が正しく整列される方法を示す概要を追加しました。

SNIPPET

.calendarTable { 
 
    display: table; 
 
    margin: auto; 
 
    width: 60%; 
 
    table-layout: fixed; 
 
} 
 

 
.calendarRow { 
 
    display: table-row; 
 
} 
 

 
.calendarCell { 
 
    display: table-cell; 
 
    text-align: left; 
 
    padding: 10px; 
 
    vertical-align: middle; 
 
    width: 32%; 
 
} 
 

 
p { 
 
    outline: 1px solid black; 
 
} 
 

 
.red { 
 
    color: red; 
 
    font-weight: 700 
 
}
<div class="main"> 
 
    <div class="calendarTable"> 
 
    <form class="calendarRow"> 
 
     <p class="calendarCell">Some title</p> 
 
     <p class="calendarCell">Some title</p> 
 
     <p class="calendarCell">Some title</p> 
 
    </form> 
 
    <form class="calendarRow"> 
 
     <p class="calendarCell">Some new title</p> 
 
     <p class="calendarCell">Some new title</p> 
 
     <p class="calendarCell red">This cell was missing</p> 
 
    </form> 
 
    <form class="calendarRow"> 
 
     <p class="calendarCell">Some new title</p> 
 
     <p class="calendarCell">Some new title</p> 
 
     <p class="calendarCell red">This cell was missing</p> 
 
    </form> 
 
    </div> 
 
</div>

+0

あなたの答えをありがとう。欠落している細胞はタイプミスであり、すべての行で3つです。 問題は私が
を取り除くことができないことです。私はそれが問題なく動作することに同意しますが、タイトルに記載されているように、このシナリオでは正しく動作するフォームがあるかどうかを知りたがっています。 – DannyBiker

+0

@DannyBiker '

'(と同等のもの) *** display:table-row'という形式のフォームを持つことはできませんでしたか? ;) – zer00ne

+0

@DannyBiker更新された回答を見る、それは素晴らしい作品です。 – zer00ne

関連する問題