为什么我的 <td> 块的宽度大于 50px。如果我特别告诉它是 max-width 和 width = 50px

Why is the width of my <td> block bigger than 50px. If I specifically tell it to be max-width and width = 50px

这是我的 table:

<table style="width: 84%; min-width: 330px; margin-left: 8%; margin-top: 20px; margin-right: 8%;" cellpadding="0" cellspacing="0">
                    
                    <tr>
                        <td style="width: 50px; border-top: solid 1px #dedede; background: yellow; max-width: 50px;">
                            <img style="width: 50px; background: red" src="https://s3.amazonaws.com/co.psngr.gopublic.staging/media/product/1/fbb3f543c5c349b09b59bf19a1e6a6d9.png">
                        </td>
                        <td colspan="1" style="border-top: solid 1px #dedede; padding: 20px 10px; text-align: left; word-wrap: break-word; font-family: 'Lato', sans-serif; font-size: 16px;color: #333333; width: 50%;">
                            <b><span style="color: #24b646">3 x </span>Psngr Beacon</b><br/>
                            <span style="font-size: 14px; color: #899ba7;">Bluetooth 4 (BLE) USB iBeacon\u2122</span>
                        </td>
                        <td style="
                          width: 100px;
                          text-align: right;
                          border-top: solid 1px #dedede;
                          padding: 20px 0px;
                          font-weight: bold; color: #24b646;
                          font-family: 'Lato', sans-serif;
                          font-size: 18px;
                          letter-spacing: 0.2px; word-wrap: break-word">
                            € 74.85
                        </td>
                    </tr>
                </table>

如你所见。 table 里面有一张 50px 的图片,颜色为红色。但是然后是图片的两倍,即使将相同的宽度设置为两者:

当我检查时,元素样式显示为 50px;但是如果我突出显示它,它会显示 109x77

我将它用于 django 模板,所以我不能使用@mediaQueries 或 类。我只是想让你们提前知道这件事

我认为发生这种情况是因为您将中间 td 的宽度设置为 50%,因此它将更改第一个 td 的宽度以占用 table 行的剩余 space。将第二个 td 的宽度设置为 100% 应该可以解决这个问题。

这是由其他两个 td 元素的某些样式引起的。由于您在其他两个上有 padding-top and/or padding-bottom,因此在第一个上创建了您不想要的额外垂直 space。此外,您最初将第二个 td 的宽度设置为 50%:这将第一个 td 拉得比 50px 更宽。

我在下面的代码片段中删除了这些内容作为起点 - 您可以以不同的方式对其他 2 td 进行调整,这样第一个就不会产生不良影响。

<table style="width: 84%; min-width: 330px; margin-left: 8%; margin-top: 20px; margin-right: 8%;" cellpadding="0" cellspacing="0">

                <tr>
                    <td style="width: 50px; border-top: solid 1px #dedede; background: yellow; max-width: 50px;">
                        <img style="width: 50px; background: red" src="https://s3.amazonaws.com/co.psngr.gopublic.staging/media/product/1/fbb3f543c5c349b09b59bf19a1e6a6d9.png">
                    </td>
                    <td style="border-top: solid 1px #dedede; text-align: left; word-wrap: break-word; font-family: 'Lato', sans-serif; font-size: 16px;color: #333333; padding: 0 40px">
                        <b><span style="color: #24b646">3 x </span>Psngr Beacon</b><br/>
                        <span style="font-size: 14px; color: #899ba7;">Bluetooth 4 (BLE) USB iBeacon\u2122</span>
                    </td>
                    <td style="
                      text-align: right;
                      border-top: solid 1px #dedede;
                      font-weight: bold; color: #24b646;
                      font-family: 'Lato', sans-serif;
                      font-size: 18px;
                      letter-spacing: 0.2px; word-wrap: break-word">
                        € 74.85
                    </td>
                </tr>
            </table>