Necesito una solucion simple. Sé que es similar a otras preguntas, como:
- ¿Tabla HTML con encabezados fijos y una columna fija?
- ¿Cómo puedo bloquear la primera fila y la primera columna de una tabla al desplazarme, posiblemente usando JavaScript y CSS?
Pero necesito una sola columna izquierda para congelar y preferiría una solución simple y sin script.
html
css
html-table
agsamek
fuente
fuente
Respuestas:
Si desea una tabla donde solo las columnas se desplazan horizontalmente, puede hacer
position: absolute
la primera columna (y especificar su ancho explícitamente), y luego envolver toda la tabla en unoverflow-x: scroll
bloque. Sin embargo, no te molestes en probar esto en IE7 ...HTML y CSS relevantes:
Violín
fuente
text-overflow: ellipsis
para mostrarlas limpiamente.Este es un interesante complemento de jQuery que crea encabezados fijosy / o columnas . Cambie la columna fija para que sea verdadera en la página de demostración para verla en acción.
fuente
Puedes usar la
sticky
posición. Aquí hay un código de muestra. Esta es una solución HTML / CSS. No se requiere js.Código de inicio: https://www.bootply.com/g8pfBXOcY9
fuente
En el caso de la columna izquierda de ancho fijo, Eamon Nerbonne proporciona la mejor solución .
En el caso de la columna izquierda de ancho variable, la mejor solución que encontré es hacer dos tablas idénticas y empujar una encima de otra. Demostración: http://jsfiddle.net/xG5QH/6/ .
fuente
seperate
debajo de bootstap, de lo contrario, los bordes no flotan con las celdas. Se requiere un poco de limpieza de bordes después de eso.visibility: collapse;
a las columnas para esconderme de la tabla fija (¡me encanta el:not()
selector css! ) También usé jQuery para.clone()
la tabla, una vez que ha sido generado por php + MySQL + ajax, e lo inserto en un div limpio ...FWIW, aquí hay una tabla que se puede desplazar con la cabeza y el lado fijo.
http://codepen.io/ajkochanowicz/pen/KHdih
fuente
Un poco tarde, pero me encontré con este hilo al probar soluciones para mí. Suponiendo que está utilizando navegadores modernos hoy en día, se me ocurrió una solución que utiliza CSS calc () para ayudar a garantizar el cumplimiento de los anchos.
¡Espero que esto ayude a alguien!
fuente
<br/>
en el<th>
elemento?Diseñe la columna izquierda con
position: fixed
. (Presumiblemente querrá usartop
yleft
estilos para controlar dónde ocurre exactamente).fuente
position: fixed
mantiene y permanece, el resto del contenido actúa normalmente (presumiblemente con un margen izquierdo establecido para que no se superponga con la columna izquierda).Para la mayoría de los navegadores lanzados después de 2017:
Puedes usar el
position: sticky
. Ver https://caniuse.com/#feat=css-sticky .No hay necesidad de una columna de ancho fijo.
Ejecute el fragmento de código a continuación para ver cómo funciona.
fuente
sticky
, por lo que no hay necesidad de una másposition: sticky
cambios en su comportamiento, por lo tanto, usarlo ya se ha mostrado.Tomé la respuesta de Earmon Nerbonne y la edité para trabajar con tablas que llenan todo el ancho.
http://jsfiddle.net/DYgD6/6/
Sin embargo, el ancho de la columna fija aún debe ser un valor establecido.
fuente
Si está desarrollando algo más complicado y desea que se fijen / peguen varias columnas a la izquierda, probablemente necesitará algo como esto.
fuente
Si está en el infierno de Webdevelopper y necesita hacer que esto funcione para IE6, aquí hay un código de muestra que utilicé:
Esto probablemente funcionará SOLO para IE6, así que use comentarios condicionales para el CSS.
fuente
¡No es necesario agregar ningún complemento, CSS puede hacer este trabajo!
La idea es hacer que la posición de todas las primeras celdas en cada columna sea absoluta, y hacer que el ancho sea fijo. Ex:
Esto oculta algunas partes de algunas columnas debajo de la primera columna, así que agregue una segunda columna vacía (agregue la segunda td vacía) con el mismo ancho que la primera columna.
Lo probé y esto funciona en Chrome y Firefox.
fuente
Eamon Nerbonne, cambié algunos CSS en su código y ahora es mejor (la barra de desplazamiento comienza desde la primera fila)
http://jsfiddle.net/At8L8/
Solo agrego dos líneas:
fuente
Puedes hacer la primera columna
position: sticky; z-index: 9
. Hará que la columna / fila se adhiera a su posición actual. Mira mi codepen de ejemplo aquí https://codepen.io/swastikmishra/pen/zYYdKBQEjemplo HTML
fuente
Opera tenía errores para todas las respuestas anteriores cuando las probé en mi Mac. Si se desplaza por la tabla, la columna fija desaparece después de pasar la primera columna sin fijar. Seguí adelante y escribí el código a continuación. Funciona en todos los navegadores que he instalado localmente. Sin embargo, no sé cómo lo maneja.
Solo tenga en cuenta que si tiene la intención de omitir filas en una tabla y no en la otra o cambiar las alturas de las filas, es posible que deba ajustar este código.
fuente
Aquí hay otra modificación de la respuesta más popular, pero con el manejo de texto de longitud variable en las etiquetas de la primera columna: http://jsfiddle.net/ozx56n41/
Básicamente, estoy usando la segunda columna para crear altura de fila, como se mencionó. Pero mi violín en realidad funciona a diferencia de la mayoría mencionada anteriormente.
HTML:
CSS:
fuente
Para mí, este fue el único que funcionó perfectamente (¡gracias a Paul O'Brien!): Https://codepen.io/paulobrien/pen/gWoVzN
Aquí está el fragmento:
fuente
Alternativamente, diseñe el cuerpo con un tamaño predeterminado (a través
height:20em
, por ejemplo) y useoverflow-y:scroll;
Luego, puede tener un gran cuerpo, que se desplazará independientemente del resto de la página.
fuente
fuente
Esto se puede hacer fácilmente con la ayuda de tablas de datos. Las personas que son nuevas en las tablas de datos, consulte https://datatables.net/. Es un complemento y ofrece muchas características. En el código dado, el encabezado es fijo, las primeras 3 columnas son fijas y otras características son También ahí.
fuente
No revisé todas y cada una de las respuestas para esta pregunta, pero después de analizar la mayoría de ellas, descubrí que el diseño falla en el caso de datos de varias líneas en celdas o cabeza. Usé Javascript para resolver esto. Espero que alguien encuentre esto útil.
https://codepen.io/kushagrarora/pen/zeYaoY
Nota: el "contenedor" div es solo para demostrar que el código es compatible con la vista móvil.
fuente
Acabo de hacer pegajosa la columna más pegajosa de una mesa.
Creo que si lo haces
{position: sticky; left: 0;}
, obtendrás el resultado deseado.fuente
sticky
no es compatible con IE.Si no desea tocar demasiado su mesa actual, puede hacer una columna anclada falsa delante de la mesa.
El ejemplo muestra una forma de hacerlo sin JS
fuente
En HTML5, puedes usar CSS
style.transform
.Sin embargo, le recomiendo que "deslice entre páginas" apague si implementa en Mac.
mira el código de muestra
fuente
Agregue esto en la cabeza:
Javascript:
fuente