Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema tabella

  1. #1

    Problema tabella

    Salve a tutti!

    ho creato una normale tabella in html ecco il codice:

    codice:
    <table width='500'><tr><td width='500'>Prova</td></tr></table>
    Il problema che mi sta tormentando è che se nello spazio dove potete vedere la parola "Prova" scrivo una parola incredibilmente lunga senza spazi, la tabella perde la sua formattazione di partenza con width='500' ampliandosi di una grandezza che dipende dalla lunghezza della parola. La mia domanda è se è possibile andare a capo, quando la parola raggiunga il width='500' della tabella.
    Grazie mille per le eventuali risposte!

  2. #2
    In automatico non so, manualmente con

  3. #3
    Grazie mille... in automatico penso userò una funzione php.

  4. #4
    Hai provai a dare uno stile magari ai td i alle tr?

  5. #5
    Originariamente inviato da Vittorio84
    Grazie mille... in automatico penso userò una funzione php.
    Giusto! non vedo altra soluzione

  6. #6
    Allora, vediamo di fare un po' di teoria:

    Una Table ha di default il comportamento che tu già conosci, ovvero quello di determinare la larghezza delle proprie colonne in modo dinamico, cercando di rispettare le impostazioni richieste (larghezza della tabella, larghezza delle colonne, eccetera) ma adattandole comunque al contenuto. Se come nel tuo caso non ci sono spazi per poter andare a capo, la larghezza della colonna si amplierà a dismisura, oltre la larghezza impostata.

    Per fortuna è possibile modificare questo comportamento con lo stile

    codice:
    table-layout: fixed;
    In questo modo otteniamo il rispetto delle dimensioni volute. Quindi utilizzeremo sia per la tabella che per la colonna lo stile

    codice:
    width: 100px;
    se vogliamo una larghezza di 100 pixel.

    Attenzione però che nel caso di più colonne non tutti i browser interpretano la nostra richiesta nello stesso modo. In particolare, in Internet Explorer, l'impostazione della larghezza delle colonne prevale sull'impostazione della larghezza della tabella. Ad esempio, tre colonne (da 100 px) producono una tabella da 300 px. Altri browser fanno prevalere la larghezza della tabella, ma necessariamente forzano la larghezza delle colonne ad essere minore di quella da noi impostata.

    La soluzione è semplice: se in effetti è la larghezza della tabella che vogliamo preservare, basta impostare le colonne col seguente stile

    codice:
    max-width: 100px;
    In questo modo anche Internet explorer manterrà una larghezza di tabella di 100px e ridurrà se necessario la larghezza delle colonne, che comunque non potranno superare i 100 pixel di larghezza.

    Inoltre, per evitare che il contenuto della cella "straripi" oltre la cella stessa, è importante aggiungere alle colonne lo stile:

    codice:
    overflow: hidden;
    Qui di seguito l'esempio completo, dove ho messo tre tabelle per verificare il comportamento nel caso di più colonne.

    codice:
    <!DOCTYPE HTML PUBLIC
                      "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    
        <head>
            <title>Prova colonne a dimensione fissa</title>
            <style type="text/css">
                .tbl {
                    table-layout: fixed;
                    border: 1px solid black;
                    border-collapse: collapse;
                    background: #e6e6e6;
                    width: 100px;
                 }
    
                .tbl td {
                    border: 1px solid black;
                    overflow: hidden;
                    max-width: 100px;
                }
            </style>
        </head>
    
        <body>
            <table class="tbl">
                <tr>
                    <td>testolunghissimissimissimissimissimissimissimissimissimissimo!</td>
                </tr>
            </table>
    
            
    
    
            <table class="tbl">
                <tr>
                    <td>testolunghissimissimissimissimissimissimissimissimissimissimo!</td>
                    <td>case</td>
                </tr>
            </table>
    
            
    
    
            <table class="tbl">
                <tr>
                    <td>testolunghissimissimissimissimissimissimissimissimissimissimo!</td>
                    <td>case</td>
                    <td>palazzi</td>
                </tr>
            </table>
        </body>
    </html>
    Ultima cosa da aggiungere: sarebbe opportuno incorporare il testo all'interno di uno span in cui impostare la proprietà "title" al medesimo testo. In questo modo il passaggio del mouse sopra la cella contenente il testo (troncato per mancanza di spazio) mostrerebbe un tooltip col contenuto completo del testo.

  7. #7
    @Nick60
    Certo il tuo ragionamento è giusto, ma io trovo la soluzione di trocare la stringa e mandarla a capo ai 300 caratteri, con una funzione JS o PHP più semplice, sbrigativa e funzionale, inoltre un tooltip che mostra il resto del contenuto lo trovo veramente scomodo, trovo estremamente meglio il testo a capo

  8. #8
    @carlomarangoni: ed io convengo col tuo ragionamento, ma anche qui come spesso accade, dipende dal contesto.
    Se ho un hyperlink molto lungo, ha poco senso andare a capo.
    Ovvio che troncare un URL lo rende inutilizzabile, quindi il fatto di averlo inserito nella proprietà "title" aiuta anche in questo.
    se invece è essenziale mostrare tutto il contenuto, non rimane altra strada e anch'io opterei per la funzione.
    Mi sembrava comunque utile spiegare che è possibile "bloccare" la larghezza di una cella, anche se la domanda chiedeva chiaramente di poter andare a capo, quindi diciamo che la mia risposta è stata un po' "accademica", magari comunque utile in situazioni simili.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.