Стол, выходящий из div

У меня проблема с компоновкой в моем приложении MVC весны. В моем приложении таблица, содержащаяся в div, выходит из нее, даже я установил параметр width для этого div. Я пробовал много решений, которые я искал Google, но безуспешно. Вот мой файл jsp, файл CSS и экран из моего приложения. Как вы можете видеть, когда текст в таблице длинный, он не разбивается на новую строку (как я хочу).

Файл CSS:

    th,td {
    border-style: solid;
    border-width: 5px;
    border-color: #BCBCBC;
}


#all {
    width: 500px;
}

#tablediv {
    width: 400px;
    float: left;
}

Файл jsp:

    <body>
<h3>All your notes:</h3>
<c:if test="${!empty notes}"/>

<form method="post" action="manage_note">

<div id="all">
<div id="tablediv">

<table>

<tr>
    <th class="widther">Note date</th>
    <th>Description</th>
</tr>

<c:forEach items="${notes}" var="note">

<tr>
    <td class="widther">${note.date} ${note.time}</td>
    <td >${note.description}</td>
    <td><input type="radio" name="chosen_note" value="${note.note_id}"></td>
</tr>

</c:forEach>

</table>
</div>

<div id="addbutton">
    <input name="add_note" type="submit" value="Add note"/>
</div>


</div>


<div id="restbuttons">
    <input name="edit_note" type="submit" value="Edit"/>
    <input name="delete_note" type="submit" value="Delete"/>
</div>

</form>

</body>

И вот экран:

http://imageshack.us/photo/my-images/203/tableproblem.png/

Ответ 1

Вам нужно сделать две вещи, чтобы таблица не стала слишком большой.

1) Установите для параметра table-layout значение fixed:

table {
    table-layout: fixed;
    width: 100%;   
}

2) Установите word-wrap в break-word для td/th

th,td {
    border-style: solid;
    border-width: 5px;
    border-color: #BCBCBC;
    word-wrap: break-word;
}

Здесь вы можете увидеть рабочий пример: http://jsfiddle.net/d6WL8/

Ответ 2

Ответ на hoooman правилен, но, возможно, вы имеете в виду что-то еще. Вы можете использовать overflow: auto в этой таблице, а также указать ширину, и она будет создавать полосы прокрутки, если содержимое выходит за пределы таблицы.

Существует также overflow-x и overflow-y для указания какой оси.

Ответ 3

Это потому, что у вас есть 1 слово длиной около 100 символов, попробуйте помещать пробел в середину этого, и он должен исправить себя.

Ответ 4

установите max-width вместе с word-wrap

Ответ 5

Несколько раз добавление таблицы внутри Div происходит. В моем случае я дал padding-right: 0px для <div>

Ответ 6

Я также столкнулся с этой проблемой, добавил этот класс в css и фиксированную таблицу {margin-left: 0}

Ответ 7

Это старый вопрос, но у меня есть более простой метод.

Просто добавьте это:

th, td {
    word-break: break-word; /*or you can use word-break:break-all*/
    min-width: 50px; /*set min-width as needed*/
}

min-ширина для th или td не будет работать, если ваша table уже установлена на table-layout:fixed. Просто удали это.

или добавьте это, если вы не можете найти старый CSS для table-layout

table {
    table-layout:unset !important;
}

убедитесь, что перед таблицей указан дополнительный класс/идентификатор, если вы хотите, чтобы код работал только на той странице, которую вы хотите.

Пример:

.entry-content table {
    table-layout: unset !important;
}
.entry-content th, .entry-content td {
    word-break: break-word;
    min-width: 50px;
}

Надеюсь, что это может помочь всем вам. Удачи!

Ответ 8

У меня есть простое решение, надеюсь, оно может кому-нибудь когда-нибудь помочь.

Любая таблица, которая вытекает из ее контейнера, просто инкапсулирует ее с тегом div с style="overflow:scroll"

<div style="overflow:scroll">
<table>
.
.
.
</table>
</div>

И ты готов к работе. Прощайте!