it-swarm.com.ru

Как автоматически настроить ширину таблицы 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 {

}

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

16
Pengun

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

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

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

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

25
Joshua Smickus

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

white-space: nowrap;
8
NerdNeo

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

Пример:

.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>

2
warch