Ir al contenido principal

ventana modal con html, css y jQuery

   Intentaré explicar cómo crear, sólo con CSS, HTML y un poco de jQuery, un tipo de esas ventanitas que no nos permiten pinchar fuera de ellas hasta que las cerremos. Con que hechéis un vistazo al post anterior ya está más de la mitad del trabajo hecho. En dicho post ya expliqué cómo crear la ventana (un div oculto), posicionarla y darle forma con css y abrirla y cerrarla con jQuery, pero, ¿cómo evitar que se pinche fuera de ella?. Lo más sencillo que he encontrado para ello es lo siguiente: (la ventana a abrir será el formulario de correo que comenté en el post anterior el cual os aconsejo tenerlo abierto)

Colocar el siguiente div en el html de nuestra página:

<div id="fondoformulario"></div>

cuyo css será el siguiente:

#fondoformulario {
    position:absolute;
    top:0px;
    left:0px;
    width:100%; /*ocupará todo el ancho de nuestra página*/
    height:1860px; /*le damos el alto de nuestra página*/
    display:none; /*en principio será oculto*/
    background:url(images/imagen.png) repeat; /*la imagen de fondo*/
    z-index:4000; /*tendrá valor menor que el formulario y mayor que todos los demás divs*/
}

   Como podéis intuir, la forma de evitar que se pinche fuera del formulario es abrir un div de fondo que contiene una imagen. La imagen deberá ser semitranparente, dando la sensación de que lo que está detrás se oscurece un poco pero dejando ver el contenido de la página. Al colocar una imagen detrás del formulario, esta impedirá que se pueda pinchar en los enlaces que tengamos (yo creé un cuadrado de 100x100 px. con el Gimp). Es importante el z-index del css. Tenemos que dar un z-index mayor a la ventana que queremos en primer plano, menor al fondo semitransparente y menor aún a los divs del resto de la página.

   Ahora vamos a darle un efecto, sencillo, con jQuery, parecido al tintineo que hace la ventana  cuando pinchamos fuera de ella. El código podría ser algo como:

<script type="text/javascript">

$('#fondoformulario').click(function() {
    if ($('#formulario').is(':visible')){
        $('#formulario').fadeOut(20).fadeIn(20).fadeOut(20).fadeIn(20).fadeOut(20).fadeIn(20);
    }
    });

</script>


Este código viene a decir lo siguiente: cuando pinchemos en el div "fondoformulario" y, si el div "formulario" está visisible, lo hacemos desaparecer y aparecer varias veces.

   Ahora, para mostrar el fondo de la ventana, sólo tendremos que añadir $('#fondoformulario').css('display','block') a la línea de código que ya os comenté en el anterior post. Y $('#fondoformulario').css('display','none') cuando se cierre la ventana.Ya sabéis que si tenéis alguna duda dejadla en los comentarios y la contestaré.

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim...

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos most...

Pase de fotos (slider) en jquery: bxslider

  Hay un buen puñado de sliders fotográficos, realizados en jquery , para elegir; véase la página de AjaxShake . Pero en este post me voy a centrar en uno: bxslider . En realidad sólo he probado dos, el mencionado, y CodaSlider . El CodaSlider también está bien, pero en la página de Gutierrez Sustacha , lo sustituí por el bxslider solamente porque tenía una función de la que carecía el Coda: la de poder parar la presentación al pasar el mouse por encima. Algo que me interesaba ya que, al lado de las fotos hay bastante letra y, además, enlaces. Así, el visitante puede revisar con tranquilidad el contenido.   Además, según mi criterio, creo que los sliders fotográficos pueden encajar en páginas variadas. Podéis ver esta de mecánica del automóvil y esta otra de excavaciones y movimientos de tierra .   Bueno, vamos al grano. Lo primero,  descargaros de aquí todo lo necesario para empezar a funcionar. Lo segundo, dentro de las etiquetas <head> de tu página, c...