作为桌背景的进展酒吧

Mar*_*aux 4 css html-table progress

我有一个显示人员列表的HTML表格.对于每一行,我希望有一个不同的进度条背景.就像是

<table>
  <tr class="progress-full">...</tr>
  <tr class="progress-half">...</tr>
  <tr class="progress-quarter">...</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

第一行的整个背景颜色,第二行的一半和最后一行的1/4(使用类或直接使用CSS中的百分比).

我尝试使用宽度的背景(像这里),但我没有成功.我可以在div中包含一个div吗?当我检查html代码(例如:with chrome)时,div似乎在表格之外.

<table style="width: 300px;">
      <tr style="width: 75%; background: rgb(128, 177, 133);">
        <div style="width: 300px;">...</div>
      </tr>
      <tr style="width: 50%; background: rgb(128, 177, 133);">
        <div style="width: 300px;">...</div>
      </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

或者另一种方法?

mwc*_*wcz 5

如果使用CSS ::before::after 伪元素,则可以避免向表中添加任何额外的标记.您可以为每个表行提供透明背景,并为伪元素提供所需的宽度.

这是一个jsfiddle例子.

在此输入图像描述

HTML:

<table>
    <tr class="progress-full">
        <td>Row 1 Col 1</td>
    </tr>
    <tr class="progress-quarter">
        <td>Row 2 Col 1</td>
    </tr>
    <tr class="progress-half">
        <td>Row 3 Col 1</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

CSS:

td { padding: 10px; }

tr.progress-full td:first-child,
tr.progress-half td:first-child,
tr.progress-quarter td:first-child {
    position: relative;
}
tr.progress-full td:first-child::before,
tr.progress-half td:first-child::before,
tr.progress-quarter td:first-child::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 100%;
    background-color: red;
    z-index: -1;
}

tr.progress-full td:first-child::before {
    width: 100%;
}
tr.progress-half td:first-child::before {
    width: 50%;
}
tr.progress-quarter td:first-child::before {
    width: 25%;
}
Run Code Online (Sandbox Code Playgroud)

这个CSS可以缩小,具体取决于表结构的变化.我将样式应用到第一个td内部tr.如果您需要将进度条拉伸到多个tds,请使用大于100%的宽度.