Search code examples
htmlcsshtml-table

Getting anchor tag text to truncate inside an html table


I'm trying to truncate anchor tag text in a element. I've added overflow: hidden; text-overflow: ellipsis; to the style on my anchor tag, but it still wraps. Here's some html that reproduces it:

    <html lang="en"
          xmlns="http://www.w3.org/1999/xhtml">
        <head>
    <title>Test Test 123</title>                        
                        </head>
        <body>
            <div style="width: 100%; padding-top: 1px;">
                <div class="contents"
                     style="width: 512px; flex-shrink: 0; margin-left: auto; margin-right: auto; display: block;">
                    <div class="contents-body"
                         style="display: block; width: 512px;">
                        <table style="width:50%; border-collapse: collapse; margin-left: auto; margin-right: auto;">
                            <tbody>
                                <tr style="justify-content:center;align-items:center;gap:56px;color:#848585">
                                    <th style="padding-top:8px;padding-bottom: 10px; font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.1px;text-align:left;width:25%">Column A</th>
                                    <th style="padding-top:8px;padding-bottom: 10px; font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.1px;text-align:left;width:25%">Column B</th>
                                </tr>
                                <tr>
                                    <td rowspan="3"
                                        style="width:25%; padding-top:8px; padding-bottom:8px; text-align:left;font-size:14px;font-style:normal;font-weight:500;line-height:16px; letter-spacing:0.1px;">Entry A</td>
                                    <td style="padding-top:8px; padding-bottom:8px; text-align:left;font-size:14px;font-style: normal;font-weight:400;line-height: 16px;letter-spacing:0.1px;text-decoration-line:underline;">
                                        <a style="color:#E25323; overflow: hidden; text-overflow: ellipsis; width: 50 px;"
                                           href="https://localhost">ABC123ABC-ABC123ABC`</a>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </body>
    </html>

It doesn't seem to like the 50px width on the anchor tag text, I think the column width is messing it up.


Solution

  • If you want it not to wrap, add white-space:nowrap;
    If you want to set width set it 50px, not 50 px (spaces not allowed);
    If you want width to take effect, make your <a> block-level, e.g. with display:inline-block

    And here you are:

    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
      <title>Test Test 123</title>
    </head>
    
    <body>
      <div style="width: 100%; padding-top: 1px;">
        <div class="contents" style="width: 512px; flex-shrink: 0; margin-left: auto; margin-right: auto; display: block;">
          <div class="contents-body" style="display: block; width: 512px;">
            <table style="width:50%; border-collapse: collapse; margin-left: auto; margin-right: auto;">
              <tbody>
                <tr style="justify-content:center;align-items:center;gap:56px;color:#848585">
                  <th style="padding-top:8px;padding-bottom: 10px; font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.1px;text-align:left;width:25%">Column A</th>
                  <th style="padding-top:8px;padding-bottom: 10px; font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.1px;text-align:left;width:25%">Column B</th>
                </tr>
                <tr>
                  <td rowspan="3" style="width:25%; padding-top:8px; padding-bottom:8px; text-align:left;font-size:14px;font-style:normal;font-weight:500;line-height:16px; letter-spacing:0.1px;">Entry A</td>
                  <td style="padding-top:8px; padding-bottom:8px; text-align:left;font-size:14px;font-style: normal;font-weight:400;line-height: 16px;letter-spacing:0.1px;text-decoration-line:underline;">
                    <a style="color:#E25323; overflow: hidden; text-overflow: ellipsis; display:inline-block; width: 50px; white-space:nowrap" href="https://localhost">ABC123ABC-ABC123ABC`</a>
                  </td>
                </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>
    </body>
    
    </html>