Design de aplicativo móvel / Navegação de desenvolvimento de desenvolvimento com jQuery
Os smartphones agora estão equipados com alguns navegadores da web muito eficientes. O JavaScript é mais poderoso do que nunca e pode ser estendido com a ajuda de bibliotecas de código como o jQuery. Quando você adiciona as especificações mais recentes de HTML5 / CSS3, é possível criar aplicativos da Web para dispositivos móveis muito ágeis com algum código de frontend básico.
Neste tutorial, mostrarei como você pode criar um website / webapp baseado em dispositivos móveis. Usaremos as consultas de mídia CSS3 para segmentar dispositivos específicos e resoluções de tela. Mais um pouco de jQuery ajuda a animar o menu e carregar o conteúdo da página externa usando chamadas Ajax. Melhor ainda, o layout pode até ser expandido para ser exibido corretamente em navegadores de desktop comuns, como o Chrome ou o Firefox.
- Demonstração ao vivo
- Código fonte
Definindo a estrutura da página
Vamos começar passando por cima da página HTML primeiro e estilizá-la usando algumas regras CSS. Vou pular a maioria das meta tags incomuns no cabeçalho, pois elas não afetam diretamente o aplicativo da web. No entanto, existem alguns que devo mencionar, nomeadamente a partir do fragmento abaixo:
X-UA-Compatible é usado para descrever como seu documento deve ser renderizado em determinados navegadores. É um cenário interessante ao codificar em HTML5, então eu não me preocuparia muito com isso. No entanto, o meta janela de exibição tag é muito importante. Define a janela do navegador móvel como 100% em vez do efeito de zoom padrão.
Também é possível desativar o zoom do usuário com o valor do conteúdo escalável pelo usuário = não
. Mas neste caso, só queremos definir a largura da tela inteira como a largura do nosso dispositivo. As tags do aplicativo da web da Apple permitirão que o website seja salvo como um ícone da tela inicial no iPhone ou no iPod Touch. Não totalmente necessário, mas certamente vale a pena ter.
Conteúdo Corporal Interno
Dentro da tag body, eu configurei um wrapper div com o ID #W
. Por dentro, quebrei o layout em mais duas divs usando IDs #pagebody
e #navmenu
. A largura total da página é limitada a 640px por opção, para que o layout seja dimensionado para um número restrito.
Links de menu
O menu de navegação recebe um valor de z-index mais baixo #pagebody
está sempre no topo. Isso é crucial, pois o código JavaScript deslizará sobre o corpo da página um certo número de pixels para revelar a navegação abaixo.
Eu usei um símbolo de hash (#) na frente de cada página .html para impedir algum mau comportamento no Mobile Safari. Sempre que você clica em um link, a barra de URL aparece e empurra o conteúdo para baixo. Mas quando se faz referência a um ID, nada é recarregado, exceto através de chamadas JavaScript.
Posicionamento CSS
Não há muito conteúdo confuso dentro do nosso código CSS. A maior parte do posicionamento é feita manualmente e depois manipulada através do jQuery. Mas existem algumas peças interessantes no nosso documento.
/ ** @ core body body ** / #w #pagebody position: relative; esquerda: 0; max-width: 640px; min-width: 320px; índice z: 99999; #w #navmenu fundo: # 475566; altura: 100%; display: bloco; posição: fixa; largura: 300px; esquerda: 0px; top: 0px; z-index: 0;
Este segmento superior define estilos para ambas as seções da página. Nosso menu de navegação tem apenas 300px de largura, então isso deixa um pouco de espaço para o conteúdo da página ainda ser visto. O botão de menu abrir / fechar também está localizado diretamente no lado esquerdo e sempre acessível. A parte importante aqui é o valor da propriedade z-index e usando posição: fixa;
no nosso navmenu.
O cabeçalho da barra de ferramentas superior também é uma seção interessante. Isso é definido para uma posição fixa, então ele irá rolar com o conteúdo da página. Isso replica um efeito semelhante ao encontrado em qualquer barra de título do aplicativo iOS.
/ ** @ cabeçalho de grupo ** / #w #pagebody header # toolbarnav display: block; posição: fixa; esquerda: 0px; top: 0px; índice z: 9999; background: # 0b1851 url ('img / tabbar-solid-bg.png') superior esquerdo sem repetição; raio de fronteira: 5 px; -moz-border-radius: 5px; -webkit-border-radius: 5 px; -o-border-radius: 5px; border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; altura: 44px; largura: 100%; max-width: 640px; #w #pagebody header # toolbarnav h1 text-align: center; top de preenchimento: 10px; preenchimento à direita: 40px; color: # e6e8f2; intensidade da fonte: Negrito; tamanho da fonte: 2.1em; text-shadow: 1px 1px 0px # 313131;
Regras para celular
É fácil perceber que também estou usando uma imagem de plano de fundo para a textura da barra de cabeçalho azul. Isso é dimensionado em 640 × 44 pixels para manter a estrutura de layout consistente. Mas eu também desenvolvi uma imagem @ 2x para telas de retina iPhone / iPad. Você pode ver as duas imagens abaixo ou pegá-las no meu código-fonte de demonstração.
- System/demo/img/[email protected]
- System/demo/img/[email protected]
Eu configurei o CSS móvel para essa funcionalidade em outro arquivo chamado responsive.css. Ele contém duas consultas de mídia que substituem a barra de título bg e o ícone do botão de menu para dispositivos de retina.
/ ** display retina ** / tela @media only e (-webkit-min-device-pixel-ratio: 2), somente tela e (min-moz-device-pixel-ratio: 1.5), somente tela e ( rácio mini- dispositivo-pixel: 1.5) #w #pagebody header background: # 0b1851 url ('img/[email protected] ') superior esquerdo sem repetição; tamanho de fundo: 640px 44px; #w #pagebody header # menu-btn fundo: url ('img/[email protected] ') sem repetição; tamanho de fundo: 53px 30px;
Criando setas de menu
Na área de navegação, incluí também um pequeno ícone de seta para o lado direito de cada link de menu. Isso pode ser facilmente substituído por uma imagem de qualquer arte-final de creative commons. Mas principalmente todos os aficionados do CSS3 vão adorar testar este método.
#w #navmenu ul li a :: após content: "; display: block; width: 6px; altura: 6px; border-right: 3px sólido # d0d0d8; border-top: 3px sólido # d0d0d8; posição: absoluto; direito : 30px; top: 45%; -webkit-transform: girar (45deg); -moz-transform: girar (45deg); -o-transformar: girar (45deg); transformar: girar (45deg); #w #navmenu ul li a: hover :: após border-color: # cad0e6;
Estamos usando o transformar
propriedade para criar uma pequena borda após o conteúdo. Eu também setup posição: absoluta;
para que possamos mover livremente essas bordas em torno do item do link interno. É muito fácil alterar a cor da borda em um estado de foco, o que oferece uma sensação mais dinâmica. É incrível o que você pode realizar usando regras básicas de HTML5 e CSS3.
Mas agora vamos para os pedaços de código JavaScript. Lembre-se de que isso requer uma inclusão na biblioteca jQuery para que meu código seja executado corretamente.
jQuery Animated
Ao escrever esses códigos personalizados, criei um novo documento chamado script.js. Sinta-se à vontade para escrevê-los diretamente >