2017-06-07 24 views
0

質問はTHISと似ていますが、テーブルとcolspansの代わりにdivsを使用することはできません。colspanでhtmlテーブルセルの周りに奇数の境界線がありますか?

それだけでクロームに表示されて問題になるように見えますが、私は回避策を見つける必要があります。

私の使用例は、以下のケースと非常によく似ています。 3.3の上の境界線が2つの列にまたがることに注意してください。これは明らかに正しくありません。私のユースケースでは、どのセルがマージされるかをユーザーが変更できるので、特定のセルのボーダーを設定することはできません。あなたが代わりにそのCOLSPAN 1以上である共通のセルと共有する独自のセルに限定されるように、セルの境界線を設定するにはどうすればよい

HTML

<div style="padding: 10px"> 
<table> 
    <tr> 
     <td>1.1</td> 
     <td>1.2</td> 
     <td>1.3</td> 
     <td>1.4</td> 
     <td>1.5</td> 
    </tr> 
    <tr> 
     <td>2.1</td> 
     <td>2.2</td> 
     <td colspan="2">2.3</td> 
     <td>2.5</td> 
    </tr> 
    <tr> 
     <td>3.1</td> 
     <td>3.2</td> 
     <td>3.3</td> 
     <td>3.4</td> 
     <td>3.5</td> 
    </tr> 
    <tr> 
     <td>4.1</td> 
     <td>4.2</td> 
     <td>4.3</td> 
     <td>4.4</td> 
     <td>4.5</td> 
    </tr> 
    <tr> 
     <td>5.1</td> 
     <td>5.2</td> 
     <td>5.3</td> 
     <td>5.4</td> 
     <td>5.5</td> 
    </tr> 
</table> 
</div> 

CSS

table { 
    table-layout: fixed; 
    border-spacing: 0; 
    border-collapse: collapse; 
} 

td { 
    border: 1px solid lightgrey; 
    height: 60px; 
    width: 60px; 
    text-align: center; 
    vertical-align: middle; 
} 

td.active { 
    border: 1px solid blue; 
} 

td.brdr-b-hide { 
    border-bottom: none; 
} 
td.brdr-r-hide { 
    border-right: none; 
} 

はJavaScript

var fnActivate = function(target) { 
    target.addClass('active'); 

    if(!target.is(':first-child')) { 
     target.prev().addClass('brdr-r-hide') 
    } 

    var tr = target.closest('tr'); 
    if(!tr.is(':first-child')) { 
     var prevTr = tr.prev(); 
     $('td', prevTr).eq($('td', tr).index(target)).addClass('brdr-b-hide'); 

    } 
}; 

var fnDeactivate = function(target) { 
    target.removeClass('active'); 

    if(!target.is(':first-child')) { 
     target.prev().removeClass('brdr-r-hide') 
    } 

    var tr = target.closest('tr'); 
    if(!tr.is(':first-child')) { 
     var prevTr = tr.prev(); 
     $('td', prevTr).eq($('td', tr).index(target)).removeClass('brdr-b-hide'); 

    } 
} 

$('table').on('click', 'td', function(e){ 
     var target = $(e.currentTarget); 

     if(e.ctrlKey && target.hasClass('active')){ 
      fnDeactivate(target); 
     } else if(e.ctrlKey) { 
      fnActivate(target); 
     } else { 
      fnDeactivate($('table td.active')); 
      fnActivate(target); 
     } 

    }); 

CODE:Plunkr

答えて

2

問題を用いて固定した

table { 
    border-collapse: separate; 
} 

コード:Plunkr

各セルは今1pxの独自の境界線を持っていますが、それは当面のために良い回避策だように、それはフロントエンドに少し違います。

関連する問題