【问题标题】:Remove some borders of elements in table删除表格中元素的一些边框
【发布时间】:2023-03-06 16:22:01
【问题描述】:

我正在尝试创建一个带有下面图例的线性年历。我正在用桌子做这个,但我不知道这是否是最好的方法!

我的主要问题是使用 CSS 删除某些元素的表格边框。

  1. 如何从具有 hr 的行中删除 所有边框?只有一个在工作。

  2. 我需要在图例中的行之间留一个短间距。

  3. 我需要移除 class="noborder" 元素的左、上、下边框

#data {
  border-collapse: collapse;
}

th {
  border: 1px solid black;
}

td {
  width: 1.5rem;
  height: 1rem;
  padding-left: 1px;
}

#data tr td {
  border: 1px solid black;
}

<!-- remove borders from td with hr -->#data tbody>tr:nth-child(1)>td {
  border: 0;
}

#data tbody>tr:nth-last-child(3)>td {
  border: 0;
}

<!-- no borders -->.noborder {
  border-top: 0;
  border-bottom: 0;
  border-left: 0;
}
<table id="data">
  <thead>
    <tr>
      <th>Month</th>
      <th>S</th>
      <th>M</th>
      <th>T</th>
      <th>W</th>
      <th>T</th>
      <th>F</th>
      <th>S</th>
      <th>S</th>
      <th>M</th>
      <th>T</th>
      <th>W</th>
      <th>T</th>
      <th>F</th>
      <th>S</th>
      <th>S</th>
      <th>M</th>
      <th>T</th>
      <th>W</th>
      <th>T</th>
      <th>F</th>
      <th>S</th>
      <th>S</th>
    </tr>
  </thead>

  <tbody>
    <!-- Seperator -->
    <tr class="hr-sep">
      <td colspan="23">
        <hr/>
      </td>
    </tr>

    <!-- Month data -->
    <tr>
      <td>January</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
      <td>17</td>
      <td>18</td>
      <td>19</td>
      <td>20</td>
      <td>21</td>
      <td>22</td>
      <td>23</td>
    </tr>
    <tr>
      <td>February</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
      <td>17</td>
      <td>18</td>
      <td>19</td>
      <td>20</td>
      <td>21</td>
      <td>22</td>
      <td>23</td>
    </tr>
    <tr>
      <td>March</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
      <td>17</td>
      <td>18</td>
      <td>19</td>
      <td>20</td>
      <td>21</td>
      <td>22</td>
      <td>23</td>
    </tr>

    <!-- Seperator -->
    <tr class="hr-sep">
      <td colspan="23">
        <hr/>
      </td>
    </tr>

    <!-- Legend -->
    <tr class="legend">
      <td class="noborder"></td>
      <td>L1</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td colspan="3"></td>
      <td>L3</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td class="noborder" colspan="3"></td>
    </tr>
    <tr class="legend">
      <td class="noborder"></td>
      <td>L2</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td class="noborder" colspan="3"></td>
      <td>L4</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td class="noborder" colspan="3"></td>
    </tr>

  </tbody>
</table>

【问题讨论】:

  • 我不会为样式使用额外的标记(规则)。使用边框和/或伪元素。否则,向包含使用相同逻辑的规则的行添加一个类。查看预期结果的图表而不是在没有上下文的情况下提出几个具体问题会很有帮助。您最终可能会得到更好的解决方案。
  • 实际上,按照自己的方式进行操作会破坏表格的语义意图并降低可访问性。你不应该有除了样式之外没有其他用途的行。

标签: html css


【解决方案1】:

应用了所做的任何更改,你能检查一下吗?

如何从具有 hr 的行中删除所有边框?只有一个在工作。

.hr-sep > td{
  border: 0 !important;
}

我需要在图例中的行之间留一个短间距。

<tr><td colspan="23" class="noborder"></td></tr>

我需要删除 class="noborder" 元素的左、上和下边框。

.noborder {
  border-top: 0 !important;
  border-bottom: 0 !important;
  border-left: 0 !important;
}

#data {
  border-collapse: collapse;
}

th {
  border: 1px solid black;
}

td {
  width: 1.5rem;
  height: 1rem;
  padding-left: 1px;
}

#data tr td {
  border: 1px solid black;
}

.hr-sep > td{
  border: 0 !important;
}

#data tbody>tr:nth-last-child(4)>td {
  border: 0;
}

.noborder {
  border-top: 0 !important;
  border-bottom: 0 !important;
  border-left: 0 !important;
}
<table id="data">
  <thead>
    <tr>
      <th>Month</th>
      <th>S</th>
      <th>M</th>
      <th>T</th>
      <th>W</th>
      <th>T</th>
      <th>F</th>
      <th>S</th>
      <th>S</th>
      <th>M</th>
      <th>T</th>
      <th>W</th>
      <th>T</th>
      <th>F</th>
      <th>S</th>
      <th>S</th>
      <th>M</th>
      <th>T</th>
      <th>W</th>
      <th>T</th>
      <th>F</th>
      <th>S</th>
      <th>S</th>
    </tr>
  </thead>

  <tbody>
    <!-- Seperator -->
    <tr class="hr-sep">
      <td colspan="23">
        <hr/>
      </td>
    </tr>

    <!-- Month data -->
    <tr>
      <td>January</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
      <td>17</td>
      <td>18</td>
      <td>19</td>
      <td>20</td>
      <td>21</td>
      <td>22</td>
      <td>23</td>
    </tr>
    <tr>
      <td>February</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
      <td>17</td>
      <td>18</td>
      <td>19</td>
      <td>20</td>
      <td>21</td>
      <td>22</td>
      <td>23</td>
    </tr>
    <tr>
      <td>March</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
      <td>17</td>
      <td>18</td>
      <td>19</td>
      <td>20</td>
      <td>21</td>
      <td>22</td>
      <td>23</td>
    </tr>

    <!-- Seperator -->
    <tr class="hr-sep">
      <td colspan="23">
        <hr/>
      </td>
    </tr>

    <!-- Legend -->
    <tr class="legend">
      <td class="noborder"></td>
      <td>L1</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td colspan="3"></td>
      <td>L3</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td class="noborder" colspan="3"></td>
    </tr>
    <tr><td colspan="23" class="noborder"></td></tr>
    <tr class="legend">
      <td class="noborder"></td>
      <td>L2</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td class="noborder" colspan="3"></td>
      <td>L4</td>
      <td colspan="5"></td>
      <td colspan="2"></td>
      <td class="noborder" colspan="3"></td>
    </tr>

  </tbody>
</table>

【讨论】:

  • Naren,如果我把图例中的 去掉,有没有办法让空间图例中的行之间变小了?
  • @ElioFernandes 我猜这是推荐的方法,这是另一种方法table spacing 最后,另一种选择是创建一个设置了border-spacing 属性的新表,参考here,但我想添加一个新行将是最简单和最好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2015-11-23
相关资源
最近更新 更多