Як я можу встановити максимальну ширину комірки таблиці за допомогою відсотків?


100
<table>
<tr>
<td>Test</td>
<td>A long string blah blah blah</td>
</tr>
</table>

<style>
td{max-width:67%;}
</style>

Сказане не працює. Як я можу встановити максимальну ширину комірки таблиці за допомогою відсотків?


Будь ласка, розгорніть на "не працює" .
Спаркі

1
Ви повинні переконатися, що РОДИТЕЛЬ ТД має певну ширину (будь то ширина ширини: 100%; весь шлях від тіла до вашого td, або ви можете дати батькові (тут: tr) 1000px або що завгодно більше. При використанні %% в css він завжди використовує точний px, визначений у батьківській програмі, а потім перетворює px у %% для дітей, оскільки вони мають розмір відносно свого батька.
Philipp Meissner,

Для запису, максимальна ширина зараз працює в Safari та Chrome. Я не впевнений, як довго він підтримувався.
Яків

Відповіді:


71

Відповідно до визначення максимальної ширини в специфікації CSS 2.1, "ефект" мінімальної ширини "та" максимальної ширини "на таблиці, вбудовані таблиці, комірки таблиці, стовпці та групи стовпців не визначений". Таким чином, ви не можете безпосередньо встановити максимальну ширину для елемента td.

Якщо ви просто хочете, щоб другий стовпець займав максимум 67%, тоді ви можете встановити ширину (яка фактично мінімальна ширина, для комірок таблиці), 33%, наприклад у прикладі

td:first-child { width: 33% ;}

Встановивши, що для обох стовпців не буде працювати так добре, оскільки вони мають тенденцію до того, щоб браузери надавали стовпцям однакову ширину.


Насправді максимальна ширина працює зараз у Safari та Chrome. Я не впевнений, як довго він підтримувався.
Яків

114

Я знаю старе питання, але це тепер можливо за допомогою властивості css table-layout: fixedу тезі таблиці. Відповідь нижче на це питання Процентна ширина CSS та переповнення тексту у комірці таблиці

Це легко зробити за допомогою table-layout: fixed, але трохи складно, оскільки про цю властивість CSS відомо не багато людей.

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

Дивіться це в дії на оновленій скрипці тут: http://jsfiddle.net/Fm5bM/4/


2
Дякую! Я побоювався, що фіксований означає, що він не перерахує ширину комірок, у яких немає встановленої ширини, але, на щастя, це не так.
фасл

4
У вашій jsfiddle, якщо я видалю властивості ширини, максимальна ширина все ще не працює, тому не впевнений, як це вирішує проблему.
frezq

4
@superphonic Я думаю, що ви розгублені. Якщо ви вилучите max-widthзначку у цій jsfiddle, ширина залишиться такою самою, тому її не max-widthвстановлює. Можливо, буде зрозуміліше, якщо ви заміните його max-width: 10%на перший td... ви побачите, що він не змінюється. jsfiddle.net/w3f8ey22/1
frezq

4
макет таблиці: виправлений не вирішує питання з ОП. Це не магічно змушує "мінімальну ширину" працювати над коміркою таблиці. Обидві посилаються на загадки не мають різниці у відображенні, якщо макет таблиці: видалено виправлене.
cmerriman

2
ця відповідь вводить в оману, оскільки не пов’язана з питанням
Zoltán Süle

8

Я знаю, що це буквально через рік, але я подумав, що поділюсь. Я намагався зробити те саме, і натрапив на це рішення, яке працювало на мене. Ми встановлюємо максимальну ширину для всієї таблиці, потім працюємо з розмірами комірок для отримання потрібного ефекту.

Помістіть таблицю у свій власний div, а потім встановіть ширину, min-ширину та / або max-ширину діла за бажанням для всієї таблиці. Тоді ви можете працювати та встановлювати ширину та мінімальну ширину для інших комірок, а максимальну ширину для діва, ефективно працюючи навколо та назад, щоб досягти бажаної максимальної ширини.

<div id="tablediv">
<table width="100%">
 <tr>
  <td class="tdleft">Test</td>
  <td>A long string blah blah blah</td>
 </tr>
</table>
</div>

Потім у свої стилі поставте:

#tablediv {
    width:90%;
    min-width:800px
    max-width:1500px;
}
.tdleft {
    width:20%;
    min-width:200px;
}

Правда, це не дає вам "максимальної" ширини комірки як такої, але це дозволяє деякий контроль, який може працювати замість такої опції. Не впевнений, чи спрацює це для ваших потреб. Я знаю, що це спрацювало для нашої ситуації, коли ми хочемо, щоб сторінка навігації на сторінці масштабувалась вгору і вниз до точки, але на всіх широких екранах сьогодні.


0

відсоток має бути відносно абсолютного розміру, спробуйте:

<table>
<tr>
<td>Testasdas 3123 1 dasd as da</td>
<td>A long string blah blah blah</td>
</tr>
</table>

<style>
table{width:200px;}
td{width:65%;border:1px solid black;}
</style>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.