【问题标题】:Table Styling Where Rowspan > 1Rowspan > 1 的表格样式
【发布时间】:2014-10-30 06:05:46
【问题描述】:

我有这张表,我已经将它设置为第一列中有不少单元格的 rowspan 大于 1。这会导致我使用的样式出现问题:

tbody > tr:nth-of-type(odd) {
    background-color:#55f
}

如何设置它以便第一列单元格样式的任何行?我已经设置了一个小提琴,因为我不知道如何解释它。

在 fiddle 中有 2 个表,顶部是发生的事情,底部是我想要发生的事情(没有内联样式)

http://jsfiddle.net/qLrauoxc/1/

【问题讨论】:

  • 您是在寻找纯 CSS 的答案还是愿意研究 JS?
  • @rorofromfrance 我想使用纯 CSS,但如果更简单的话我很乐意使用 JS
  • 是的,就是这样,我正在考虑您的 jsfiddle,但我不确定是否可以仅使用 CSS .. 有趣的问题
  • @rorofromfrance 我希望它是 HTML 或 JS 答案,而不是 CSS。
  • @Spedwards 这永远是第一个可以行跨度的单元格吗?或者它可能是中间的随机数?

标签: html css html-table


【解决方案1】:

一个表中可以有多个 tbody。如果在您的情况下有意义,您可以使用它们对您的 tr 进行分组,并在 tbody:nth-of-type(odd) 上应用背景颜色。

【讨论】:

    【解决方案2】:

    更新:UPDATED FIDDLE

    使用jQuery

    counter 变量将代表#one <tbody> 上所有<tr> 中的所有第一个<td>
    restricted 变量将表示具有 rowspan 设置属性的 <td> 的跨度,以及将被跳过的 <tr>s 的数量。
    flag 变量将表示跳过(奇数或偶数)。

    注意:将初始标志更改为 1,将使突出显示从将找到的第二个开始(偶数)。

    jQuery:

         $(document).ready(function(){
        var counter = 1;
        var restricted = 0;
        var flag = 0;
        $("#one tbody > tr td:first-child").each(function(){
            var x = $(this).attr("rowspan");
            if(counter > restricted){
            if(flag == 0){
            $(this).parent().css({"background-color":"#f0f"});
            if (typeof x !== typeof undefined && x !== false) { 
                var $selector = $(this).parent();
                for(var i=1;i<x;i++){
                    $selector.next('tr').css({"background-color":"#f0f"});
                    $selector = $selector.next('tr');
                }
                if(flag == 0){
                    flag = 1;
                }
                restricted = restricted + parseInt(x);
            }  
            else{
                restricted = restricted + 1;
                if(flag == 0){
                    flag = 1;
                }
            }       
        }
        else if(flag == 1){
            var x = $(this).attr("rowspan");
            if (typeof x !== typeof undefined && x !== false) { 
                restricted = parseInt(restricted) + parseInt(x);
            }    
            else{
                restricted = restricted + 1;
            }
           flag = 0;
        } 
        }
            counter++;        
        });
    });
    

    UPDATED JSFIDDLE

    【讨论】:

    • @Spedwards 我已经更新了脚本。现在好多了
    • 这目前会影响奇数行,这很好,也是我想要的,但如果我想将其更改为偶数,我会准确更改什么?
    • @Spedwards 将初始标志更改为 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2022-12-11
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多