Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583

    Centrare alcune immagini in un div

    Ciao
    Vorrei centrare in un div alcune immagini che hanno dimensioni diverse.
    Il tag img che devo centrare ha l’altezza (height) di 100px pertanto tutte le immagini che saranno caricate avranno l’altezza di 100px e la loro larghezza sarà automaticamente modificata per mantenere le proporzioni.
    Per centrare queste immagini basterebbe un semplice tag <center> ma purtroppo è stato dichiarato obsoleto e allora come si fa?
    Questa è la pagina (solo l’essenziale)

    <!DOCTYPE html>
    <html lang="it">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="imagetoolbar" content="no">
    <style TYPE="text/css">
    .riq {width:800px; height:440px; position:absolute; left:240px; top:100px; z-index:1; border:3px solid;}
    .tbl {width:210px; height:120px; position:absolute; left:275px; top:29px; z-index:1; border:3px solid; background-color:#ffffff;}
    .fgr {height:100px;position:absolute; top:10px; z-index:1;}
    </style>
    </head>
    <body id="Documento">
    <span id="suono"></span>
    <div id="Riquadro" class="riq">
    <div id="Cartellone" class="tbl">
    <img id="Figure" src="media/vuoto.gif" class="fgr" />
    </div>
    </div>

    <script type="text/javascript">
    window.onload=function() {
    document.getElementById("Documento").focus();
    Cambio()
    };
    function Cambio() {
    document.getElementById("Figure").src="gifferme/imm (33).gif";
    var larghezza = document.getElementById("Figure").width;
    var posiz = 105 - larghezza / 2;
    document.getElementById("Figure").style.left = posiz + "px";
    alert(larghezza)
    }
    </script>
    </body> </html>

    Lanciando il gioco con l’editor, l’alert visualizza una larghezza sballata, ma rilanciando il gioco questa larghezza è esatta e l’immagine risulta centrata. Non è così se si lancia il gioco direttamente col browser. Sembrerebbe che il browser non faccia in tempo a modificare la larghezza prima che sia letta.
    Potrei risolvere il problema mettendo la larghezza di ogni immagine (dopo averle modificate) in un array. Ma è un lavoraccio !

    Le immagini e il gioco intero sono a questo indirizzo
    www.giochieducativi.eu/lettereparole.rar

    rudyF

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non lasci il tempo all'immagine di venir caricata prima di rilevare le sue dimensioni.
    Caricala prima in un oggetto img a cui applichi l'evento onload per aspettare il momento giusto, poi fai i tuoi calcoli e sposti l'immagine sulla pagina.

    Fin qui il suggerimento, se hai bisogno di correggere il codice che creerai chiedi
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, credo che il migliore approccio sia l'uso di semplice css. In questo caso, infatti, non vedo la necessità di utilizzare JavaScript per calcolare la posizione dell'immagine.

    Puoi sostituire la relativa riga di css con questa, ed eliminare le operazioni eseguite da script:
    codice:
    .fgr {height:100px; display: block; margin:10px auto;}
    In sostanza:

    margin:10px auto; fa in modo che l'elemento abbia un margine superiore e inferiore di 10px rispetto alle dimensioni dell'elemento che lo contiene, mentre i margini destro e sinistro siano calcolati in modo automatico, cioè lo spazio restante è distribuito allo stesso modo sia a destra, sia a sinistra.

    display: block; fa in modo che l'elemento img, che di default è di tipo inline-block, si comporti invece come un elemento block, per cui l'applicazione dei margini abbia effetto.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Concordo con KillerWorm che in questo caso l'approccio tramite CSS è consigliabile, per rispondere alla tua domanda
    Per centrare queste immagini basterebbe un semplice tag <center> ma purtroppo è stato dichiarato obsoleto e allora come si fa?
    oltre alla soluzione proposta sempre da KillerWorm, valida se all'interno del "box" hai una sola immagine, puoi "sostituire" il tag <center> con
    codice:
    <div align="center"></div>
    http://www.w3schools.com/tags/att_div_align.asp

    oppure tramite l'equivalente CSS
    codice:
    <div style="text-align:center"></div>
    Ovviamente lo stile non deve necessariamente essere dichiarato in-line.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    ciao a tutti

    Grazie per aver risposto. Ho provato tutte e tre le soluzioni e poi ho scelto la più semplice.
    Ho modificato il css
    Funziona benissimo. Grazie ancora.
    rudyF

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.