Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force HTML Tables To Not Exceed Their Containers' Size

This question has been asked several times, but none of the answers provided seem to help me:

See this in action here: http://jsfiddle.net/BlaM/bsQNj/2/

I have a "dynamic" (percentage based) layout with two columns.

.grid {     width: 100%;     box-sizing: border-box; } .grid > * {     box-sizing: border-box;     margin: 0; } .grid .col50 {     padding: 0 1.5%;     float: left;     width: 50%; } 

In each of these columns I have a table that is supposed to use the full column width.

.data-table {     width: 100%; } .data-table td {     white-space: nowrap;     text-overflow: ellipsis;     overflow: hidden; } 

My problem is that some of the columns in that table have content that needs to be truncated to fit in the given width of the table. That does not happen, though. I get two tables that are overlaying each other.

Requirements:

  • Needs to be percentage based. I can't set absolute sizes.
  • Each rows' height must not grow beyond one text line (which would happen if I remove white-space: nowrap)
  • Must work in Chrome, Firefox and Internet Explorer 8+
  • Can't display tables below each other as it has to fit onto one sheet of paper when printing.

What I tried:

  • inside of and use width and overflow on that. Changed nothing.
  • "display: table;" on containing div - instead of having two columns the tables were displayed below each other
  • "table-layout: fixed;" - Forced all columns to have same width
  • I know that columns 2+3 have a total of 30% of width so I tried to manually set column 1 to 70% - Did not change anything
  • Zero-width spaces in content - didn't change anything, probably due to white-space: nowrap;

Related Questions:

  • Table width exceeds container's width
  • How do I prevent my HTML table from stretching
  • HTML CSS How to stop a table cell from expanding
  • Table Overflowing Outside of Div
like image 789
BlaM Avatar asked Jul 31 '13 12:07

BlaM


People also ask

How do I restrict table size in HTML?

To set the table width in HTML, use the style attribute. The style attribute specifies an inline style for an element. The attribute is used with the HTML <table> tag, with the CSS property width.

How do I stop a table overflow in HTML?

The trick is to use the CSS property table-layout. It can take three values: auto , fixed , and inherit . The normal (initial) value is auto , which means that the table width is given by its columns and any borders. In other words, it expands if necessary.

How do I make all the boxes in a table the same size in HTML?

Using table-layout: fixed as a property for table and width: calc(100%/3); for td (assuming there are 3 td 's). With these two properties set, the table cells will be equal in size.

How do I make a table longer in HTML?

To manipulate the height or width of an entire table, place the size attribute (either "WIDTH=" or "HEIGHT=") within the <TABLE> code. To manipulate individual cells, place the size attribute within the code for that cell.


2 Answers

you need to add the table-layout property:

table-layout: fixed; 

also include width=100% in the table HTML tag, not just the style tag.

http://jsfiddle.net/reeK5/

like image 94
eudemonics Avatar answered Nov 07 '22 13:11

eudemonics


Maybe you'll be interested in a max-width: 0; hack I've discovered.

It has some limits, we should use CSS tables instead of HTML, but it works:

.leftBlock {     width: 100%;     max-width: 0;     word-wrap: break-word;     overflow: hidden; }  .rightBlock {     width: 200px;     max-width: 200px;     min-width: 200px; } 

http://jsfiddle.net/CyberAP/NUHTk/103/

like image 23
CyberAP Avatar answered Nov 07 '22 13:11

CyberAP