Table 宽度在 Firefox 上无法正常工作 html

Table width not working as expected on Firefox html

我一直很困惑为什么火狐浏览器上的第 table 宽度不能编辑成最小值,但是当我使用 Chrome 浏览器时它可以工作,我只是想把值分开我的 td 分为三行,如下图所示,但在 Firefox 中。

在正在工作的 chrome 中

在无法运行的 Firefox 中

整个Html

<section class="users-list-wrapper">

  <div class="users-list-table">
    <div class="card">
      <div class="card-content">
        <div class="card-body">

          <div class="table-responsive">

            <table class="table" name="table" id="table">
              <thead>
                <tr>
                  <th colspan="9">
                    <div class="titles">
                      <h3>This is Header title <br style="line-height: 20%;">
                        <span class="header2"> SubHeader title</span>
                    </div>
                  </th>
                </tr>
                <tr>
                  <th colspan="4" style="text-align: left;">
                    <span class="municipality">Header</span>
                  </th>
                </tr>
                <tr class="heads">
                  <th class="heads">No</th>
                  <th width="5%" class="heads">ID Number</th>
                  <th class="heads">Name</th>
                  <th width="2%" class="heads">Country</th>
                  <th class="heads">Data total</th>
                </tr>
              </thead>
              <tbody class="report-content">
                <tr>
                  <td></td>
                  <td>1235</td>
                  <td>Jason</td>
                  <td width="10px;">PH-COVID-160203000-00010165</td>
                  <td class="lenss"></td>
                </tr>
                <tr>
                  <td></td>
                  <td>1235</td>
                  <td>Jason</td>
                  <td>United States</td>
                  <td class="lenss"></td>
                </tr>

              </tbody>
            </table>

          </div>
        </div>
      </div>
    </div>
</section>

尝试 wbr - 你可以动态地做到这一点

[...document.querySelectorAll("tbody tr td")].forEach(td => {
  const text = td.textContent;
  if (text.length > 20 && text.indexOf("-") != -1) td.innerHTML = text.replace(/-/g, "<wbr/>-")
})
<section class="users-list-wrapper">

  <div class="users-list-table">
    <div class="card">
      <div class="card-content">
        <div class="card-body">

          <div class="table-responsive">

            <table class="table" name="table" id="table">
              <thead>
                <tr>
                  <th colspan="9">
                    <div class="titles">
                      <h3>This is Header title <br style="line-height: 20%;">
                        <span class="header2"> SubHeader title</span>
                    </div>
                  </th>
                </tr>
                <tr>
                  <th colspan="4" style="text-align: left;">
                    <span class="municipality">Header</span>
                  </th>
                </tr>
                <tr class="heads">
                  <th class="heads">No</th>
                  <th width="5%" class="heads">ID Number</th>
                  <th class="heads">Name</th>
                  <th width="2%" class="heads">Country</th>
                  <th class="heads">Data total</th>
                </tr>
              </thead>
              <tbody class="report-content">
                <tr>
                  <td></td>
                  <td>1235</td>
                  <td>Jason</td>
                  <td width="10px;">PH-COVID-160203000-00010165</td>
                  <td class="lenss"></td>
                </tr>
                <tr>
                  <td></td>
                  <td>1235</td>
                  <td>Jason</td>
                  <td>United States</td>
                  <td class="lenss"></td>
                </tr>

              </tbody>
            </table>

          </div>
        </div>
      </div>
    </div>
</section>

火狐:

Chrome:

要按内容长度拆分,您可以使用正则表达式

[...document.querySelectorAll("tbody tr td")].forEach(td => {
  const text = td.textContent;
  // if the text has dashes but no spaces
  if (text.length > 20 && text.indexOf(" ") == -1 && text.indexOf("-") != -1) {
    td.innerHTML = text.replace(/-/g, "<wbr/>-")
  } else if (text.length >= 10) { 
    // see if there are words > 10 
    td.innerHTML = text.replace(/(\w+)/, function(match, word, index) {
      return word.length<10 ? word : word.split(/(.{10})/).filter(O => O).join("<wbr/>-")
    })
  }
})
<table class="table" name="table" id="table">
  <thead>
    <tr>
      <th colspan="9">
        <div class="titles">
          <h3>This is Header title <br style="line-height: 20%;">
            <span class="header2"> SubHeader title</span>
        </div>
      </th>
    </tr>
    <tr>
      <th colspan="4" style="text-align: left;">
        <span class="municipality">Header</span>
      </th>
    </tr>
    <tr class="heads">
      <th class="heads">No</th>
      <th width="5%" class="heads">ID Number</th>
      <th class="heads">Name</th>
      <th width="2%" class="heads">Country</th>
      <th class="heads">Data total</th>
    </tr>
  </thead>
  <tbody class="report-content">
    <tr>
      <td></td>
      <td>1235</td>
      <td>Jason</td>
      <td>PH-COVID-160203000-00010165</td>
      <td class="lenss"></td>
    </tr>
    <tr>
      <td></td>
      <td>1235longstring</td>
      <td>Jason</td>
      <td>United States</td>
      <td class="lenss"></td>
    </tr>
  </tbody>
</table>