Boa noite, tudo bem? Gostaria de uma ajuda no meu código com relação a responsividade, no computador ele funciona perfeitamente, porém, em celulares não apresenta um resultado satisfatório, segue abaixo o link do meu Git e do site-teste.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite, tudo bem? Gostaria de uma ajuda no meu código com relação a responsividade, no computador ele funciona perfeitamente, porém, em celulares não apresenta um resultado satisfatório, segue abaixo o link do meu Git e do site-teste.
Oi, Luís! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.
Analisando o seu CSS, percebi que o código está quase todo responsivo. No entanto, notei que em telas menores, parte do texto destacado, especialmente a palavra "qualidade", estava sendo cortada:
Isso acontecia por conta de dois pontos principais:
No seu código:
.titulo-destaque {
width: 0ch;
animation: mark 0.5s step-end infinite, write 6s steps(22, end) infinite;
}
@keyframes write {
20% {
width: 23.6ch;
}
}
ch (largura do caractere "0") para controlar a largura do texto funciona bem em resoluções grandes, mas não é responsivo, já que o texto pode ultrapassar os limites da tela em dispositivos menores.steps(22, end) não correspondia ao total real de caracteres da frase, o que deixava o efeito um pouco truncado.O que podemos alterar para resolver o problema:
.titulo-destaque {
width: 0ch;
max-width: 100%;
animation: mark 0.5s step-end infinite, write 6s steps(40, end) infinite;
}
@keyframes write {
0% { width: 0; }
20% { width: 100%; }
70% { width: 100%; }
85% { width: 0; }
100% { width: 0; }
}
E para telas menores:
@media (max-width: 768px) {
.titulo-destaque {
font-size: 1.2rem;
display: inline-block;
overflow: hidden;
white-space: nowrap;
max-width: 100%;
border-right: 3px solid var(--cor-tercearia);
animation: mark 0.5s step-end infinite, write-sm 6s steps(40, end) infinite;
}
}
@keyframes write-sm {
0% { width: 0; }
20% { width: 100%; }
70% { width: 100%; }
85% { width: 0; }
100% { width: 0; }
}
Após a correção, ficou assim:
Por que essas mudanças funcionam melhor?
width: 100% dentro da animação garante que o texto respeite a largura disponível da tela, tornando o comportamento responsivo.max-width: 100%, display: inline-block, white-space: nowrap e overflow: hidden para manter o efeito de digitação sem quebras de linha nem corte de conteúdo.steps(40, end), o que simula melhor a quantidade de caracteres da sua frase completa.font-size para o título se ajustar visualmente melhor em telas pequenas.Curiosidade: a unidade ch é útil para largura de texto baseada em caracteres, mas pode variar muito dependendo da fonte e da tela. Em animações responsivas, usar width: 100% com as configurações corretas de overflow e white-space costuma ser mais seguro.
Oi, Rafaela, tudo bem? Agradeço ajuda prestada, porém ainda estou com algumas dificuldades com relação ao código, diminuindo a tela do meu computador consigo notar que a responsividade em telas menores realmente esta funcionando, porém, no comprimento total da tela a palavra começou a cortar, CSS:
@import url('https://fonts.googleapis.com/css2?family=Krona+One&family=Montserrat&family=swap');
:root {
--cor-primaria: #181C14;
--cor-secundaria: #ECDFCC;
--cor-tercearia: #697565;
--cor-hover: #3C3D37;
--fonte-krona: "Krona One", sans-serif;
--fonte-montserrat:"Montserrat", sans-serif;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
box-sizing: border-box;
background-color: var(--cor-primaria);
color: var(--cor-secundaria);
}
.header {
padding: 2% 0 0 15% ;
}
.header__menu {
display: flex;
gap: 80px;
}
.header__menu__link {
font-family: var(--fonte-montserrat);
font-size: 1.5rem;
font-weight: 600;
color: var(--cor-tercearia);
text-decoration:none;
position: relative;
}
nav a::after{
content:" ";
width: 0%;
height: 3px;
background-color: var(--cor-tercearia);
position: absolute;
bottom: 0;
left: 0;
transition: 0.5s ease-in-out;
}
nav a:hover::after{
width: 100%;
}
.container {
padding: 10% 15%;
display: flex;
align-items: center;
justify-content: space-between;
gap: 120px;
}
.container__conteudo {
width: 615px;
display: flex;
flex-direction:column;
gap: 40px;
}
.container__conteudo__titulo{
font-size: 2.25rem;
font-family: var(--fonte-krona);
}
.titulo-destaque {
font-size: 2rem;
display: block;
color: var(--cor-tercearia);
border-right: 2px solid var(--cor-tercearia);
white-space: nowrap;
overflow: hidden;
width: 0ch;
max-width: 100%;
animation: mark 0.5s step-end infinite, write 6s steps(40, end) infinite;
}
@keyframes mark {
50% {
border-right-color: transparent;
}
}
@keyframes write {
0% { width: 0; }
20% { width: 100%; }
70% { width: 100%; }
85% { width: 0; }
100% { width: 0; }
}
.container__conteudo__texto{
font-size: 1.5rem;
font-family: var(--fonte-montserrat);
}
.botoes {
margin-top: 1rem;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
gap: 16px;
}
.container__conteudo__titulo__2 {
font-size: 1.5rem;
font-family: var(--fonte-krona);
font-weight: 400;
}
.botao {
display: flex;
justify-content: center;
gap: 16px;
width: 50%;
padding: 1.0rem 1.2rem;
text-decoration: none;
border-radius: 16px;
font-weight:500;
transition: 0.3s;
text-align: center;
border: 2px solid var(--cor-tercearia);
}
.botao:hover {
border: 3px solid var(--cor-tercearia);
cursor:pointer;
}
.linkedin {
color: var(--cor-secundaria);
font-family: var(--fonte-krona);
font-size: 1.5rem;
}
.linkedin:hover {
background-color: var(--cor-hover);
color: var(--cor-tercearia);
padding: 3%;
}
.github {
color: var(--cor-secundaria);
font-family: var(--fonte-krona);
font-size: 1.5rem;
}
.github:hover {
background-color: var(--cor-hover);
color: var(--cor-tercearia);
padding: 3%;
}
.imagem__capa {
width: 35%;
border-radius: 5% ;
}
.footer {
background-color: var(--cor-tercearia);
color: var(--cor-primaria);
padding: 18px;
text-align: center;
font-family: var(--fonte-montserrat);
font-size: 1.5rem;
font-weight: 400;
}
.container__conteudo__texto a{
text-decoration: none;
color: var(--cor-tercearia);
}
.curriculo {
border-radius: 5%;
width: 35%;
}
.estudos {
padding: 2%;
}
.about{
border-radius: 5%;
width: 35%;
}
img {
max-width: 100%;
height: auto;
}
@media (max-width: 1460px) {
.container {
flex-direction: column-reverse;
padding: 5%;
}
.header {
padding: 8%;
}
.header__menu {
justify-content: center;
}
.container__conteudo {
width: 100%;
}
.botao {
width: 80%;
font-size: 1.2rem;
}
}
@media (max-width: 768px) {
.titulo-destaque {
font-size: 1.2rem;
display: inline-block;
overflow: hidden;
white-space: nowrap;
max-width: 100%;
border-right: 3px solid var(--cor-tercearia);
animation: mark 0.5s step-end infinite, write-sm 6s steps(40, end) infinite;
}
}
@keyframes write-sm {
0% { width: 0; }
20% { width: 100%; }
70% { width: 100%; }
85% { width: 0; }
100% { width: 0; }
}