Usei o Github Copoilot para gerar um componente stepper usando CSS e ele teve um bom começo, mas eu gostaria de mudanças adicionais no CSS. Como sou relativamente novo em CSS, tenho alguns problemas para implementar o seguinte:
- Use ícones em vez disso (por exemplo,
fa-check-circle
para etapas concluídas efa-circle
para etapas atuais e futuras - O componente stepper deve se esticar para se ajustar ao seu contêiner pai e não ter comprimento de linha fixo
- As etapas concluídas (ícone e linha) devem estar em verde e as etapas atuais e seguintes em cinza
Como posso implementar o acima com pequenas alterações no CSS?
.container {
width: 100%;
z-index: -1;
}
.progressbar li {
list-style-type: none;
width: 10%;
float: left;
font-size: 12px;
position: relative;
text-align: center;
color: #666666;
}
.progressbar li:after {
width: 100%;
height: 2px;
content: '';
position: absolute;
background-color: #666666;
top: 15px;
left: -50%;
display: block;
z-index: -999999;
}
.progressbar li:before {
width: 30px;
height: 30px;
content: '';
line-height: 30px;
border: 2px solid #666666;
display: block;
text-align: center;
margin: 0 auto 10px auto;
border-radius: 50%;
background-color: white;
z-index: 999999;
}
.progressbar li:first-child:after {
content: none;
}
.progressbar li.active {
color: green;
}
.progressbar li.active:before {
color: green;
border-color: green;
}
.progressbar li.active+li:after {
background-color: #808080;
}
<div class="container">
<ul class="progressbar">
<li>Step 1</li>
<li class="active">Step 2</li>
<li>Step 3</li>
<li>Step 4</li>
<li>Step 5</li>
</ul>
</div>
Modifiquei meu stepper original com alterações mínimas de CSS para atender aos novos requisitos. Em vez de depender de círculos gerados por CSS com pseudoelementos, agora incluo ícones FontAwesome diretamente no HTML. Para etapas concluídas, uso o ícone fa-check-circle e, para as etapas atuais e futuras, uso fa-circle.
Para fazer o componente esticar para caber em seu contêiner, troquei o layout de floats para Flexbox. Essa mudança garante que cada passo seja distribuído uniformemente, e as linhas de conexão (ainda implementadas como pseudoelementos) ajustam seu comprimento automaticamente sem serem fixas.
Também atualizei o estilo de cores para que qualquer etapa marcada como concluída (por meio de uma classe dedicada) exiba o ícone e sua linha de conexão em verde, enquanto as etapas atuais e futuras permanecem em cinza.
Essa abordagem me permitiu manter a maior parte da minha estrutura original e, ao mesmo tempo, integrar perfeitamente os novos recursos.