HTML5 Tutorial Como construir uma única página de produto
Este artigo faz parte do nosso "Série de tutoriais HTML5 / CSS3" - dedicado a ajudar a torná-lo um melhor designer e / ou desenvolvedor. Clique aqui para ver mais artigos da mesma série.
Neste post, vamos trabalhar em um projeto fictício, criando uma única página de produto para oferecer o iPhone 4S, e neste projeto também vamos implementar os métodos que discutimos nos posts anteriores; a elemento e o seletor de negação.
Vamos começar.
A marcação HTML5
Primeiro, precisamos criar um html documento com a seguinte marcação:
IPhone da Apple 4 - 16 GB
O iPhone mais incrível ainda.
O chip A5 dual-core mais veloz. A câmera de 8MP com ótica totalmente nova também grava vídeo HD 1080p. E introduzindo Siri. É o iPhone mais incrível ainda.
características do produto
Câmera de 8 megapixels com gravação de vídeo 1080p
Siri voz assistida
iCloud
Air Print
Tela Retina
Geotagging de foto e vídeo
Usamos várias tags novas da especificação HTML5, como o cabeçalho, hgroup, figura, seção, e um que já discutimos antes; a detalhes e resumo tag.
No entanto, não vamos nos aprofundar nessas tags, não porque não estamos dispostos a isso, mas sim esses são tópicos básicos que você pode encontrar facilmente em outros lugares. Então, se você é realmente novo no HTML5, eu recomendo que você leia as seguintes referências dessas tags; eles os explicaram de forma abrangente:
Vamos falar sobre a semântica
O elemento de cabeçalho HTML5
O elemento hgroup
Referência de tag HTML5
Agora vamos ver a primeira aparição da nossa página.
Bem, parece sensato sem qualquer estilo. No topo há o cabeçalho, e depois vem a seção para a imagem, descrição e por fim o botão "Comprar agora". Agora, vamos animar esta página.
Os estilos
Começaremos normalizando todos os estilos padrão usando essa folha de estilo e adicionando um fundo gradiente ao html tag.
Lembre-se de que nossos elementos de produto são todos envolvidos dentro de um div com a classe de produto. Então, aqui gostaríamos de centralizar o wrapper e definir a largura para ser sobre 650 px.
Como de costume, o IE (Internet Explorer) sempre causa alguns problemas; se você abrir isso em qualquer IE menor que 9, a página permanecerá sem estilo.
Isso ocorre porque o Internet Explorer não reconhece os novos elementos (seção, cabeçalho, etc.) para que os estilos que especificamos não sejam aplicados. Assim, no próximo passo, vamos trabalhar na resolução deste problema.
Testando o Suporte do Navegador
Em nosso post anterior, abordamos o suporte ao navegador para o elemento details usando esse polyfill; para que funcionasse nos navegadores não suportados. No entanto, desta vez vamos tentar diferentes maneiras de fazê-lo com Modernizr.
Do seu site oficial, "Modernizr é uma biblioteca JavaScript de código aberto que ajuda você a construir a próxima geração de HTML5 e CSS3-sites com tecnologia". Tecnicamente, o Modernizr testará o suporte ao navegador para certos elementos e recursos novos. Se o suporte não for fornecido, devemos fornecer uma alternativa, seja dando estilos diferentes ou fornecendo polyfills. Neste caso, usaremos o Modernizr para nos ajudar a testar os detalhes e o elemento de resumo.
Vá para Modernizr e vá para sua página de download.
Na página de download, Modernizr fornece algumas opções para configurar a biblioteca, então você só tem que selecionar certos recursos que você realmente precisa para o seu site. Neste caso, precisamos:
HTML5Shiv 3.4
Adicionar classes CSS, esse recurso inserirá automaticamente as classes na tag html.
a Modernizr.load,
vá para a caixa de complementos da comunidade e selecione detalhes-elem,
Na seção Extensibilidade, selecione Modernizr.addTest.
Gere e baixe o arquivo.
Vincule-o ao seu html e recarregue a página no Internet Explorer. Agora, a página deve ter sido estilizada, já que o Internet Explorer agora pode reconhecer as tags.
E, se você visualizar a fonte ou inspecionar o elemento, verá que a classe sem detalhes foi inserida na tag html; indicando que o navegador onde estamos visualizando a página; atualmente não está suportando o elemento de detalhes. @@@@ [Não consigo entender esta frase. ]
Podemos, então, criar um fallback usando essa classe como o gancho, o que faremos na próxima etapa.
O retorno
Nesta etapa, forneceremos semelhante detalhes funcionalidade de elemento para outros navegadores (excluindo o Chrome). Na postagem anterior, essa etapa foi feita automaticamente usando esse script, mas desta vez vamos criá-lo por conta própria.
Nota: Apenas revendo um pouco do nosso post anterior; Atualmente, o elemento de detalhes é suportado apenas no navegador Google Chrome.
Então, vamos começar a trabalhar no CSS primeiro.
Na tag de resumo, alteramos o modo de cursor para ponteiro, para que o usuário perceba que é clicável.
resumo cursor: ponteiro; tamanho da fonte: 12pt; esboço: 0;
Para dar mais espaços na parte superior e inferior do elemento de detalhes com uma margem.
detalhes margin: 20px 0px;
Por padrão, a tag de resumo terá uma seta. Mas aqui gostaríamos de substituí-lo por um ícone de mais-menos.
Nota: Antes de prosseguir, eu anteriormente baixei os ícones desta coleção da Fugue, baixei e os espiei em um arquivo.
Vamos adicionar um pseudoelemento anterior e anexar o ícone como plano de fundo. Observe que, neste momento, a posição de fundo está no topo, o que mostrará o ícone mais.
detalhes> summary: before width: 16px; altura: 16px; display: bloco inline; conteúdo: "! importante; plano de fundo: url ('… /https://assets.hongkiat.com/uploads/html5-single-product-page/plus-min.png') sem repetição do início; margem direita: 5px; position: relative; top: 2px;
Então, quando o elemento de detalhes estiver aberto, a posição do plano de fundo será movida para a parte inferior, mostrando o ícone de menos.
detalhes [open]> resumo: antes, detalhes.open> resumo: antes background: url ('… /https://assets.hongkiat.com/uploads/html5-single-product-page/plus-min.png' ) não-repete centro inferior;
o [abrir] sinal é um seletor. Nesse caso, ele selecionará o atributo open details no navegador de suporte.
Por fim, devemos ocultar a seta que, por padrão, é mostrada no Chrome.
Então, vamos ver o resultado em um navegador por um tempo.
A seta padrão agora foi substituída pelo nosso ícone e, se você a vir no Chrome, você já terá um efeito de alternância ao clicar nele; o ícone mudará de acordo. Mas, em outros navegadores, nada vai acontecer ainda. Então, no próximo passo vamos tentar replicar o efeito com jQuery.
O efeito de alternância com jQuery
Antes de começarmos com a parte do jQuery, eu gostaria de agradecer a Ian Devlin pela inspiração, o script abaixo é na verdade uma pequena modificação de sua.
Tudo bem, vamos criar uma variável para armazenar a tag de resumo.
var summary = $ ('resumo dos detalhes');
Então nós envolvemos todos os elementos irmãos do resumo com um div.
summary.siblings (). wrapAll ('');
E esconder essa div quando o elemento de detalhes não tiver a classe aberta.
$ ('detalhes: não (.open) resumo'). siblings ('div'). hide ();
Quando o resumo é clicado, queremos que o div oculto seja mostrado, e o oposto, quando o div estiver inicialmente aberto, ele estaria oculto.
Para se certificar de que essas funções serão executadas apenas nos navegadores não suportados, nós os colocamos dentro desta declaração condicional.
if ($ ('html'). hasClass ('no-details')) // o código vai aqui
E abaixo está o código que temos:
if ($ ('html'). hasClass ('não-detalhes')) var summary = $ ('resumo dos detalhes'); summary.siblings (). wrapAll (''); $ ('detalhes: não (.open) resumo'). siblings ('div'). hide (); summary.click (function () $ (this) .siblings ('div'). toggle (); $ ('detalhes'). toggleClass ('open'););
Agora vamos testá-lo no navegador; o efeito de alternância já deveria ter funcionado em todos os navegadores, eu pessoalmente verifiquei (até o Internet Explorer 7).
Demonstração
Fonte de download
Dicas: Alternativamente, você pode mudar o .alternancia() com .slideToggle () para criar um efeito de slide. Além disso, se você deseja que os detalhes sejam abertos inicialmente, você pode adicionar uma classe aberta no elemento details.
Conclusão
Passamos por todas as etapas da criação de uma única página de produto usando HTML5, depuração para navegadores não compatíveis e também para replicar o efeito de alternância para o elemento de detalhe por nossa conta. Assim, esperamos que você possa aprender muito com isso.
No entanto, estou ciente de que não expliquei tudo detalhadamente neste post, portanto, se você quiser esclarecer alguma coisa, sinta-se à vontade para postar a pergunta na caixa de comentários abaixo.