代码之家  ›  专栏  ›  技术社区  ›  user1563677

空时如何突出显示表格单元格边框?

  •  1
  • user1563677  · 技术社区  · 7 年前

    我使用AngularJS创建动态行和列。然后在“保存”按钮上,当任何单元格中没有数据时,单击以突出显示该单元格。

    下面是我演示的JSFiddle: http://jsfiddle.net/jyshdf85/

    我的表代码如下:

    <table class="table table-bordered" ng-form="targetTableForm" ng-class="{submitted: targetTableSubmitted}">
          <colgroup>
            <col class="unique-id">
          </colgroup>
          <thead>
            <tr>
              <th class="unique-id">Name #</th>
              <th contenteditable="true" ng-repeat="c in targetTable.columns" ng-model="c.label"></th>
              <!--<th class="view-next-set"><a href="#">...</a></th>-->
              <td class="center add-column"><a href ng-click="open()">+ Add Column</a></td>
            </tr>
          </thead>
          <tbody>
            <tr ng-repeat="r in targetTable.rows">
              <td contenteditable="true"></td>
              <td contenteditable="true" ng-repeat="column in targetTable.columns" ng-model="r[column.id]" ng-blur="!r.id? addNewRow(r[column.id], r): undefined" ng-required="!$parent.$last"></td>
              <!--<td class="blank" colspan="2"></td>-->
            </tr>
          </tbody>
        </table>
    

    我的CSS是:

    .table.submitted td.ng-invalid {
      border-color: red;
    }
    

    其工作原理是:

    通过单击Add column添加几列,然后键入新添加列的表单元格,它将自动创建一个新行。创建两行。然后从表格单元格中删除这些值。现在,当您按下Save按钮时,它会高亮显示该表单元格。

    所有这些都很好,唯一的问题是表单元格被高亮显示的方式。单元格的边框未完全亮显。您可以在JSFiddle中看到演示。我还上传了以下图片:

    https://imgur.com/a/FAHNYOn

    我可以改变单元格的背景颜色,它可以工作,但在所有单元格都高亮显示的情况下看起来很难看。

    有人能指出我在这里做错了什么吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Leonardo Minati    7 年前

    由于被其他单元格的边框覆盖,边框看起来不完全可见。

    我建议使用outline属性而不是border来突出显示单元格:

    .table.submitted td.ng-invalid {
        outline: 1px solid red;
        outline-offset: -1px;
    }
    

    或者你可以简单地扩大边界,以覆盖其他单元格的边界,但我认为这不是最好的方法:

    border: solid 3px red;
    

    希望这能帮助你得到想要的结果!

        2
  •  0
  •   Leonardo Minati    7 年前

    下面的CSS技巧文章介绍了解决此问题的更好和完整的方法: https://css-tricks.com/table-border-collapse-issue/

    基本上,你需要做的是 <div> 你体内的元素 <td> 而且,使用负边距和z索引,您将很快完成任务。请直接参阅链接的文章,以获取使用代码笔的完整示例。

    看看它,让我知道这是否适合你!:)