2012-04-10 4 views
0

私はtableを持ち、その半分のセルはrowspan="2"であり、残りの半分はそうではありません。 demoを参照してください。行スパンが存在するときに行境界を追加する最も簡単な方法は?

各「実際の」行の間に境界線が必要です。つまり、H1とH2のためには、すべての行にある必要があります。しかし、H3とH4の場合は、他のすべての行に配置する必要があります。

CSSを使用してこれを行う最もエレガントな方法は何ですか?私は単に(odd)(even)セレクタをchange

答えて

1

separate your headers from the actual rows<thead>および<tbody>を使用してください。 <tbody>行だけをスタイル設定します。もちろんヘッダーのスタイルを設定することはできますが、表ヘッダーとコンテンツを区切るのは良いマークアップです。

<table> 
    <thead> 
     <tr> 
      <th>H1</th> 
      <th>H2</th> 
      <th>H3</th> 
      <th>H4</th> 
     </tr>   
    </thead> 
    <tbody> 
     <tr> 
      <td rowspan="2">1</td> 
      <td rowspan="2">2</td> 
      <td>3a</td> 
      <td>4a</td> 
     </tr> 
     ... 

/* Style in question: */ 
tbody tr:nth-child(even) { 
    border-bottom: 2px solid #BBB; 
} 
+0

おかげで、私の実際のコードはtheadとtbodyを使用しています。実際には私は別の結果を得ているので、フィドルと私の実際のコードにはいくつかの違いがあります。私は今夜​​後でこれに戻ってきます。 –

1

独自のフィドルから開始しています...ただ、この作業を取得するために、すべてのtdにクラス名を配置する必要がないことを好むだろう。結果として得られる境界線は、表とセルの境界線幅が異なるため一様ではありませんが、修正するのも簡単です。

+0

うん、それはwoiks、笑 – SpYk3HH

+0

うーん、スタイルがあります(私は、コンソール内の行の上にそれらを参照してください)が、私は境界線が表示されません。 'odd 'を使うと、右側の行に境界線しか表示されません。 'rowspan =" 2 "'の行は、私が何をしていても境界線を得ていないようです。 (これは私の本当のコードであり、フィドルではありません。私が言う限り、彼らは同じですが、私は探し続けます)。 –

+0

これは 'border-collapse'と関係があると思います。私が 'collapse'に設定すると、行の境界線は現れますが、テーブルの右側の境界の良い部分は消えます。私は手動で各行の最後のtdに右の境界線を配置する別のスタイルを追加し、今はうまく見えます。私は何が起こっているのか分かりませんが、とにかく、本当に複雑な形で今働いています。 –

関連する問題