Archivos para HTML

Estructurar formulario con css y sin tabla

Cuando hacemos un formulario lo ideal es que el resultado final siempre sea un formulario estructurado, una columna para las etiquetas, otra columna para las cajas de texto, para que así un nombre largo no te deje un formulario con cajas escalonadas y quede mas bonito.

El problema es que usamos tablas para crear dicha estructura, y a veces trabajar con tablas siginfica perder el control sobre los elementos, trabajar con una estructura fija siempre es engorroso y a veces queremos deslimitar ese obstaculo.

Por lo tanto, hoy me puesto a trabajar en un sistema para poder crear un formulario sin la necesidad de tabla, y que quede igual de estructurado. Y aquí os lo dejo para que podais probarlo si os convence el resultado.

HTML

<form name=”login” method=”post” action=”./Sesion/login.php” id=”formulario”>

<p>

<label for=”usuario”>Usuario</label>
<input type=”text” name=”usuario” id=”usuario” value=”" />

</p>
<p>

<label for=”contrasena”>Contraseña</label>
<input type=”password” name=”contrasena” id=”contrasena” value=”" />

</p>
<p>

<input type=”submit” id=”boton” value=”" />

</p>

</form>

CSS

/************************************
* Estilos formulario
************************************/
.formulario{

font-size:.8em;

}

.formulario p label.etiqueta{

width:100px;
font-weight:bold;
float:left;
border:0px;

}

.formulario p input.caja{

width:140px;
font-size:.9em;
border:1px solid;
padding:1px 5px;

}

.formulario p input.boton{

margin-left:208px;
border:0px;

}


Apuntes

Con esto ya tienes tu formulario sin tabla, todo con estilos css y una estructura xHtml y css perfectamente válida de cara a los estandares del web y funcionando en todos los navegadores.

El codigo que he pegado aquí te situa las etiquetas una debajo de otra empezando en el mismo left, te situa las cajas de texto una debajo de otra, al lado de las etiquetas, pero alineadas entre ellas. El equivalente a una tabla con 2 filas (tr) con 2 columnas (td) cada una, y una fila con colspan a 2.

Ahora imaginad que pensais que este formulario no lo quereis en vertical sino en horizontal. El equivalente a crear una tabla con 1 fila y 5 columnas, con el código traspasado a Css como os he mostrado yo, es tan fácil como colocar un ‘float:left;’ a la clase de las cajas.

El único inconveniente que tiene este sistema es que tienes que poner la medida del label de la etiqueta mas larga, es decir, si tienes una etiqueta que sobresale por encima de las otras, el escalado de las cajas no es automatico, sino que tendrias que especificar el width de los labels para adecuarlos a la nueva situación.

De todos modos te ahorras la tabla, te ahorras mucho tiempo en modificaciones de estilo y centralizas los estilos de labels, botones, formulario y cajas.

Comentarios (1)

Abrir multibox automaticamente al cargar pagina

Puede ser un caso poco común, pero hoy necesitabamos que MultiBox se lanzara automaticamente al hacer la carga de la página. Después de intentar simular un click sin éxito para este caso, la solución que he encontrado es más fácil de lo esperado.

PhatFusion ya había pensado en nosotros, y a la hora de inicializar el multibox en la página hay que agregar una nueva linea que tenga el evento open:

var box = {};
window.addEvent(‘domready’, function(){
box = new MultiBox(‘mb’, {descClassName: ‘multiBoxDesc’});
box.open($(‘mb1′));
});

Dejar un comentario

ThickBox: Ventanas flotantes

ThickBox es una librería javascript que permite abrir ventanas flotantes sobre páginas HTML. Esto nos permitirá mostrar imágenes o paginas sobre una ventana emergente y sin necesidad de abrir una ventana nueva, evitando de esa forma también el Bloqueador de popup de nuestro navegador.

thickbox.gif

ThickBox, creado por Cody Lindley y que acaba de llegar a la versión 2.0 es sencilla de utilizar. Primero debes descargar los archivos necesarios para su funcionamiento:

  • jquery.js: Librería necesaria para el funcionamiento e thickbox.
  • thickbox.js: Funciones thickbox para abrir las ventanas.
  • thickbox.css: Hoja de estilos para la ventana emergente.
  • loader.gif: imagen que se mostrará mientras se carga el contenido de la ventana emergente

Entonces una vez que se tienen todos los archivos, lo siguiente es incluir las librerías, la hoja de estilos en nuestro HTML, esto se incluye antes de cerrar el tag HEAD.

  1. <script type="text/javascript" src="jquery.js"></script>
  2. <script type="text/javascript" src="thickbox.js"></script>
  3. <link rel="stylesheet" href="thickbox.css" type="text/css" />

Luego cuando se quiere insertar una pantalla flotante con una imagen, esto se hace sobre un enlace, por ejemplo si deseamos incluir un enlace para abrir una imagen:

  1. <a href=“flash9.gif” class=“thickbox” title=“Ejemplo ThickBox”>

Donde se tiene que class=”thickbox” es el que indica a las librerías thickbox que se abrirá una ventana emergente, el otro dato importante es que lo que se asigne a la propiedad title se mostrará como titulo de la ventana emergente. Resumiendo podemos decir que a cualquier enlace que tengamos en nuestra página solo es necesario aplicarlo el estilo thickbox.

Esto es para el caso de las imágenes, pero si deseamos incluir una página externa, el código cambio poco, donde tenemos que incluir el ancho y el alto de la ventana emergente en la url que se le pasará a la propiedad href, veamos el siguiente ejemplo donde abrimos la página de Google.

  1. <a
    
  2. href="http://www.google.com?TB_iframe=true&height=420&width=600"
  3. title="Google"
  4. class="thickbox">Google</a>

            Se observa que el código adicional es ?TB_iframe=true&height=420&width=600, es obvio donde se pone el ancho y alto de la ventana.

            Comentarios (3)