Janela Modal com jQuery – Lightbox para Página Html e Imagens

Criação de Sites

» Artigo retirado do Blog do Maujor (Vale apena acompanhar!)

Tutorial: técnica para criar uma janela modal com jQuery. O script desse efeito, seleciona todos os elementos a (links) cujo atributo name tenha sido definido com valor “modal” e mostra em uma janela modal(estilo lightbox) o conteúdo do DIV cujo id tenha sido definido no atributo href do link. jQuery realmente simplifica e torna fácil as coisas. Dê uma olhada nos exemplos que eu desenvolvi para demonstrar a técnica. Eles me parecem bem interessantes. icon_smile

btnDemonstracao Download

Caso você não saiba o que é uma janela modal, você pode visualizá-la na página de demonstração que eu desenvolvi.

O autor usa no seu website o facebox (inspirado no facebook). Outros, tais como, lightbox, thickbox, multibox, litebox…… e muitos outros destinam-se a obter a janela modal, cada um deles com suas funcionalidades particulares.

Vamos ao nosso exemplo. Eu mostrarei como criar uma janela modal para apresentar o conteúdo do div cujo id é definido no atributo href do link, conforme dito anteriomente.

Os objetivos são :

  • Procurar em todo o documento o(s) elemento(s) a (link) com o atributo name="modal"e a ele(s) atribuir o evento click para disparar a ação de mostrar, em uma janela modal, o conteúdo do div cujo id é definido no atributo href do link.
  • Criar uma máscara que preencha toda a tela.
  • Criar uma janela modal que seja simples e fácil de modificar.

1. Marcação HTML e atributos do elemento a

<!-- #dialog é o id do DIV definido como mostrado a seguir  -->
<a href="#dialog" name="modal">Janela Modal Simples</a>
<div id="boxes">
<!-- #personalize sua janela modal aqui -->
<div id="dialog" class="window">
<b>Teste de Janela Modal</b>
<!-- Botão para fechar a janela tem class="close" -->
<a href="#" class="close">Fechar [X]</a><br />Janela Modal Simples<br />  Aqui vai o conteúdo da sua Janela Modal Simples.</div>
<!-- Não remova o div#mask, pois ele é necessário para preencher toda a janela -->
<div id="mask"></div>
</div>

2. CSS

<style>/* O z-index do div#mask deve ser menor que do div#boxes e do div.window */
#mask {position:absolute;
z-index:9000;
background-color:#000;
display:none;
}

#boxes .window {
position:absolute;
width:440px;
height:200px;
display:none;
z-index:9999;
padding:20px;
}

/* Personalize a janela modal aqui. Você pode adicionar uma imagem de fundo. */
#boxes #dialog {
width:375px;
height:203px;
</style>
}
/* posiciona o link para fechar a janela */
.close {
display:block;
text-align:right;
}
</style>

3. JavaScript

<script type="text/javascript">
$(document).ready(function() {

//seleciona os elementos a com atributo name="modal"
$('a[name=modal]').click(function(e) {
//cancela o comportamento padrão do link
e.preventDefault();

//armazena o atributo href do link
var id = $(this).attr('href');

//armazena a largura e a altura da tela
var maskHeight = $(document).height();
var maskWidth = $(window).width();

//Define largura e altura do div#mask iguais ás dimensçoes da tela
$('#mask').css({'width':maskWidth,'height':maskHeight});

//efeito de transição
$('#mask').fadeIn(1000);
$('#mask').fadeTo("slow",0.8);

//armazena a largura e a altura da janela
var winH = $(window).height();
var winW = $(window).width();
//centraliza na tela a janela popup
$(id).css('top',  winH/2-$(id).height()/2);
$(id).css('left', winW/2-$(id).width()/2);
//efeito de transição
$(id).fadeIn(2000);
});

//se o botãoo fechar for clicado
$('.window .close').click(function (e) {
//cancela o comportamento padrão do link
e.preventDefault();
$('#mask, .window').hide();
});

//se div#mask for clicado
$('#mask').click(function () {
$(this).hide();
$('.window').hide();
});
});
</script>

Os códigos são diretos e de fácil entendimento. Não se esqueça de linkar para a biblioteca jQuery ao documento.

btnDemonstracao Download

4. Conclusão

É isso, e somente isso, que você precisa saber para criar uma janela modal simples. Neste tutorial eu ensinei como apresentar o conteúdo de um div dentro de uma janela modal. Você pode aplicar os conceitos aqui mostrados para criar o efeito de mostrar uma galeria de imagens dentro de um iframe.

Para aqueles que estão em busca de uma janela modal totalmente personalizável, esta técnica que eu mostrei é perfeita. Dúvidas e contribuições? Poste nos comentários. Obrigado por ler.

Créditos: Author: Kevin Liew | Tradução: Maujor
URL do artigo original em inglês: http://www.queness.com/post/77/simple-jquery-modal-window-tutorial

Veja Também:

Popularity: 94% [?]

Compartilhe esse post com seus amigos:
  • E-mail this story to a friend!
  • Print this article!
  • Turn this article into a PDF!
  • del.icio.us
  • StumbleUpon
  • Digg
  • Reddit
  • LinkedIn
  • Facebook
  • MySpace
  • Google Bookmarks
  • Design Float
  • Rec6
  • Socialogs
  • Technorati
  • Live

13 Comentários para “Janela Modal com jQuery – Lightbox para Página Html e Imagens”

  1. Victor says:

    Muito bom, estava procurando. Obrigado!!!!

  2. Ana says:

    Olá se eu quiser colocar o codigo java em um unico documento a função nao funciona pq?

  3. Jéssica says:

    Eu gostaria de saber se é possível colocar uma imagem e o conteúdo na mesma janela modal e que programa eu tenho que utilizar.

  4. admin says:

    Olá Jéssica!
    Qualquer tipo de conteúdo HTML pode ser inserido no código do modal: textos, fotos, flash, javascripts, qualquer coisa.
    Basta que você entenda um mínimo de criação de sites seguindo os padrões web, com formatação xhtml e css.
    É necessário que você tenha experiência em desenvolvimento de sites.

    Caso precise de ajuda especializada, nos envie um pedido detalhado para que nossa equipe possa avaliar, orçar e atendê-la.

    Obrigado,
    Rodrigo Filardi

  5. Ana Paula says:

    Olá!
    Adorei a janela modal, mas quando uso duas na mesma pagina um link chama o dialog e o segundo o dialog2 fica desconfigurado a tela..

    Poderia me ajudar?

  6. Luiz Fernando says:

    Bom Dia, muito bom este código; porém gostaria de saber se você poderia me ajudar fazer com que no link eu passe 2 informações?

    Exemplo: id & cod

    e onde está o código da janela, coloquei um include recebendo os 2 códigos?

    Desde já agradeço!!!

  7. Olá Luiz Fernando,
    que bom que gostou do código! Ele tem ajudado muita gente mesmo!
    Não poderei te dar uma força nessa, pois não sou programador, minha especialidade é outra… design, publicidade e marketing.
    Nesses códigos geralmente eu consigo fazer adaptações simples, mas essa que você precisa certamente tem uma finalidade que foge do meu alcance.
    É provável que ao mostrar essa página para algum programador php/jquery, em algum fórum de discussão, você consiga a resposta rápida!
    Aliás, se conseguir, posta aqui para ajudar o pessoal tb nessa, valew?! hehehehe :-)
    Grande abraço!

  8. Olá Ana Paula,
    que bom que gostou da janela modal! Você já conseguiu resolver???
    Não poderei te ajudar nessa, pois não sou programador, minha especialidade é outra… design, publicidade e marketing. Acredito que seja alteração no CSS apenas… tem que ir testando…

    Grande abraço!

  9. Fernando says:

    Muito útil essa janela personalizada, porém percebi um pequeno problema, quando a sua página possui barra de rolagem (mais de 1 página de rolagem), e o link da modal está lá embaixo, quando clicado a modal permenece no topo do inicio da pagina, para visualizar precisa rolar a barra até o inicio novamente.
    Para corrigir substitua no javascript, o trecho “armazena a largura e a altura da janela” pelo código abaixo:

    //armazena a largura e a altura da janela
    var left = 0;
    var top = 0;
    var winWidth = $(window).width();
    var winHeight = $(window).height();
    var dialogHeight = $(”#dialog”).height(); alert(dialogHeight);
    var dialogWidth = $(”#dialog”).width();

    if ($.browser.msie) {
    left = document.body.scrollLeft || document.documentElement.scrollLeft;
    top = document.body.scrollTop || document.documentElement.scrollTop;
    } else {
    left = window.pageXOffset;
    top = window.pageYOffset;
    }
    var topW = top + winHeight/2 – dialogHeight/2;
    var leftW = left + winWidth/2 – dialogWidth/2;

    $(id).css(’top’, topW);
    $(id).css(’left’, leftW);

  10. Olá, gostaria de saber como faço para fazer a janela pop-up carregar na abertura do site, em vez de ser via click.

    Obrigado.

  11. Olá Jéssica,
    Você pode que utilizar a mesma janela modal.
    Esse efeito possibilita inserir qualquer conteúdo HTML dentro da janela Modal.
    Você tem que saber construir sites para fazer isso. Saber código html e css apenas. Independente de qualquer programa.
    Bjos

  12. Olá Vinicius,
    você deverá usar uma programação via javascript na abertura do site para que ela chame a ação de abrir o modal. É simples, qualquer programador javascript poderá te ajudar.

    Abs

  13. Nilson says:

    Olá muito bom o código, como faz para abrir na modal o div de uma outra página? acrescentei o link lalala e não abriu

Leave a Reply