Я видел этот вопрос и немного погуглил , но пока ничего не получалось. Я полагаю, что сейчас 2010 год (эти вопросы / ответы старые и, ну, без ответа), и у нас есть CSS3! Есть ли способ получить div для заполнения ширины и высоты ячейки таблицы с помощью CSS?
Я не знаю, какая ширина и / или высота ячейки будет опережать время, и установка ширины и высоты div на 100% не работает.
Кроме того, причина, по которой мне нужен элемент div, заключается в том, что мне нужно расположить некоторые элементы вне ячейки, и position: relative
это не относится к элементу td
s, поэтому мне нужен элемент div.
Ответы:
Следующий код работает с IE 8, режимом совместимости IE 7 с IE 7 и Chrome (в других местах не тестировался):
Вы сказали , что в исходном вопросе , что установка
width
иheight
чтобы100%
не работать, хотя, что заставляет меня подозревать , что есть некоторые другие правила перекрывая его. Вы проверили вычисленный стиль в Chrome или Firebug, чтобы увидеть, действительно ли применялись правила ширины / высоты?редактировать
Как глупо я! Размер
div
был для текста, а не дляtd
. Вы можете исправить это на Chrome, сделавdiv
display:inline-block
, но это не работает на IE. Это оказывается сложнее ...источник
div высота = 100% в ячейке таблицы будет работать, только если у таблицы есть атрибут height.
UPD в FireFox вы также должны установить
height=100%
значение для родительскогоTD
элементаисточник
td
высоту100%
, она должна работать в FF. Это правильный ответ.Я должен был установить поддельную высоту
<tr>
и высоту: наследовать для<td>s
tr имеет
height: 1px
(игнорируется в любом случае)Затем установите тд
height: inherit
Затем установите div в
height: 100%
Это работает для меня в IE края и Chrome:
источник
td { height: 1px }
для Chrome.Если ваша причина, по которой вам нужно 100% -ное деление внутри ячейки таблицы, состояла в том, чтобы иметь возможность расширить цвет фона на всю высоту, но при этом иметь интервал между ячейками, вы можете задать
<td>
сам цвет фона и использовать CSS. свойство border-spacing для создания поля между ячейками.Однако, если вам действительно нужен div на 100% высоты, то, как уже упоминали другие, вам нужно либо назначить фиксированную высоту,
<table>
либо использовать Javascript.источник
border-spacing:5px
элемента «table», но я согласен, что использование DIV внутри ячеек гораздо более элегантно и в целом лучше иметь.border-collapse: separate
к столу, иначе это не будет иметь никакого эффекта. +1border-collapse: separate
по умолчанию, но да, это хороший совет.Итак, поскольку все публикуют свое решение, и ни одно из них не подходит для меня, вот мое (проверено на Chrome и Firefox).
Скрипка: https://jsfiddle.net/nh6g5fzv/
источник
Поскольку любой другой браузер (включая IE 7, 8 и 9)
position:relative
корректно обрабатывает ячейку таблицы, и только Firefox ошибается, лучшим вариантом будет использование JavaScript-прокладки. Вам не нужно менять DOM для одного неисправного браузера. Люди используют прокладки все время, когда в IE что-то не так, а во всех других браузерах это правильно.Вот фрагмент со всем аннотированным кодом. В моем примере JavaScript, HTML и CSS используют адаптивные методы веб-дизайна, но вам это не нужно, если не хотите. (Отзывчивый означает, что он адаптируется к ширине вашего браузера.)
http://jsfiddle.net/mrbinky3000/MfWuV/33/
Вот сам код, но он не имеет смысла без контекста, поэтому посетите URL-адрес jsfiddle выше. (Полный фрагмент также содержит множество комментариев как в CSS, так и в Javascript.)
источник
top:0; left: 0;
.Я предлагаю решение, используя
экспериментальныйFlexbox для имитации макета таблицы, который позволит элементу содержимого ячейки заполнять родительскую ячейку по вертикали:демонстрация
источник
после нескольких дней поиска я выяснил возможное решение этой проблемы.
Испанский язык: El truco es establecer la Tabla, el TR y el TD, рост: 100%. Esto lo hace совместимый с FireFox и Chrome. Обозреватель Internet Explorer, объединяющий блок TD Como. De Forforma Исследователь с Тома Альтурс Максима.
Английское объяснение: в комментариях к коду
источник
если
<table> <tr> <td> <div>
всеheight: 100%;
установлено, то div заполнит динамическую высоту ячейки во всех браузерах.источник
Хорошо, никто не упомянул об этом, поэтому я решил опубликовать этот трюк:
Переполнение: auto для этого контейнера div внутри ячейки помогает мне. Без этого div не использует всю высоту.
источник
Если ячейка таблицы имеет нужный размер, просто добавьте этот класс CSS и назначьте его вашему div:
Если вы хотите, чтобы ячейка таблицы также заполняла родительский элемент, присвойте также класс ячейке таблицы. Я надеюсь, что это помогает.
источник
немного опоздал на вечеринку, но вот мое решение:
источник
Поскольку у меня недостаточно репутации, чтобы оставлять комментарии, я хочу добавить полное кросс-браузерное решение, которое объединяет подходы @Madeorsk и @ Saadat с некоторыми небольшими изменениями! (Проверено на Chrome, Firefox, Safari, IE и Edge от 2/10/2020)
Однако, если вы похожи на меня, вы также хотите контролировать вертикальное выравнивание, и в этих случаях мне нравится использовать flexbox:
источник
Я думаю, что лучшим решением было бы использовать JavaScript.
Но я не уверен, что вам нужно сделать это, чтобы решить проблему размещения элементов
<td>
снаружи ячейки. Для этого вы можете сделать что-то вроде этого:Не inline, конечно, но с классами и идентификаторами.
источник
Чтобы высота: 100% работала для внутреннего элемента div, вы должны установить высоту для родительского элемента td. Для моего конкретного случая это работало с использованием высоты: 100%. Это увеличило внутреннюю высоту div, в то время как другие элементы таблицы не позволяли тд становиться слишком большим. Конечно, вы можете использовать другие значения, кроме 100%
Если вы также хотите, чтобы ячейка таблицы имела фиксированную высоту, чтобы она не увеличивалась в зависимости от содержимого (чтобы сделать внутреннюю прокрутку div или скрыть переполнение), то есть, когда у вас нет выбора, кроме как выполнить некоторые трюки js. У родительского td должна быть высота, указанная в не относительной единице (не%). И, скорее всего, у вас не будет другого выбора, кроме как рассчитать эту высоту, используя js. Для этого также понадобится макет таблицы: фиксированный набор стилей для элемента таблицы.
источник
Я сталкиваюсь с подобными проблемами часто и всегда использовать только
table-layout: fixed;
наtable
элементе иheight: 100%;
на внутренних делах.источник
В конечном итоге я не нашел ничего, что могло бы работать во всех моих браузерах и во всех режимах рендеринга DocTypes / browser, кроме использования jQuery. Итак, вот что я придумала.
Он даже принимает во внимание ряд строк.
Протестировано в IE11 (Edge mode), FF42, Chrome44 +. Не тестируется с вложенными таблицами.
источник
Вы можете сделать это так:
источник
Если позиционированный элемент и его родительский элемент не имеют ширины и высоты, установите
в своем отцовском элементе,
источник
Это, вероятно, не рекомендуется.
Я нашел обходной путь, который работает, если ваш div не содержит текста и имеет равномерный фон.
дает div желаемую высоту и ширину, но с большим недостатком наличия маркера элемента списка. Поскольку у div однородный цвет фона, я избавился от маркера с помощью следующих стилей:
источник
Я не уверен, что вы хотите сделать, но вы можете попробовать это:
<td width="661" valign="top"><div>Content for New Div Tag Goes Here</div></td>
источник
Следующее должно работать. Вы должны установить высоту родительской ячейки. https://jsfiddle.net/nrvd3vgd/
источник
Попробуй это:
источник
Попробуйте поместить дисплей: блок таблицы внутри ячейки
источник
Я не смотрю здесь старый CSS-трюк для < div > внутри < td >. Поэтому я напоминаю: просто установите минимальное значение для ширины , но то , что вам нужно для минимальной ширины . Например:
В TD ширина «с, в этом случае, это до вас.
источник
Это мое решение для расширения 100% высоты и 100% ширины в HTML
<td>
если вы удалите первую строку в вашем коде, вы можете это исправить ...
потому что этот тип документа не позволяет в некоторых файлах использовать 100% внутри
<td>
, но если вы удалите эту строку, тело не сможет расширить фон до 100% высоты и 100% ширины, поэтому я обнаружил,DOCTYPE
что это решает проблемуэтот DOCTYPE позволяет вам увеличить фон в вашем теле до 100% высоты и 100% ширины, и вы можете взять все 100% высоты и 100% ширины в
<td>
источник