CSS text-overflow in a table cell?

后端 未结 12 943
情话喂你
情话喂你 2020-11-22 04:38

I want to use CSS text-overflow in a table cell, such that if the text is too long to fit on one line, it will clip with an ellipsis instead of wrapping to mult

12条回答
  •  孤独总比滥情好
    2020-11-22 05:03

    If you just want the table to auto-layout

    Without using max-width, or percentage column widths, or table-layout: fixed etc.

    https://jsfiddle.net/tturadqq/

    How it works:


    Step 1: Just let the table auto-layout do its thing.

    When there's one or more columns with a lot of text, it will shrink the other columns as much as possible, then wrap the text of the long columns:


    Step 2: Wrap cell contents in a div, then set that div to max-height: 1.1em

    (the extra 0.1em is for characters which render a bit below the text base, like the tail of 'g' and 'y')


    Step 3: Set title on the divs

    This is good for accessibility, and is necessary for the little trick we'll use in a moment.


    Step 4: Add a CSS ::after on the div

    This is the tricky bit. We set a CSS ::after, with content: attr(title), then position that on top of the div and set text-overflow: ellipsis. I've coloured it red here to make it clear.

    (Note how the long column now has a tailing ellipsis)


    Step 5: Set the colour of the div text to transparent

    And we're done!

提交回复
热议问题