Ok, tengo un conjunto de casillas de verificación para seleccionar los criterios. Por razones de argumento, diremos que los datos son así:HTML/CSS: ¿cuál es una mejor opción para el diseño de un árbol de elementos anidados que las tablas anidadas?
[] Vehicles
[] Unpowered
[] Bicycle
[] Skateboard
[] Powered
[] Two-wheeled
[] Motorcycle
[] Scooter
[] Four-wheeled
etc
Las [] s representan casillas de verificación.
Haciendo caso omiso de la naturaleza obviamente artificial de este ejemplo, la idea es la siguiente:
- Para empezar, sólo la casilla de verificación del vehículo es visible;
- Si el usuario hace clic en el Vehículo, la casilla de verificación se activa al siguiente nivel (Encendido, Sin alimentación);
- Si el usuario selecciona Alimentado, abre el siguiente nivel (Dos ruedas, Cuatro ruedas);
- Si el usuario luego deshabilita el encendido, ese nivel desaparece.
Ahora, esto es relativamente fácil de configurar al hacer clic en alternar el atributo CSS de visualización entre bloque y ninguno.
Esto está actualmente estructurado en la página como:
<table>
<tr>
<td><input type="checkbox" onclick="toggle('__Vehicles');"></td>
<td>Vehicles
<table id="__Vehicles">
<tr>
<td><input type="checkbox"></td>
<td>Unpowered
etc
Debo señalar antes de que alguien le pregunta: la razón por la casilla de verificación se puso en celda de tabla era controlar el formato. Facilitó la sangría de forma efectiva, ya que todo en la siguiente celda de la tabla se alinearía.
Todo funciona bien, pero la anidación de la tabla es bastante profunda. Sigo pensando que tiene que haber una mejor manera que esto. Tiene que poder construirse fácilmente de forma dinámica y tener un buen soporte entre navegadores para el formateo del "árbol".
También debería mencionar que jQuery está disponible. Lo estoy usando para otras cosas.
Sugerencias?
Editar: Sí, el estilo de la casilla de verificación es importante ya que un par de comentarios han notado. Además, he publicado una solución para esto, basada en las respuestas que he recibido, como respuesta a continuación (demasiado grande para agregar aquí), solo para aquellos curiosos que quieran ver un ejemplo.
Yup también mi idea. –
El punto clave de la pregunta que omite es que el uso de tablas anidadas hace que la casilla de verificación en un nivel se alinee debajo de la etiqueta del nivel principal. Se necesita un estilo más elegante para duplicar este comportamiento con listas, y ese estilo es la parte "difícil" de esta pregunta. – Sparr
también, -1 para el – Sparr