I'm trying to make my neocities using a premade flexbox layout for the first time.
In mobile devices, the boxes are slightly aligned to left, making the browser to zoom in to center the content somehow.
What could I be doing wrong in the CSS or html?
I am using ChatGPT to write and adapt the layout for me, e.g. write a tile background for me. change some inline html styling to CSS, organize my code with comments, make my music player work as a fixed footer, align some text, make the actual footer to be transparent while its text has a dark transparent background covering the textbox, write a JavaScript for an animated "under construction" text, organize all the stuff in my CSS, and so on and so on.
I've been doing this by copy/pasting my index.html and style.css code and asking for it to analyze the codes.
the layout is almost the way I want it, but, somehow, in mobile screens, the Flexbox layout is ALWAYS slightly aligned to left. the browser makes a tiny zoom in so it can fix it somehow, I think.
O've tried a lot of suggestions from ChatGPT, and all of them made my flexboxes do be drastically re-dimensioned, such in desktop as in mobile views.
I've come to a point where ChatGPT simply can't solve my problem, I must ask for help while I try to learn about responsiveness and more in-depth CSS syntax and practices.
I know, might be ridiculous for some, but my goal is to make a cool place for me to share my work, thoughts and researches. I'm encouraging myself to engage in coding in this process, which is being really good for me as a whole.
what could be wrong in my code?
here are the codes for my index and style, respectively:
function typeWriter(text, i, span) {
if (i < text.length) {
span.innerHTML += text.charAt(i);
i++;
// Move o cursor para o final do texto
span.innerHTML = text.substring(0, i);
// Define o cursor para ficar sempre visível
span.scrollTop = span.scrollHeight;
setTimeout(function() {
typeWriter(text, i, span);
}, 100); // Ajuste o valor 100 para controlar a velocidade da digitação
} else {
// Adiciona o cursor piscando após o texto completo ser digitado
span.innerHTML += "<span id='cursor'>|</span>";
setInterval(function() {
var cursor = document.getElementById('cursor');
cursor.style.visibility = (cursor.style.visibility == 'visible') ? 'hidden' : 'visible';
}, 500); // Ajuste o intervalo de piscagem conforme desejado (por exemplo, 500ms)
}
}
// Chamada da função de animação ao carregar a página
window.onload = function() {
var text = "Site ainda em construção...";
var span = document.getElementById("construction-text");
typeWriter(text, 0, span);
};
html {
/* Set some global colors here for quick re-coloring of stuff! */
--bg-color: rgba(0, 0, 0, 0);
--darker-color: black;
--lighter-color: black;
--accent-color: white;
--sidebar-width: 140px;
background-color: var(--bg-color);
background-image: url(RUBIX%20LAYOUT/stars5.gif); /* add image url for tiled background */
width: 100%;
min-height: 100vh;
position: relative;
}
@font-face {
font-family: 'NeueHaasDisplay-RomanItalic';
src: url('RUBIX%20LAYOUT/FONTS/NeueHaasDisplay-RomanItalic.woff') format('woff');
font-style: italic; /* Defina o estilo da fonte como itálico */
}
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, img, ins, kbd, q, s, samp,
small, strike, sub, sup, tt, var, u, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font-family: 'NeueHaasDisplay-RomanItalic', sans-serif; /* Use a fonte itálica definida ou uma fonte alternativa caso a primeira não esteja disponível */
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
color: var(--darker-color);
background-color: var(--lighter-color);
}
body {
margin: 0%; /* Margem de 2% em todos os lados do corpo do site */
padding: 0; /* Remove o preenchimento padrão do corpo */
background-color: var(--bg-color);
background-image: url(stars5.gif); /* Adiciona a imagem de fundo */
width: 100%; /* Largura do corpo é 96% da largura da tela após subtrair as margens */
min-height: 100vh;
position: relative;
}
ol,
ul {
list-style: none;
list-style-type: square;
}
h1 {
width: calc(100% - 20px);
font-size: 3em;
font-weight: bold;
padding: 25px 10px 10px;
text-align: center; /* Alinhar o cabeçalho ao centro */
}
h1 img {
width: 100%;
max-width: 720px;
}
h2 {
font-size: 2em;
font-weight: bold;
padding: 10px 8px 10px;
}
.boxgallery {
margin: auto;
padding: 15px 30px 15px;
max-width: 100%;
display: flex;
flex-flow: row-reverse wrap-reverse;
justify-content: center;
background-color: var(--bg-color);
}
.box {
display: block;
position: relative;
min-width: 400px;
max-width: 400px;
min-height: 300px;
margin: 5px;
flex-grow: 1;
background-color: var(--accent-color);
background-position: center;
background-size: cover;
border: 4px solid var(--accent-color);
}
.boxHover {
position: absolute;
top: 0;
bottom: 0;
padding: 15px 0px 30px;
width: 100%;
opacity: 0;
transition: opacity 0.6s ease;
display: flex;
flex-flow: column nowrap;
overflow: hidden;
}
.boxHover:hover {
opacity: 1;
background: grey;
background: rgba(0, 0, 0, 0);
transition: opacity 0.6s;
}
.boxHover {
position: relative;
padding: 15px 0px 30px;
width: 100%;
display: flex;
flex-flow: column nowrap;
opacity: 1; /* Alterando a opacidade para 1 para manter o texto sempre visível */
}
/* Adicione esta seção ao seu CSS existente */
.boxHover a {
text-decoration: none; /* Remover o sublinhado */
}
.boxHover h3 {
color: black; /* Definir a cor do texto para preto */
}
.box a, .box p {
color: black; /* Definir a cor do texto para preto */
}
.boxHover h3 {
color: black; /* Definir a cor do texto para preto */
font-size: 20px; /* Definir o tamanho da fonte conforme necessário */
text-align: center; /* Centralizar o texto dentro da box */
}
.box a,
.box p {
display: inline-block;
width: 90%;
margin: auto;
color: black; /* Defina a cor do texto como preto */
font-size: 130%;
opacity: 1; /* Mantendo a opacidade do texto em 1 */
text-decoration: none; /* Remover sublinhado */
}
@media screen and (max-width: 768px) {
.boxgallery {
margin: 0 5vw; /* Adiciona uma margem lateral de 5% à flexbox */
}
.box {
width: 90vw; /* Redimensiona a largura para 90% da largura da viewport */
max-width: none; /* Remove a largura máxima para permitir a flexibilidade */
margin: 2vw auto; /* Centraliza horizontalmente com uma margem de 2% nas laterais */
}
}
p {
padding: 10px 12px 10px;
}
/* Estilos para o footer */
footer {
text-align: center;
padding: 20px 0; /* Aumentando o padding para espaçamento extra */
color: white;
background-color: transparent; /* Fundo transparente para o footer */
}
/* Estilo para o texto H4 */
footer h4 {
margin: 0; /* Removendo a margem padrão */
}
/* Estilo para a linha de contato */
footer .contact-info {
margin: 10px 0; /* Adicionando margem para separação */
}
/* Estilo para os links de rodapé */
footer .footer-links {
display: flex; /* Tornando os links em linha */
justify-content: center; /* Centralizando horizontalmente */
align-items: center; /* Alinhando verticalmente */
}
/* Estilos específicos para os links dentro do footer */
footer .footer-links a {
color: white; /* Cor do texto */
padding: 0 10px; /* Espaçamento interno */
margin: 0 5px; /* Margem entre os links */
text-decoration: underline; /* Sublinhado padrão */
}
/* Estilos específicos para o contêiner do GIF e do link VOLTAR */
.gif-container {
position: relative; /* Define o posicionamento relativo */
}
.gif-container a.voltar {
position: absolute; /* Define o posicionamento absoluto */
bottom: 40%; /* Alinha o link na base do contêiner */
left: 50%; /* Alinha o link no centro horizontal do contêiner */
transform: translate(-50%, 50%); /* Move o link -50% horizontalmente e 50% verticalmente */
font-weight: bold; /* Adiciona negrito ao texto do link */
background-color: transparent; /* Fundo transparente */
}
/* Estilos para o botão dentro do gif-container */
.gif-container .gif-button {
background-color: transparent; /* Fundo transparente */
color: white; /* Cor do texto */
font-weight: bold; /* Adiciona negrito ao texto */
}
/* Fundo preto levemente transparente apenas para texto e links */
footer h4, footer .contact-info, footer .footer-links a:not(.voltar) {
background-color: rgba(0, 0, 0, 0.8);
}
/* Regra de mídia query para todo o footer em dispositivos móveis */
@media screen and (max-width: 768px) {
footer {
padding: 10px; /* Reduz o padding para dispositivos móveis */
}
footer h4 {
font-size: 16px; /* Reduz o tamanho da fonte para dispositivos móveis */
}
footer .contact-info {
font-size: 14px; /* Reduz o tamanho da fonte para dispositivos móveis */
margin-bottom: 10px; /* Adapta a margem inferior para dispositivos móveis */
}
footer .footer-links {
justify-content: center; /* Centraliza os links horizontalmente */
}
footer .footer-links a {
margin: 0 5px; /* Adapta as margens dos links para dispositivos móveis */
}
}
/* Regra de mídia query para a flexbox */
@media screen and (max-width: 768px) {
.boxgallery {
margin: 0 auto; /* Centraliza a flexbox horizontalmente */
}
}
/* Define o segundo cursor como o cursor padrão para o corpo da página */
body {
cursor: url(https://cur.cursors-4u.net/mechanics/mec-4/mec317.cur), auto !important;
}
/* Define o primeiro cursor como o cursor para os links */
a {
cursor: url('https://ani.cursors-4u.net/cursors/cur-11/cur1073.png'), auto !important;
}
/* Outros estilos CSS */
/* Estilos para o container do player do Mixcloud */
#mixcloud-player-container {
position: fixed; /* Define o posicionamento fixo */
bottom: 0; /* Alinha o elemento ao fundo da página */
left: 50%; /* Define o ponto inicial como o centro da página */
transform: translateX(-50%); /* Move o elemento de volta para a esquerda em 50% de sua própria largura */
width: calc(100% - 20px); /* Define a largura com margens para preencher toda a largura da página */
max-width: calc(100% - 40px); /* Define a largura máxima com margens */
background-color: rgba(0, 0, 0, 0); /* Define a cor de fundo do rodapé */
padding: 10px; /* Adiciona espaço interno ao rodapé */
text-align: center; /* Centraliza o conteúdo do rodapé */
z-index: 9999; /* Garante que o rodapé esteja acima de outros elementos */
}
/* Estilos para o player do Mixcloud */
.mixcloud-player {
width: 100%; /* Define a largura para preencher todo o container */
max-width: 100%; /* Define a largura máxima */
}
#construction-text {
color: yellow;
height: 1em; /* Defina uma altura fixa para o elemento durante a animação */
text-align: center;
font-size: 5vw; /* Tamanho da fonte responsivo em relação à largura da tela */
font-weight: bold;
padding: 10px 8px;
white-space: nowrap; /* Impede a quebra de linha */
margin: 0; /* Define as margens para 0 para garantir que não haja espaço adicional */
}
.construction-section {
text-align: center; /* Centraliza o conteúdo horizontalmente */
height: auto; /* Altura fixa para a construction-section */
position: relative; /* Define posição relativa para os elementos filhos */
margin: 0; /* Define as margens para 0 para garantir que não haja espaço adicional */
}
.centered-gif {
max-width: 100%; /* Define a largura máxima da imagem */
position: relative; /* Define a posição relativa */
margin-top: 20px; /* Adiciona um espaço entre o texto e a imagem */
}
@media screen and (min-width: 768px) {
/* Redefine o tamanho máximo da fonte para telas maiores */
#construction-text {
font-size: 2em; /* Define o tamanho máximo da fonte em ems */
margin-bottom: 0; /* Remove a margem inferior para evitar espaçamento desnecessário */
}
/* Adicione outras regras de estilo conforme necessário para ajustar o layout em telas maiores */
}
/* Animação de blinkCursor */
#cursor {
display: inline-block;
vertical-align: middle; /* Alinha verticalmente com o texto */
animation: blinkCursor 0.5s infinite; /* Define a animação de piscar */
}
@keyframes blinkCursor {
0% {
opacity: 1; /* Começa visível */
}
50% {
opacity: 0; /* Fica invisível */
}
100% {
opacity: 1; /* Volta a ficar visível */
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>**GERMANI**</title>
<link href="style.css" rel="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!-- Imagem do cabeçalho/link para a página inicial -->
<h1><a href="RUBIX%20LAYOUT/"><img src="bannerzinho.png" alt="dj Germani"></a></h1><!-- Texto em construção -->
<div class="construction-section">
<h2 id="construction-text"></h2><img src="digitalends.gif" class="centered-gif" alt="digitalends"></div>
<!-- Outros conteúdos da página -->
<div class="boxgallery">
<a href="RUBIX%20LAYOUT/" style="text-decoration: none;">
<div class="box">
<div class="boxHover">
<h3>SOBRE MIM</h3>
</div>
</div></a>
<a href="RUBIX%20LAYOUT/" style="text-decoration: none;">
<div class="box" style="background-image:url(28.gif)">
<div class="boxHover">
<h3>IMAGENS</h3>
</div>
</div></a> <a href="RUBIX%20LAYOUT/" style="text-decoration: none;">
<div class="box" style="background: linear-gradient(white, green);">
<div class="boxHover">
<h3>BLOG/RESEARCH</h3>
</div>
</div></a>
<a href="RUBIX%20LAYOUT/" style="text-decoration: none;">
<div class="box" style="background: red">
<div class="boxHover">
<h3>SOUNDS...</h3>
</div>
</div></a>
<a href="RUBIX%20LAYOUT/" style="text-decoration: none;">
<div class="box">
<div class="boxHover">
<h3>PORTFOLIO</h3>
</div>
</div></a>
</div> <!-- /BOXGALLERY -->
<!-- EMBED DO MIXCLOUD -->
<!-- Player do Mixcloud como elemento fixo no rodapé -->
<div id="mixcloud-player-container">
<!-- Código de incorporação do Mixcloud usando uma div -->
<div class="mixcloud-player">
<iframe width="100%" height="60" src="Fescuta-me-por-favor%2F" frameborder="0"></iframe>
</div>
</div>
<!-- Rodapé -->
<footer>
<h4>"Germani é, sobretudo, um DJ com sensibilidade, com o ouvido atento para interagir com o imaginário do pop e as surpresas de uma pista de dança."</h4>
<h3 class="contact-info">Contato: [email protected]</h3>
<div class="footer-links">
<!-- LINKS DE RODAPÉ -->
<b><a href="germaniusleviosa_/">INSTAGRAM</a></b>
<div class="gif-container">
<a href="#" class="voltar">voltar</a>
<a href="RUBIX%20LAYOUT/"><img class="gif-button" src="i-25794.gif" alt="gif"></a>
</div>
<b><a href="germani-souza/">MIXCLOUD</a></b>
</div>
<br><br><br>
</footer>