Escrevo neste blog, códigos e teorias de programação que desenvolvo e são úteis para mim.
Pelo mesmo, espero que seja útil para você. Todo conteúdo aqui é público e gratuito.
Neste artigo vou explicar como você pode fazer um tutorial ou um passo a passo dividido entre etapas dentro do seu site. É muito útil
quando seu site trata com clientes e você precisa que seu cliente entenda bem as funções do seu sistema, e para isso, você gostaria de criar
um passo a passo bem simples e poderoso na interface do seu sistema, explicando o que cada funcionalidade faz.
Vamos fazer isso utilizando um pouco de CSS juntamente com jQuery e Bootstrap.
Eu desenvolvi essa função especificamente para o meu sistema que estou desenvolvendo no momento, e ficou muito sutil e bem simpático, e o melhor
de tudo é que você pode personalizar este "tutorial" da maneira que você quiser, é muito versátil!
Veja o exemplo
Como sempre, eu tenho um exemplo abaixo. Ao clicar no botão, você iniciará um tutorial por dentro dessa tela que estou utilizando como exemplo
para ver como ficará nosso tutorial no final do artigo.
Este template eu baixei no site Start Bootstrap e você pode fazer o download deste
template e muitos outros neste link. É gratuito.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
This product was great in terms of quality. I would definitely buy another!
Anonymous
12 days ago
I've alredy ordered another one!
Anonymous
15 days ago
I've seen some better than this, but not at this price. I definitely recommend this item.
Gostou? Bem simpático, não?
Para fazermos esse pequeno tutorial será necessário apenas algumas funções em javascript e o css você pode montar maneira que quiser!
A lógica para montarmos esse tutorial está em como utilizar o z-index de cada elemento. O z-index manipula o quão "colado"
está o elemento do resto do html, muito utilizado (indispensável?) para fazer as famosas modal que existem por aí.
Precisamos colocar uma div vazia, de preferencia após o inicio do body, que terá a classe que chamei de tutorial.
Esta classe cobre toda a tela com um fundo preto opaco, que terá o z-index 9990, ou seja, ele ficará a frente de todos os elementos do html, inclusive
do próprio body. Outros dois elementos que vamos manipular, terão a classe tutorial-destaque e tutorial-apresentacao,
que respectivamente são os elementos que ficarão destacados na tela e o texto que será encarregado de guiar o usuário pela interface do sistema.
Geralmente eu coloco o código-fonte do html que utilizei como exemplo, mas neste caso, não vou colocá-lo neste artigo para não ficar uma página
gigante de código aqui, você pode baixar o template completo utilizado
clicando aqui.
No template, a única alteração a se fazer é definir a div após tag body ser aberta:
Feito isso, se você exibir a div, verá que toda a página ficou escura. A partir de agora, qualquer elemento que estiver com a classe
tutorial-destaque e tutorial-apresentacao ficará acima desta camada. É claro que, para isso, precisamos tomar alguns cuidados para que
o usuário não clique onde não deva e seja desviado pra outro menu dentro da mesma página e o css se embaralhe todo. Para isso, vamos agora
para a parte do javascript onde vamos manipular alguns botões e suas funcionalidades:
$(document).ready(function(){
// é o contador de etapas do tutorial
var tutorialContador = 0;
// esta é a função que cria a apresentação do tutorial
function criaApresentacao(titulo, texto, botao){
var html = "";
html += '<div class="row tutorial-apresentacao">';
html += '<div class="col-md-12">';
html += '<a href="#" class="close"><i class="fa fa-close" id="btnSairTutorial"></i></a>';
html += '<span style="opacity: 0.6">Etapa '+(tutorialContador+1)+' de 4</span>';
html += '<h3 style="margin-top:5px;">'+titulo+'</h3>';
html += '<p>'+texto+'</p>';
html += '</div>';
if(botao){
html += '<div class="col-md-12 text-right">';
html += '<a href="#" class="btn btn-default btn-tutorial" style="text-shadow: none;">Prosseguir <i class="fa fa-arrow-right"></i></a>';
html += '</div>';
}
html += '</div>';
return html;
}
// sempre que o usuário avançar, será verificado em qual etapa ele está para ser apresentado um novo texto
function avancaTutorial(){
// reseta todos os elementos
$(".tutorial-apresentacao").remove();
$(".tutorial-destaque").removeClass("tutorial-destaque");
// desabilita todos os botões para o usuário não desviar do percurso
$(".btn").attr("disabled", true);
var titulo = "";
var texto = "";
var html = "";
// verifica qual etapa do tutorial o usuario está para ser apresentado um novo texto
switch(tutorialContador){
case 0:
titulo = "Menu lateral";
texto = "Este é o menu rápido. Aqui você pode navegar entre as páginas do site.";
html = criaApresentacao(titulo, texto, true);
$("#divMenuLateral").addClass("tutorial-destaque");
$("#divMenuLateral").before(html);
$(".tutorial-apresentacao").hide().fadeIn(1200);
animarRolagem(".tutorial-apresentacao", 2000);
break;
case 1:
titulo = "Produto escolhido";
texto = "Esta são as informações do produto que você escolheu.";
html = criaApresentacao(titulo, texto, true);
$("#divProduto").addClass("tutorial-destaque");
$("#divProduto").before(html);
$(".tutorial-apresentacao").hide().fadeIn(1000);
animarRolagem(".tutorial-apresentacao", 1000);
break;
case 2:
titulo = "Veja mais produtos";
texto = "Clique neste botão para ver mais produto do sites.";
html = criaApresentacao(titulo, texto);
$("#btnProdutos").addClass("btn-tutorial");
$("#divBotaoVerMais").addClass("tutorial-destaque");
$("#divBotaoVerMais").before(html);
$("#btnProdutos").removeAttr("disabled");
$(".tutorial-apresentacao").hide().fadeIn(1000);
animarRolagem(".tutorial-apresentacao", 1000);
break;
case 3:
titulo = "Parabéns, você concluiu o tutorial!";
texto = "Sempre que quiser voltar no tutorial, basta clicar no botão Começar Tutorial! no início do artigo.";
html = criaApresentacao(titulo, texto, true);
$("#btnProdutos").removeClass("btn-tutorial");
$("#divInicioDoArquivo").hide();
$("#divInicioDoArquivo").before(html);
$(".tutorial-apresentacao").hide().fadeIn(1000);
animarRolagem(".tutorial-apresentacao", 2000);
break;
case 4:
finalizaTutorial();
$("#divInicioDoArquivo").show();
break;
default:
finalizaTutorial();
}
}
// hora de finalizar o tutorial
function finalizaTutorial(){
$(".tutorial").removeClass("tutorial");
$(".tutorial-destaque").removeClass("tutorial-destaque");
$(".tutorial-apresentacao").remove();
$(".btn").removeAttr("disabled");
tutorialContador = 0;
}
// prepara e inicia os elemenos do tutorial
function iniciaTutorial(){
$(".tutorial").show();
tutorialContador = 0;
avancaTutorial();
tutorialContador++;
}
// avança o tutorial sempre que clicar em botões com a classe .btn-tutorial
$(document).on('click', '.btn-tutorial', function(e){
avancaTutorial();
tutorialContador++;
});
// rola a página para onde está sendo focando o texto de apresentação
function animarRolagem(div, tempo){
$('html, body').animate({
scrollTop: $(div).offset().top
}, tempo);
}
// se o usuário clicar em sair no meio do tutorial
$(document).on('click', '#btnSairTutorial', function(e){
e.preventDefault();
finalizaTutorial();
});
// daqui a diante você pode configurar seu botão para iniciar o tutorial...
});
Este código pode ser organizado da forma que você achar melhor. A lógica utilizada aqui é bem simples: sempre que clicamos em algum elemento
que contenha a classe btn-tutorial, o nosso tutorial avança e incrementa a variável global tutorialContador
que utilizamos para saber em qual etapa o usuário está.
Para posicionar a apresentação do tutorial em relação ao item que está em destaque, precisamos colocar alguns ids nas divs que serão apresentadas
para o usuário, assim, a cada etapa o switch executa um comando específico daquele case.
Uma vez que a classe tutorial está habilitada, nenhum botão funcionará devido ao z-index ser mais baixo, contudo, possa ser interessante desativar
todos os botões da tela, pois caso você esteja apresentando algum painel com vários botões e funcionalidades onde o z-index é 9999, eles vão
continuar funcionando normalmente. Desabilitar todos os botões farão com que os mesmo não intefiram no tutorial, depois é só reativá-los.
Este mecanismo é maravilhoso! Você pode adicionar vários botões, focar os elementos que você preferir, travar e destravar itens que o usuário
pode interagir e criar um passo a passo da forma que você quiser sem nenhum problema.
O que você achou deste artigo? Pude lhe ajudar de alguma forma? Caso sim, curta minha página no
Facebook
e seja sempre notificado de novos artigos,
e se possível, deixe seu comentário na caixa abaixo, você não precisa se registrar! Obrigado.
Este artigo lhe ajudou? Você pode retribuir o favor curtindo minha página no Facebook: