He visto esta pregunta y busqué en Google un poco , pero hasta ahora nada ha funcionado. Me imagino que es 2010 ahora (esas preguntas / respuestas son viejas y, sin respuesta) y ¡tenemos CSS3! ¿Hay alguna manera de obtener un div para llenar el ancho y la altura de una celda de tabla completa usando CSS?
No sé cuál será el ancho y / o la altura de la celda antes de tiempo, y establecer el ancho y la altura del div al 100% no funciona.
Además, la razón por la que necesito el div es porque necesito posicionar absolutamente algunos elementos fuera de la celda, y position: relative
no se aplica a td
s, por lo que necesito un envoltorio div.
Respuestas:
El siguiente código funciona en IE 8, el modo de compatibilidad IE 7 de IE 8 y Chrome (no probado en otro lugar):
Usted dijo en su pregunta original que el establecimiento
width
yheight
al100%
no funcionaba, sin embargo, lo que me hace sospechar que existe alguna otra regla que sea redefinido. ¿Comprobó el estilo calculado en Chrome o Firebug para ver si las reglas de ancho / alto realmente se estaban aplicando?Editar
¡Qué tonto soy! El
div
tamaño fue para el texto, no para eltd
. Puedes arreglar esto en Chrome haciendo eldiv
display:inline-block
, pero no funciona en IE. Eso está resultando más complicado ...fuente
div height = 100% en la celda de la tabla solo funcionará cuando la tabla tenga el atributo de altura.
UPD en Firefox también debe establecer el
height=100%
valor para elTD
elemento primariofuente
td
altura de contención100%
, debería funcionar en FF. Esta es la respuesta correcta.Tuve que establecer una altura falsa en
<tr>
y altura: heredar para<td>s
tr tiene
height: 1px
(se ignora de todos modos)Luego configure el td
height: inherit
Luego establece el div en
height: 100%
Esto funcionó para mí en IE edge y Chrome:
fuente
td { height: 1px }
para Chrome.Si su razón para querer un 100% div dentro de una celda de la tabla fuera poder tener un color de fondo extendido a la altura completa pero aún así tener espacio entre las celdas, podría darle el
<td>
color de fondo y usar el CSS propiedad de espacio entre bordes para crear el margen entre las celdas.Sin embargo, si realmente necesita un div de altura del 100%, entonces, como otros han mencionado aquí, debe asignar una altura fija
<table>
o usar Javascript.fuente
border-spacing:5px
el elemento ed "table", pero estoy de acuerdo, usar un DIV dentro de las celdas es mucho más elegante y, en general, es mejor tenerlo.border-collapse: separate
a la tabla, de lo contrario no tendrá ningún efecto. +1border-collapse: separate
es el valor predeterminado, pero sí, es un buen consejo.Entonces, debido a que todos están publicando su solución y ninguno era bueno para mí, aquí está el mío (probado en Chrome y Firefox).
Violín: https://jsfiddle.net/nh6g5fzv/
fuente
Dado que todos los demás navegadores (incluidos IE 7, 8 y 9) manejan
position:relative
una celda de tabla correctamente y solo Firefox se equivoca, su mejor opción es usar una cuña de JavaScript. No debería tener que alterar su DOM para un navegador fallido. La gente usa cuñas todo el tiempo cuando IE hace algo mal y todos los otros navegadores lo hacen bien.Aquí hay un fragmento con todo el código anotado. JavaScript, HTML y CSS utilizan prácticas de diseño web receptivas en mi ejemplo, pero no es necesario si no lo desea. (Sensible significa que se adapta al ancho de su navegador).
http://jsfiddle.net/mrbinky3000/MfWuV/33/
Aquí está el código en sí, pero no tiene sentido sin el contexto, así que visite la URL jsfiddle arriba. (El fragmento completo también tiene muchos comentarios tanto en CSS como en Javascript).
fuente
top:0; left: 0;
.Propongo una solución usando
el experimentalFlexbox para simular un diseño de tabla que permitirá que el elemento de contenido de una celda llene verticalmente su celda principal:Manifestación
fuente
Después de varios días de búsqueda, descubrí una posible solución para este problema.
Idioma español: El truco es establecer la Tabla, el TR y el TD una altura: 100%. Esto lo hace compatible con Firefox y Chrome. Internet Explorer ignora eso, por lo que ponemos la etiqueta TD como bloque. De esta forma Explorer sí toma la altura máxima.
Explicación en inglés: dentro de los comentarios del código
fuente
si
<table> <tr> <td> <div>
todos se hanheight: 100%;
configurado, entonces el div llenará la altura de celda dinámica en todos los navegadores.fuente
Ok, nadie mencionó esto, así que pensé en publicar este truco:
desbordamiento: auto en ese contenedor div dentro de la celda hace el truco para mí. Sin ella, el div no usa toda la altura.
fuente
Si la celda de la tabla es del tamaño que desea, simplemente agregue esta clase css y asígnela a su div:
Si desea que la celda de la tabla también llene al padre, asigne la clase a la celda de la tabla también. Espero que ayude.
fuente
un poco tarde para la fiesta pero aquí está mi solución:
fuente
Debido a que no tengo suficiente reputación para publicar un comentario, ¡quiero agregar una solución completa para varios navegadores que combina los enfoques de @Madeorsk y @ Saadat con algunas modificaciones! (Probado en Chrome, Firefox, Safari, IE y Edge a partir del 10/02/2020)
Sin embargo, si eres como yo, entonces también quieres controlar la alineación vertical, y en esos casos, me gusta usar flexbox:
fuente
Creo que la mejor solución sería usar JavaScript.
Pero no estoy seguro de que necesite hacer esto para resolver su problema de posicionar elementos en el
<td>
exterior de la celda. Para eso podrías hacer algo como esto:No en línea, por supuesto, sino con clases e identificadores.
fuente
Para hacer la altura: 100% de trabajo para el div interno, debe establecer una altura para el td padre. Para mi caso particular funcionó usando la altura: 100%. Esto hizo que la altura interna del div se estirara, mientras que los otros elementos de la mesa no permitieron que el td se volviera demasiado grande. Por supuesto, puede usar otros valores que no sean 100%
Si también desea que la celda de la tabla tenga una altura fija para que no crezca en función del contenido (para hacer que el div div scroll u ocultar el desbordamiento), es cuando no tiene más remedio que hacer algunos trucos js. El td padre deberá tener la altura especificada en una unidad no relativa (no%). Y lo más probable es que no tenga más remedio que calcular esa altura usando js. Esto también necesitaría el diseño de tabla: estilo fijo establecido para el elemento de tabla
fuente
Me encuentro con problemas similares con frecuencia y siempre solo uso
table-layout: fixed;
en eltable
elemento yheight: 100%;
en el div interno.fuente
Finalmente no encontré nada que funcionara en todos mis navegadores y en todos los modos de representación de navegador / DocTypes, excepto por el uso de jQuery. Así que aquí está lo que se me ocurrió.
Incluso tiene en cuenta el rowpan.
Probado en IE11 (modo Edge), FF42, Chrome44 +. No probado con tablas anidadas.
fuente
puedes hacerlo así:
fuente
Si el elemento posicionado y su elemento padre no tienen ancho y alto, establezca
en su elemento padre,
fuente
Esto probablemente no se recomienda.
Descubrí una solución alternativa que funciona si su div no contiene texto y tiene un fondo uniforme.
le da al div la altura y el ancho deseados, pero con el gran inconveniente de tener una viñeta de elemento de lista. Como el div tiene un color de fondo homogéneo, eliminé la viñeta con esos estilos:
fuente
No estoy seguro de lo que quieres hacer, pero puedes probar este:
<td width="661" valign="top"><div>Content for New Div Tag Goes Here</div></td>
fuente
Lo siguiente debería funcionar. Debe establecer una altura para la celda principal. https://jsfiddle.net/nrvd3vgd/
fuente
Prueba esto:
fuente
Intenta poner display: bloque de tabla dentro de una celda
fuente
No veo aquí un viejo truco CSS para < div > dentro de < td >. Por lo tanto, recuerdo: simplemente establezca un valor mínimo para el ancho , pero lo que necesita para el ancho mínimo . Por ejemplo:
El ancho del td , en ese caso, depende de usted.
fuente
Esta es mi solución para extender 100% de altura y 100% de ancho en un html
<td>
si elimina la primera línea de su código, puede arreglarlo ...
porque este tipo de documento no permite en algunos archivos usar el 100% por ciento dentro
<td>
, pero si elimina esta línea, el cuerpo falla al expandir el fondo a 100% de altura y 100% de ancho, así que encontré estoDOCTYPE
que resuelve el problemaEste DOCTYPE le permite extender el fondo en su cuerpo como 100% de altura y 100% de ancho, y le permite tomar todo el 100% de altura y 100% de ancho en el
<td>
fuente