Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    10

    problema: ricavare le dimensioni di una cella, e usarle per ridimensionare immagini.

    salve, premetto di essere un niubbo completo di JS: ho letteralmente iniziato ieri, anche se avendo esperienza di programmazione e scripting almeno qualcosa ci capisco.

    vi spiego qual è il mio problema: ho una tabella con all'interno un'immagine, e vorrei che questa prendesse le dimensioni della cella in cui è contenuta, che sarebbe equivalente a metà tabella. dato che voglio un layout completamente fluido, l'unica è lavorare con le percentuali: in questa maniera, avevo raggiunto esattamente il risultato desiderato in CSS, solo che non era cross-browser. sotto IE6, infatti le dimensioni venivano applicate in maniera sbagliata, quindi mi è stato detto che per farlo funzionare anche sotto quella ciofeca l'unica è il javascript...

    dopo un po' di ricerche ho trovato uno script già pronto, ma solo per ridimensionare un'immagine in maniera fissa, quindi ho cercato di adattarlo alle mie esigenze:

    codice:
    <head>
    
    ...
    
    <script type="text/javascript>
      function resize(which, cont) {
      var elem = document.getElementById(which);
      var csize = document.getElementById(cont);
      var dwidth = csize.width/2;
      if (elem == undefined || elem == null) return false;
      var max = elem.width;
      if (elem.width > dwidth) elem.width = dwidth;
      else elem.width = max;
    }
    </script>
    
    </head>
    
    <body>
    
    ...
    
    [img]..\immagini\immagine.jpg[/img]
    
    ...
    
    </body>
    ricapitolando, l'onload dovrebbe passare alla funzione l'ID dell'immagine e del contenitore; visto però che le celle, usando i valori percentuali, non vogliono saperne di mantenere una dimensione fissa, ho dovuto passargli come parametro la tabella stessa e dividerne la larghezza per due, in modo da ottenere la dimensione desiderata, solo che... non funziona niente qualcuno sarebbe così gentile da dirmi, con tanta pazienza, dove ho sbagliato e come? o ancora se esiste un modo migliore di ricavare la dimensione desiderata? vi ringrazio anticipatamente per la risposta!

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    puoi rilevare la larghezza in px del td con offsetWidth
    credo il problema sia li': mentre puoi ottenere il width di un' immagine anche se non e' specificata nel markup non puoi farlo con altri elementi
    devi valutare quanto spazio occupano
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    10
    grazie per la risposta. allora, mi pare una buona idea, solo che qua sorgerebbero due problemi: il primo è che così facendo non avrei del codice entro le specifiche del W3C, ed uno dei requisiti è che il sito sia valido in HTML strict/css; il secondo è che avendo impostato la larghezza del td in percentuale, questa non rimane impostata sulla larghezza massima, a patto di non fare il classico hack della gif 1x1... la quale verrebbe interpretata in maniera diversa da quella schifezza di IE6, presumo. forse dovrei reiterare dicendo che mi occorre una soluzione valida e interamente cross-browser, il che mi riporta al punto di partenza :master:

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non mi e' chiaro come usare offsetWidth nello script invece di width aggiunga il problema della percentuale o invalidi il codice
    se il problema l' avevi comunque anche prima e' un altro discorso

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    10
    allora... ho provato a modificare il codice usando quella funzione, ma non ci sono riuscito. il nuovo codice è:

    codice:
    <head>
    
    ...
    
    <script type="text/javascript>
      function resize(which, cont) {
      var elem = document.getElementById(which);
      var csize = document.getElementById(cont);
      var dwidth = csize.offsetWidth/2;
      if (elem == undefined || elem == null) return false;
      var max = elem.width;
      if (elem.width > dwidth) elem.width = dwidth;
      else elem.width = max;
    }
    </script>
    
    </head>
    
    <body>
    
    ...
    
    [img]..\immagini\immagine.jpg[/img]
    
    ...
    
    </body>
    oltre a quello, dreamweaver mi da un errore: "il tag "img"" non ha un attributo "onload"nelle versioni attualmente attive. [XHTML 1.0 Transitional]". questa è senz'altro la ragione per cui non sta funzionando assolutamente nulla... devo per caso dichiarare onload da qualche parte? scusate, ma mi è ancora poco chiaro come funzioni il JS

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.