ASP .NET - Exibindo textos e imagens com o recurso FancyBox
Você com certeza já viu o recurso usado pelo FancyBox ao navegar pela web. Neste recurso o conteúdo multimídia do site como imagens e texto são exibidos em uma janela flutuante com ou sem efeito de zoom.
O recurso esta presente geralmente em lojas e-commerce onde a imagem em miniatura de um produto é apresentada e quando o usuário clica na imagem ela é aumentada e exibida em uma janela flutuante.
E por que FancyBox ?
Porque FancyBox é o nome dado pelos criadores desta library que usa JQuery para exibir, textos , imagens e outros conteúdos multimídia em uma janela flutuante.
Pois bem, neste artigo eu mostro como podemos usar este recurso em páginas ASP .NET usando o Visual Studio 2010 Professional (Podemos usar o Visual Web Developer 2010 Express Edition também).
A primeira coisa a fazer é baixar o
arquivo JavaScript (jquery.fancybox-version.js)
eu incluí-lo em seu website. Além disso o
download do FancyBox irá incluir arquivos JavaScripts adicionais
para implementar funcionalidades extras como rolagem de imagem
com o mouse e também um arquivo CSS (jquery.fancybox-version.css).
Você pode fazer o download dos
arquivos em
:
FancyBox
Homepage.
Obs:
Ao fazer o download você receberá também um demo mostrando os
recursos do FancyBox.
Como
o FancyBox usa os recursos do JQuery o seu projeto ASP .NET
também deverá conter a library do JQuery. A ultima versão do
JQuery pode ser obtida no site oficial :
jQuery.com
Dando os primeiros passos com o FancyBox
Para usar o FancyBox em sua página ASP .NET você precisa referenciar os arquivos JavaScripts no elemento <head> da página. (Se você usar uma Master Page pode incluir a referência nela e os recursos ficaram disponíveis para todas as páginas que herdaram da Master Page).
Abra o VS 2010 ou o Visual Web Developer 2010 Express e no menu File selecione New Web Site;
A seguir selecione a linguagem Visual Basic e o template ASP .NET Web SIte e informe o nome usandoFancyBox na pasta local de seus projetos:
Será criada o web site e na janela Solution Explorer você vai ver na janela Solution Explorer o projeto contendo a pasta Scripts e os arquivos Default.aspx e web.config;
A pasta Scripts já vai conter os arquivos do JQuery; Vamos aproveitar e criar a pasta Imagens no projeto e incluir na pasta Scripts os arquivos do FancyBox:
Para incluir os arquivos clique com o botão direito do mouse sobre a pasta Scripts e selecione Add Existing Item e procure pelos arquivos onde você descompactou a library do FancyBox;
Na pasta Imagens eu vou colocar algumas imagens que vamos usar no exemplo.
Agora vamos abrir a página Default.aspx e incluir a referência as bibliotecas do JQuery e ao arquivo .css e .js da FancyBox e FancyBox na seção <head> da página:
<script
type="text/javascript"
src='<%=Page.ResolveClientUrl("~/Scripts/jquery-1.3.2.min.js")%>'></script> <script type="text/javascript" src='<%=Page.ResolveClientUrl("~/Scripts/jquery.fancybox-1.3.1.js")%>'></script> <link href="Scripts/jquery.fancybox-1.3.1.css" rel="stylesheet" type="text/css" /> |
Observe que estamos referenciando os arquivos existente na pasta Scripts. O método Page.ResolveClienteUrl esta sendo usado para evitar que quando usado em uma Master Page haja problemas de localização.
Com as referências definidas corretamente vamos começar a usar os recursos do FancyBox:
1- Exibindo Texto
Podemos usar o FancyBox para exibir em uma janela Flutuante que contém um conteúdo inline. Este conteúdo inline pode ser definido em qualquer lugar da página e pode incluir textos , imagens e tudo o que você quiser exibir com HTML.
Para usar o FancyBox para exibir o conteúdo inline em uma janela flutuante quando um elemento for clicado pelo usuário vamos começar incluindo a seguinte marcação na página para definir a região que pode ser clicada pelo usuário:
<div> <span class="style1"> <a id="linkTexto" href="#inlineConteudoID"><strong>ww.macoratti.net - Clique aqui para exibir o texto em uma janela flutuante !</strong></a></span> </div> |
O texto que aparece no interior do elemento link quando clicado irá exibir a janela FancyBox para mostrar o outro conteúdo na janela flutuante. Este conteúdo será o conteúdo existente no interior de um elemento cujo atributo ID coincidir com o valor inlineConteudoID definido no atributo href do elemento link;
<div
style="display: none;"> <div id="inlineConteudoID" style="width:255px;height:200px;overflow:auto; background-color:yellow"> <p> Este é o texto que irá aparecer <b>Janela Flutuante</b>. </p> </div> </div> |
Para poder exibir o texto basta incluir o código JavaScript na página entre as tags <script type="text/javascript">:
$(document).ready(function()
{
$("#linkID").fancybox();
});
Onde no nosso exemplo teremos:
$(document).ready(function
() { $("#linkTexto").fancybox(); }); |
Neste scripts temos a criação da função $(document).ready a qual é uma função JavaScript que o JQuery executa uma única vez quando a página é carregada.
A sintaxe $("linkID") retorna a referência ao elemento HTML denominado LinkID que no nosso exemplo é o identificador "linkTexto" que o valor do id do elemento link que quando clicado irá exibir a janela flutuante. A chamada da função funcybox() neste elemento faz com que a library FancyBox abra janela flutuante e exiba o texto.
Neste exemplo teremos a página Default.aspx contendo o link definido que quando clicado exibir o texto em uma janela flutuante de cor de fundo amarelo:
2- Exibindo Imagens
Para mostrar mais alguns recursos do FancyBox vamos incluir uma tabela com 4 linhas e em cada célula da tabela incluir uma imagem conforme a figura abaixo:
O código fonte desta tabela é dado a seguir:
<table> <tr> <td> <a href="Imagens/paisagem1Grande.jpg" id="linkPaisagem1"> <asp:Image ID="paisagem1" runat="server" ImageUrl="~/Imagens/paisagem1.jpg" AlternateText="Paisagem natural." CssClass="picture"></asp:Image> </a> </td> </tr> <tr> <td> <a href="Imagens/paisagem2.jpg" id="linkPaisagem2"> <asp:Image ID="Image2" runat="server" ImageUrl="~/Imagens/paisagem2.jpg" AlternateText="Paisagem natural." CssClass="picture" Height="102px" Width="148px"></asp:Image> </a> </td> </tr> <tr> <td> <a href="Imagens/paisagem3.jpg" id="linkPaisagem3"> <asp:Image ID="Image3" runat="server" ImageUrl="~/Imagens/paisagem3.jpg" AlternateText="Paisagem natural." CssClass="picture"></asp:Image> </a> </td> </tr> <tr> <td> <a href="Imagens/paisagemGrande2.jpg" id="linkPaisagemGrande2"> <asp:Image ID="Image1" runat="server" ImageUrl="~/Imagens/paisagemPequena2.jpg" AlternateText="Paisagem natural." CssClass="picture"></asp:Image> </a> </td> </tr> </table> |
Exibir imagens com o FancyBox praticamente sigamos as mesmas etapas usadas para exibir texto. Primeiro definimos o código com a marcação HMTL e então incluímos o código JavaScript que vai realizar o serviço. A seguir temos o modelo padrão para o código de marcação usado:
<a
id="linkID"
href="Imagem_tamanho_grande.jpg">
<img src="Imagem_tamanho_pequeno.jpg"
alt="titulo imagem" />
</a>
Obs: as imagens podem ser do mesmo tamanho também;
Após esta definição basta incluir
o código JavaScript que faz a chamada a fancybox() na função $(document).ready
:
$(document).ready(function()
{
$("#linkID").fancybox();
});
Para o nosso exemplo, vejamos a imagem da primeira célula da tabela onde temos o seguinte código:
<a href="Imagens/paisagem1Grande.jpg" id="linkPaisagem1"> <asp:Image ID="paisagem1" runat="server" ImageUrl="~/Imagens/paisagem1.jpg" AlternateText="Paisagem natural." CssClass="picture"></asp:Image> </a> |
O código JavaScript que usa os recursos do FancyBox é o seguinte:
$(document).ready(function () { $("#linkPaisagem1").fancybox(); }); |
onde #linkPaisagem1" é o id do elemento href definido. Executando a página e clicando na primeira imagem teremos:
Para a imagem da segunda célula temos o seguinte código html:
<a href="Imagens/paisagem2.jpg" id="linkPaisagem2"> <asp:Image ID="Image2" runat="server" ImageUrl="~/Imagens/paisagem2.jpg" AlternateText="Paisagem natural." CssClass="picture"></asp:Image> </a> |
A diferença é que no código JavaScript usado não vamos exibir o título da imagem:
$(document).ready(function () { $("#linkPaisagem2").fancybox( { 'titleShow': false }); }); |
Observe que definimos : 'titleShow': false e dessa forma não vamos exibir o título da imagem:
Na terceira célula da tabela temos a declaração a seguir:
|
Já o código JavaScript estamos exibindo o título no interior da janela (inside) e usando o efeito para transição(fade):
$(document).ready(function () { $("#linkPaisagem3").fancybox( { 'titleShow': true, 'titlePosition': 'inside', 'transitionIn': 'fade', 'transitionOut': 'fade' } ); }); |
Executando a página teremos:
Na última célula temos a declaração onde exibimos uma imagem menor que quando clicada exibirá a imagem maior:
.... <a href="Imagens/paisagemGrande2.jpg" id="linkPaisagemGrande2"> <asp:Image ID="Image1" runat="server" ImageUrl="~/Imagens/paisagemPequena2.jpg" AlternateText="Paisagem natural." CssClass="picture"></asp:Image> </a> |
O código JavaScript exibe o título e usa outros recursos de transição da imagem:
$(document).ready(function () { $("a#linkPaisagemGrande2").fancybox({ 'titleShow': true, 'transitionIn': 'elastic', 'transitionOut': 'elastic' }); }); |
O resultado obtido é visto na figura abaixo:
É claro que existem muitos mais recursos do que eu mostrei aqui; meu objetivo foi apresentar o recurso mostrando como é simples usar os recursos do FancyBox para ir mais longe veja documentação em : FancyBox HOWTO page.
Pegue o projeto completo aqui: UsandoFancyBox.zip
Eu sei é apenas ASP .NET, mas eu gosto...
Referências: