Подтвердить что ты не робот

Как автоматически настроить ширину таблицы td из содержимого

Сначала попробуйте посмотреть jsFiddle, поскольку вы можете видеть, что у меня есть таблица с большим количеством столбцов. Моя единственная проблема заключается в том, как я могу сделать все td отрегулировать его ширину в зависимости от того, как долго текст внутри нее, не обертывая слова?

Вот мой код HTML:

<div class="content">
    <div class="content-header">

    </div>
    <div class="content-loader">
        <table>
            <tbody>
                <tr>
                    <td>First Name</td>
                    <td>Last Name</td>
                    <td>Gender</td>
                    <td>Birth Date</td>
                    <td>Address</td>
                    <td>Zip Code</td>
                    <td>Nationality</td>
                    <td>Contact Number</td>
                    <td>Email</td>
                    <td>Username</td>
                    <td>Course</td>
                    <td>Year</td>
                    <td>ID Number</td>
                    <td>Subjects</td>
                    <td>Other Fields</td>
                    <td>Other Fields</td>
                    <td>Other Fields</td>
                    <td>Other Fields</td>
                    <td>Other Fields</td>
                    <td>Other Fields</td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

И вот мой код CSS:

.content {
    width: 1100px;
    height: 200px;
    background: #fdfdfd;
    margin: 0px auto;
    position: relative;
    top: 40px;
    border: 1px solid #aaaaaa;
}

.content .content-header {
    width: 100%;
    height: 40px;
    background-color:#aaa;
    background-image:-moz-linear-gradient(top,#eeeeee,#cccccc);
    background-image:-webkit-gradient(linear,0 0,0 100%,from(#eeeeee),to(#cccccc));
    background-image:-webkit-linear-gradient(top,#eeeeee,#cccccc);
    background-image:-o-linear-gradient(top,#eeeeee,#cccccc);
    background-image:linear-gradient(to bottom,#eeeeee,#cccccc);
    border-bottom: 1px solid #aaaaaa;
}

.content-loader {
    overflow: scroll;
}
.content-loader table {
    width: auto;
    background: #aaa;
}

.content-loader table tr {
    background: #eee;
}

.content-loader table tr td {

}

Может кто-нибудь, пожалуйста, помогите мне с этим? Или, если он уже задан здесь, пожалуйста, покажите мне ссылку. Спасибо за помощь.

4b9b3361

Ответ 1

Удалите все ширины, заданные с помощью CSS, и установите белое пространство таким образом:

.content-loader tr td {
    white-space: nowrap;
}

Я бы также удалил фиксированную ширину из контейнера (или добавлю overflow-x: scroll в контейнер), если вы хотите, чтобы поля отображались полностью, не глядя на нечетные...

Подробнее здесь: http://www.w3schools.com/cssref/pr_text_white-space.asp

Ответ 2

Используйте этот атрибут стиля без переноса слов:

white-space: nowrap;

Ответ 3

вы также можете использовать display: table insted из таблиц. Divs более гибкие, чем таблицы.

Пример:

.table {
   display: table;
   border-collapse: collapse;
}
 
.table .table-row {
   display: table-row;
}
 
.table .table-cell {
   display: table-cell;
   text-align: left;
   vertical-align: top;
   border: 1px solid black;
}
<div class="table">
	<div class="table-row">
		<div class="table-cell">test</div>
		<div class="table-cell">test1123</div>
	</div>
	<div class="table-row">
		<div class="table-cell">test</div>
		<div class="table-cell">test123</div>
	</div>
</div>