HTML: Allineamento immagini centrate e senza spazi tra loro

Pubblicità

nicolass

Utente Attivo
Messaggi
142
Reazioni
0
Buongiorno a tutti.
Sto realizzando una pagina web per una modella, sono all'inizio del lavoro e mi sto concentrando sulla disposizione delle immagini all'interno di ogni singola riga. Attualmente la riga è una sola e unica.
In sostanza, le direttive di formattazione per ogni singola riga sono le seguenti:
sugli schermi più piccoli ci devono essere due immagini per riga e le foto possono essere ridotte per adattarsi a questa impaginazione; negli schermi da 800 px in su ci sono 4 immagini per riga e le immagini non devono essere ingrandite in nessun caso ma rimanere a dimensione fissa di 200 x 150.
Tutto bene negli schermi fino a 800 o poco più, mentre per le risoluzioni più alte le foto presentano spazio tra di loro e non riesco a centrarle.
Vorrei che le 4 foto siano sempre centrate al centro dello schermo e non presentino spazio tra loro, e lo spazio in eccesso eventualmente sia distribuito solo nel margine destro e sinistro della pagina web.
Inserisco qui sotto il codice HTML.
Allego screenshot della visualizzazione alla risoluzione di 1280x800.
Allego screenshot della visualizzazione alla risoluzione di 1280x800 che vorrei ottenere.

Ho fatto tantissime prove e provato a centrare il contenitore .row e il .img-thumbnail ma il risultato è sempre il medesimo. Sono certo che per qualcuno di voi sarà un lavoro semplicissimo... qualcuno che mi indichi cosa devo cambiare e il motivo! Grazie

Codice:
<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Titolo title</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <style>
        .container-fluid {
            margin-top: 20px;
            padding: 0;
        }
        .img-thumbnail {
            width: 100%; /* Larghezza massima */
            max-width: 100%; /* Larghezza massima al 100% del contenitore */
            height: auto; /* Altezza automatica per mantenere le proporzioni */
            margin-bottom: 0; /* Rimuove lo spazio inferiore tra le immagini */
            border: none; /* Rimuove il bordo */
            padding: 0; /* Rimuove il padding interno */
            display: block; /* Imposta l'immagine come elemento blocco */
            margin: 0; /* Rimuove eventuali margini */
        }
        .header {
            text-align: center;
            margin-bottom: 20px;
        }
        .description {
            margin-bottom: 20px;
        }
        nav ul {
            list-style-type: none;
            padding: 0;
            display: flex;
            justify-content: center;
            background-color: #f8f9fa;
            margin-bottom: 20px;
        }
        nav ul li {
            margin: 0 15px;
        }
        nav ul li a {
            text-decoration: none;
            color: #007bff;
        }
        .row {
            margin-left: auto;
            margin-right: auto;
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 0; /* Rimuove lo spazio tra le immagini */
        }
        .col-lg-3, .col-md-6 {
            padding-left: 0;
            padding-right: 0;
            margin-bottom: 0;
        }
        @media (max-width: 400px) {
            .col-md-6 {
                flex: 0 0 50%; /* Due immagini per riga */
                max-width: 50%;
            }
            .img-thumbnail {
                width: 100%; /* Ridimensiona le immagini per adattarsi */
                max-width: 100%;
            }
        }
        @media (min-width: 401px) and (max-width: 500px) {
            .col-md-6 {
                flex: 0 0 50%; /* Due immagini per riga */
                max-width: 50%;
            }
            .img-thumbnail {
                width: 100%; /* Ridimensiona le immagini per adattarsi */
                max-width: 100%;
            }
            .row {
                margin-left: 0; /* Rimuove margine sinistro */
                margin-right: 0; /* Rimuove margine destro */
                justify-content: space-between; /* Spazio tra la prima e l'ultima immagine */
            }
        }
        @media (min-width: 501px) and (max-width: 597px) {
            .col-lg-3 {
                flex: 0 0 25%; /* Quattro immagini per riga */
                max-width: 25%;
            }
            .img-thumbnail {
                width: 100%; /* Ridimensiona le immagini per adattarsi */
                max-width: 100%;
            }
        }
        @media (min-width: 598px) and (max-width: 799px) {
            .col-lg-3 {
                flex: 0 0 25%; /* Quattro immagini per riga */
                max-width: 25%;
            }
            .img-thumbnail {
                width: 100%; /* Ridimensiona le immagini per adattarsi */
                max-width: 100%;
            }
        }
        @media (min-width: 800px) {
            .col-lg-3 {
                flex: 0 0 25%; /* Quattro immagini per riga */
                max-width: 25%;
            }
            .img-thumbnail {
                width: 200px; /* Dimensioni fisse */
                height: 150px; /* Dimensioni fisse */
                object-fit: cover; /* Per mantenere le proporzioni */
            }
            .row {
                justify-content: center; /* Centra le immagini */
                gap: 0; /* Rimuove lo spazio tra le immagini */
            }
        }
    </style>
</head>
<body>
    <div class="container-fluid">
        <div class="header">
            <img src="logo.png" alt="Logo del sito" class="img-fluid">
            <h1 class="description">Descrizio titolo H1</h1>
        </div>
        <nav>
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">Galleria</a></li>
                <li><a href="#">Contatti</a></li>
                <li><a href="#">Chi siamo</a></li>
            </ul>
        </nav>
        <div class="row">
            <!-- Loop per generare le miniature delle immagini -->
            <div class="col-lg-3 col-md-6">
                <img src="1.jpg" alt="Modella 1" class="img-thumbnail">
            </div>
            <div class="col-lg-3 col-md-6">
                <img src="2.jpg" alt="Modella 2" class="img-thumbnail">
            </div>
            <div class="col-lg-3 col-md-6">
                <img src="3.jpg" alt="Modella 3" class="img-thumbnail">
            </div>
            <div class="col-lg-3 col-md-6">
                <img src="4.jpg" alt="Modella 4" class="img-thumbnail">
            </div>
            <!-- Ripetere il blocco precedente per tutte le immagini -->
        </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>

1280x800.webp 1280x800_CheVorrei.webp
 
Ultima modifica da un moderatore:
Ciao perché stai usando html semplice? Ha poco senso oramai.. ci sono tecnologie migliori.
Ti direi di fare tutto quello che stai facendo usando bootstrap oppure tailwind
 
Ciao perché stai usando html semplice? Ha poco senso oramai.. ci sono tecnologie migliori.
Ti direi di fare tutto quello che stai facendo usando bootstrap oppure tailwind
Bootstrap è già utilizzato nel codice menzionato!
Detto questo, tu hai una soluzione nel merito della mia richiesta?
 
bootstrap 4 ?? nah, aggiorna, vai di 5.3 e togli anche jQuery così.
Tanto sei all'inizio...
Poi, perchè queste porcherie?
Codice:
@media (min-width: 501px) and (max-width: 597px) {
            .col-lg-3 {
                flex: 0 0 25%; /* Quattro immagini per riga */
                max-width: 25%;
            }
Stai usando un bootstrap, non devi modificare le class col per adattarle..Stai usando il col-lg-3 vuol dire che la colonna occupa 4 slot di 12 della row.
Se vuoi modificare ed avere un sistema responsivo applhi più regole
HTML:
<div class="container">
  <div class="row justify-content-center">
    <div class="col-12 col-lg-3">Di default occupa una riga intera mentre sui dispositivi sopra i 960px occupa un quarto</div>
    <div class="col-12 col-lg-3">Di default occupa una riga intera mentre sui dispositivi sopra i 960px occupa un quarto</div>
    <div class="col-12 col-lg-3">Di default occupa una riga intera mentre sui dispositivi sopra i 960px occupa un quarto</div>
  </div>
</div>

Codice:
### i valori che può assumere
  sm: 540px
  md: 720px
  lg: 960px
  xl: 1140px
  xxl: 1320px
 
sta scrivendo html in versione vecchia, ancora coi mediaquery.
utilizzando bootstrap 5 oppure Tailwind che è meglio di bootstrap ti basta usare robe tipo:

HTML:
<figure class="bg-slate-100 rounded-xl p-8 dark:bg-slate-800">
  <img class="w-24 h-24 rounded-full mx-auto" src="/sarah-dayan.jpg" alt="" width="384" height="512">
  <div class="pt-6 space-y-4">
    <blockquote>
      <p class="text-lg font-medium">
        “Tailwind CSS is the only framework that I've seen scale
        on large teams. It’s easy to customize, adapts to any design,
        and the build size is tiny.”
      </p>
    </blockquote>
    <figcaption class="font-medium>
      <div>
        Sarah Dayan
      </div>
      <div>
        Staff Engineer, Algolia
      </div>
    </figcaption>
  </div>
                       </figure>

per avere ad esempio quadranti con foto e testo
 
sta scrivendo html in versione vecchia, ancora coi mediaquery.
utilizzando bootstrap 5 oppure Tailwind che è meglio di bootstrap ti basta usare robe tipo:

HTML:
<figure class="bg-slate-100 rounded-xl p-8 dark:bg-slate-800">
  <img class="w-24 h-24 rounded-full mx-auto" src="/sarah-dayan.jpg" alt="" width="384" height="512">
  <div class="pt-6 space-y-4">
    <blockquote>
      <p class="text-lg font-medium">
        “Tailwind CSS is the only framework that I've seen scale
        on large teams. It’s easy to customize, adapts to any design,
        and the build size is tiny.”
      </p>
    </blockquote>
    <figcaption class="font-medium>
      <div>
        Sarah Dayan
      </div>
      <div>
        Staff Engineer, Algolia
      </div>
    </figcaption>
  </div>
                       </figure>

per avere ad esempio quadranti con foto e testo
già il bootstrap 4 ti evitava di scrivere i media query, infatti quel lg sta ad indicare una mediaquery riferita a large..
Più che altro avendo così tanti commenti mi pare che sia scritto da un copilot/chatgpt..
 
no chat gpt non restituisce quella porcheria x fortuna,
 
già il bootstrap 4 ti evitava di scrivere i media query, infatti quel lg sta ad indicare una mediaquery riferita a large..
Più che altro avendo così tanti commenti mi pare che sia scritto da un copilot/chatgpt..
ESATTO!
Questa roba l'ho realizzata con chatGPT e con almeno 100 modifiche con prompt via via sempre più dettagliato.
Io realizzavo siti web 20 anni fa e ora è tutto cambiato, per questo mi sono affidato all'IA, ma che a quanto pare scrive porcherie!
Ovviamente mi sono ripromesso di aggiorarmi e rimettermi a studiare ma ho esigenza di realizzare una pagina temporanea e in tempi non compatibili con quello che sono piani di studi e formazione fatte bene.
Chiedo scusa per aver postato questo codice porcheria
In sostanza come posso modificare quel codice porcheria con un codice attuale? Tieni presente, come già detto, che io di HTML5 framework e formattazione responsive, sono assolutamente a digiuno assoluto.
Ti chiederei se potessi riscrivermi il codice, ma penso di chiederti troppo, quindi più puoi aiutarmi,
considerando le direttive di formattazione seguenti per ogni singola riga sono:
- sugli schermi più piccoli ci devono essere due immagini per riga e le foto possono essere ridotte per adattarsi a questa impaginazione; - negli schermi da 800 px in su dovranno esserci 4 immagini per riga e le immagini non devono essere ingrandite in nessun caso ma rimanere a dimensione fissa di 200 x 150.
Ovviamente puoi legittimamente anche non farlo.
Grazie comunque dei consigli e suggerimenti dati.
 
Ultima modifica:
@nicolass perdonami, chiedi a chatgpt questa semplice domanda, mi allinei le foto con tailwind in una griglia di 4 foto alla volta?
Senza usare mediaquery e cazzi e mazzi che è roba di antiquariato.
 
@nicolass perdonami, chiedi a chatgpt questa semplice domanda, mi allinei le foto con tailwind in una griglia di 4 foto alla volta?
Senza usare mediaquery e cazzi e mazzi che è roba di antiquariato.
oltre le tue indicazioni gli metto dentro anche il codice html nel prompt di chatgpt?
quindi premumo mi restituirà un codice tipo quello che mi hai scritto tu sopra tra i tag <figure> .... </figure>, giusto?
E questo lo metto nel body! Bene, ok fin qui.
Ma poi nel css cosa tolgo o cosa metto?
 
No basta che gli dici che vuoi una pagina html5 con tailwind con la gestione di n immagini e come le vuoi gestire
 
xD sgamato in pieno xD
No non usare questi strumenti...
Leggiti le documentazioni, ci vuole meno, oltre ad esser tutto spiegato molto bene
Questa è la documentazione per Bootstrap 5.3
Con l'inglese come sei messo? Spero che tu non sia come qualche altro "programmatore" che non riesce ad anadare oltre al "the cat is on the table"...
 
Pubblicità
Pubblicità
Indietro
Top