Intestazioni di tabella HTML sempre visibili nella parte superiore della finestra quando si visualizza una tabella di grandi dimensioni


169

Vorrei essere in grado di "modificare" la presentazione di una tabella HTML per aggiungere una singola funzionalità: scorrendo la pagina verso il basso in modo che la tabella sia sullo schermo ma le righe di intestazione siano fuori dallo schermo, vorrei che le intestazioni rimanessero visibile nella parte superiore dell'area di visualizzazione.

Ciò sarebbe concettualmente simile alla funzione "Blocca riquadri" in Excel. Tuttavia, una pagina HTML potrebbe contenere diverse tabelle e vorrei solo che accadesse per la tabella attualmente in vista, solo mentre è in vista.

Nota: ho visto una soluzione in cui l'area dei dati della tabella è resa scorrevole mentre le intestazioni non scorrono. Questa non è la soluzione che sto cercando.


la tua pagina è stata progettata usando le tabelle? non è possibile convertirlo prima in div e lasciare solo i dati tabulari per le tabelle?
blocca il

6
di recente ho scritto un plugin che fa questo: programmingdrunk.com/floatThead
mkoryak

1
Oltre alla soluzione più votata e ai relativi derivati ​​di seguito, anche il plugin di @mkoryak sopra è abbastanza buono. Assicurati di dare un'occhiata anche a quello prima di terminare lo "shopping".
DanO,

Grazie dan :) Ho in programma anche alcune funzionalità per il prossimo rilascio
mkoryak

Secondo il plugin floatThead di @mkoryak: sono stato in grado di integrarlo rapidamente. Grazie mille per il plugin!
w5m,

Risposte:


67

Dai un'occhiata a jQuery.floatThead ( demo disponibili ) che è molto interessante, può funzionare anche con DataTables e può persino funzionare all'interno di un overflow: autocontenitore.


sì, funziona con scorrimento orizzontale, scorrimento delle finestre, scorrimento interno e ridimensionamento delle finestre.
mkoryak,

Potresti aggiungere un violino con un codice funzionante? (So ​​che c'è nel sito ...)
Michel Ayres,

12
ho creato un'enorme pagina di demo / documenti. Perché hai bisogno di un violino?
mkoryak,

5
@MustModify stackoverflow non è un buon posto per farmi domande. segnalare un problema su github, anche se è solo una domanda su come farlo funzionare. Di solito risponderò lì in meno di un giorno. Qui probabilmente risponderò in poco meno di un anno :)
mkoryak il

1
@MustModify per quanto vale, nessuna delle classi nelle tabelle negli esempi è rilevante. Il plugin non ha bisogno di alcun css o classe per funzionare, come dicono i miei documenti.
mkoryak,

135

Ho creato una soluzione di prova di concetto usando jQuery .

Vedi campione qui.

Ora ho questo codice in un repository bitbucket di Mercurial . Il file principale è tables.html.

Sono a conoscenza di un problema con questo: se la tabella contiene ancore e se apri l'URL con l'ancora specificata in un browser, quando la pagina viene caricata, la riga con l'ancora verrà probabilmente oscurata dall'intestazione mobile.

Aggiornamento 11-12-2017: Vedo che non funziona con gli attuali Firefox (57) e Chrome (63). Non so quando e perché questo ha smesso di funzionare o come risolverlo. Ma ora, penso che la risposta accettata da Hendy Irawan sia superiore.


Ne avevo bisogno per qualcosa che sto facendo. Un grande aiuto, grazie. Con il mio non stavo usando la finestra in quanto il riquadro di scorrimento era un div all'interno dell'html. Quindi ho dovuto passare floatingHeaderRow.css("top", Math.min(scrollTop - offset.top, $(this).height() - floatingHeaderRow.height()) + "px");a floatingHeaderRow.css("top", scrollTop + "px");come con il codice che avevi l'intestazione della tabella saltava più in basso nella pagina per scomparire alla fine.
Nalum,

1
Sto cercando di implementare questo nella mia tabella. Sto riscontrando un problema con la larghezza dell'intestazione. I dati nelle righe sono valori estratti da un db, in quanto tali sono una lunghezza casuale. Prima di scorrere, le intestazioni hanno la dimensione ereditata automaticamente, ma una volta che si scorre, le intestazioni vengono ridimensionate per avvolgere i nomi delle intestazioni e quindi hanno una larghezza molto più piccola in modo che le intestazioni non seguano effettivamente le rispettive rispettive colonna. Come posso risolvere questo problema?
JonYork,

Hmm non sono sicuro, in base alla tua descrizione. Suggerisco 1) se possibile, mostra un esempio online; 2) ponilo come domanda su StackOverflow.
Craig McQueen,

@JonYork Ho avuto esattamente lo stesso problema. Il mio problema era usare <td> nell'intestazione anziché <th> quindi non poteva applicare la larghezza di ciascuna colonna a <th> inesistente (vedi // Copy cell widths from original headerparte del codice). @Craig McQueen, modifica la tua risposta in modo che nessun altro commetta questo errore.
aexl

@CraigMcQueen Quando uso il tuo fantastico codice (grazie) si rompe sulla seconda tabella che ho dietro un'altra scheda (plug-in della scheda jQuery). qualche idea? L'intestazione viene posizionata all'estrema sinistra, invece di seguire le colonne della posizione. Ma funziona perfettamente sul tavolo nella prima scheda jQuery.
Richard Żak,

68

Craig, ho perfezionato un po 'il tuo codice (tra le altre cose ora sta usando position: fixed) e lo ho avvolto come un plugin jQuery.

Provalo qui: http://jsfiddle.net/jmosbech/stFcx/

E ottieni la fonte qui: https://github.com/jmosbech/StickyTableHeaders


1
Buona idea per creare un plugin jQuery. Un paio di domande: (1) Funziona bene con lo scorrimento orizzontale? (2) Come si comporta quando si scorre verso il basso in modo che la parte inferiore della tabella scorra dalla parte superiore della finestra? L'esempio non consente il test di questi casi.
Craig McQueen,

Il tuo esempio di jsfiddle funziona alla grande con tablesorter, ma il codice su github no. Hai dovuto modificare il codice tableorter?
ericslaw,

Craig, lo scorrimento orizzontale non dovrebbe essere un problema poiché l'intestazione viene riposizionata sia orizzontalmente che verticalmente su scorrimento e ridimensionamento. Per quanto riguarda la seconda domanda: l'intestazione è nascosta quando la tabella lascia la finestra.
jmosbech,

Eric, è strano. Hai provato ad aprire /demo/tablesorter.htm da Github? Non ho modificato il codice tablesorter, ma per farlo funzionare è necessario applicare il plug-in StickyTableHeader prima di tablesorter.
jmosbech,

2
Lo scorrimento orizzontale non funziona del tutto, dopo lo scorrimento di una certa distanza la testa viene posizionata più a sinistra quando viene spostata fuori dallo schermo rispetto a quando viene posizionata normalmente come parte del tavolo.
Nathan Phillips,

16

Se stai prendendo di mira i moderni browser compatibili con css3 ( Supporto browser: https://caniuse.com/#feat=css-sticky ) puoi usare position:sticky, che non richiede JS e non interromperà il layout della tabella e td della stessa colonna. Né richiede larghezza di colonna fissa per funzionare correttamente.

Esempio per una singola riga di intestazione:

thead th
{
    position: sticky;
    top: 0px;
}

Per i thead con 1 o 2 righe, puoi usare qualcosa del genere:

thead > :last-child th
{
    position: sticky;
    top: 30px; /* This is for all the the "th" elements in the second row, (in this casa is the last child element into the thead) */
}

thead > :first-child th
{
    position: sticky;
    top: 0px; /* This is for all the the "th" elements in the first child row */
}

Potrebbe essere necessario giocare un po 'con la proprietà superiore dell'ultimo figlio modificando il numero di pixel in modo che corrisponda all'altezza della prima riga (+ il margine + il bordo + l'eventuale riempimento), quindi la seconda riga si attacca in basso muggito il primo.

Inoltre entrambe le soluzioni funzionano anche se hai più di una tabella nella stessa pagina: l' thelemento di ognuna inizia ad essere appiccicoso quando la sua posizione superiore è quella indicata nella definizione css e scompare appena tutta la tabella scorre verso il basso. Quindi se ci sono più tavoli funzionano tutti allo stesso modo.

Perché usare l'ultimo figlio prima e il primo figlio dopo nel CSS?

Poiché le regole CSS sono rese dal browser nello stesso ordine in cui le scrivi nel file CSS e per questo se hai solo 1 riga nell'elemento thead, anche la prima riga è contemporaneamente l'ultima riga e la regola del primo figlio deve per sovrascrivere l'ultimo figlio. Altrimenti avrai un offset della riga di 30 px dal margine superiore che suppongo tu non voglia.

Un noto problema di posizione: appiccicoso è che non funziona su elementi thead o righe di tabella: è necessario scegliere come target gli elementi th. La risoluzione di questo problema verrà risolta nelle versioni future del browser.


Il primo esempio non sembra funzionare in Firefox (61). Tuttavia, se la posizione è appiccicosa sulla testa, lo fa.
ewh

1
Potresti fare thead tr+tr thcome bersaglio la seconda fila.
Teepeemm,

5

Possibili alternative

table-header js-flottante

js-floating-table-headers (Codice Google)

In Drupal

Ho un sito Drupal 6. Ero sulla pagina dei "moduli" di amministrazione e ho notato che le tabelle avevano questa funzione esatta!

Guardando il codice, sembra essere implementato da un file chiamato tableheader.js. Applica la funzione su tutte le tabelle con la classe sticky-enabled.

Per un sito Drupal, vorrei poter utilizzare quel tableheader.jsmodulo così com'è per il contenuto dell'utente. tableheader.jsnon sembra essere presente nelle pagine dei contenuti degli utenti in Drupal. Ho pubblicato un messaggio sul forum per chiedere come modificare il tema Drupal in modo che sia disponibile. Secondo una risposta, tableheader.jspuò essere aggiunto a un tema Drupal usando drupal_add_js()nel tema template.phpcome segue:

drupal_add_js('misc/tableheader.js', 'core');

Il tuo link al codice di Google mi è stato molto utile, tahnks.
Vilius Gaidelis,

5

Ho riscontrato questo problema molto recentemente. Sfortunatamente, ho dovuto fare 2 tavoli, uno per l'intestazione e uno per il corpo. Probabilmente non è l'approccio migliore di sempre, ma qui va:

<html>
<head>
    <title>oh hai</title>
</head>
<body>
    <table id="tableHeader">
        <tr>
            <th style="width:100px; background-color:#CCCCCC">col header</th>
            <th style="width:100px; background-color:#CCCCCC">col header</th>
        </tr>
    </table>
    <div style="height:50px; overflow:auto; width:250px">
        <table>
            <tr>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data1</td>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data1</td>
            </tr>
            <tr>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data2</td>
                <td style="height:50px; width:100px; background-color:#DDDDDD">data2</td>
            </tr>
        </table>
    </div>
</body>
</html>

Questo ha funzionato per me, probabilmente non è il modo elegante ma funziona. Esaminerò quindi vedo se posso fare qualcosa di meglio, ma consente più tabelle.

Vai a leggere sulla proprietà dell'overflow per vedere se si adatta alle tue necessità


Hmm non funziona, cercherò di risolvere questo problema, ma l'approccio rimane, devi usare l'overflow: proprietà propria
Gab Royer,

Apprezzo la tua soluzione e la sua semplicità, tuttavia nella mia domanda ho detto "Nota: ho visto una soluzione in cui l'area dei dati della tabella è resa scorrevole mentre le intestazioni non scorrono. Non è la soluzione che sto cercando."
Craig McQueen,

@GabRoyer La pagina w3school, a cui hai fatto riferimento, non esiste.
Farhan,

Sembrano averlo spostato. Risolto
Gab Royer il

Un altro problema con questo approccio è che se è necessario adattare alcune delle colonne ad altri contenuti, si rischia di interrompere il loro allineamento con l'intestazione della colonna corrispondente. IMHO è meglio affrontare questo problema con un approccio che consente una sorta di gestione dinamica del contenuto che mantiene un perfetto allineamento di colonne e relative teste. Quindi la posizione IMHO = appiccicosa è la strada da percorrere.
willy wonka,

3

Questa è davvero una cosa difficile avere un'intestazione appiccicosa sul tuo tavolo. Avevo gli stessi requisiti, ma con asp: GridView e poi ho trovato davvero pensato di avere un'intestazione appiccicosa su gridview. Ci sono molte soluzioni disponibili e mi ci sono voluti 3 giorni per provare tutte le soluzioni, ma nessuna di esse è stata soddisfacente.

Il problema principale che ho dovuto affrontare con la maggior parte di queste soluzioni era il problema dell'allineamento. Quando si tenta di rendere mobile l'intestazione, in qualche modo l'allineamento delle celle di intestazione e delle celle del corpo non riesce.

Con alcune soluzioni, ho anche avuto il problema di sovrapporre l'intestazione alle prime righe del corpo, causando che le righe del corpo si nascondessero dietro l'intestazione mobile.

Quindi ora ho dovuto implementare la mia logica per raggiungere questo obiettivo, anche se non la considero una soluzione perfetta, ma potrebbe anche essere utile per qualcuno,

Di seguito è riportata la tabella di esempio.

<div class="table-holder">
        <table id="MyTable" cellpadding="4" cellspacing="0" border="1px" class="customerTable">
            <thead>
                <tr><th>ID</th><th>First Name</th><th>Last Name</th><th>DOB</th><th>Place</th></tr>
            </thead>
            <tbody>
                <tr><td>1</td><td>Customer1</td><td>LastName</td><td>1-1-1</td><td>SUN</td></tr>
                <tr><td>2</td><td>Customer2</td><td>LastName</td><td>2-2-2</td><td>Earth</td></tr>
                <tr><td>3</td><td>Customer3</td><td>LastName</td><td>3-3-3</td><td>Mars</td></tr>
                <tr><td>4</td><td>Customer4</td><td>LastName</td><td>4-4-4</td><td>Venus</td></tr>
                <tr><td>5</td><td>Customer5</td><td>LastName</td><td>5-5-5</td><td>Saturn</td></tr>
                <tr><td>6</td><td>Customer6</td><td>LastName</td><td>6-6-6</td><td>Jupitor</td></tr>
                <tr><td>7</td><td>Customer7</td><td>LastName</td><td>7-7-7</td><td>Mercury</td></tr>
                <tr><td>8</td><td>Customer8</td><td>LastName</td><td>8-8-8</td><td>Moon</td></tr>
                <tr><td>9</td><td>Customer9</td><td>LastName</td><td>9-9-9</td><td>Uranus</td></tr>
                <tr><td>10</td><td>Customer10</td><td>LastName</td><td>10-10-10</td><td>Neptune</td></tr>
            </tbody>
        </table>
    </div>

Nota : la tabella è racchiusa in un DIV con attributo class uguale a 'table-holder'.

Di seguito è riportato lo script JQuery che ho aggiunto nell'intestazione della mia pagina html.

<script src="../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../Scripts/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        //create var for table holder
        var originalTableHolder = $(".table-holder");
        // set the table holder's with
        originalTableHolder.width($('table', originalTableHolder).width() + 17);
        // Create a clone of table holder DIV
        var clonedtableHolder = originalTableHolder.clone();

        // Calculate height of all header rows.
        var headerHeight = 0;
        $('thead', originalTableHolder).each(function (index, element) {
            headerHeight = headerHeight + $(element).height();
        });

        // Set the position of cloned table so that cloned table overlapped the original
        clonedtableHolder.css('position', 'relative');
        clonedtableHolder.css('top', headerHeight + 'px');

        // Set the height of cloned header equal to header height only so that body is not visible of cloned header
        clonedtableHolder.height(headerHeight);
        clonedtableHolder.css('overflow', 'hidden');

        // reset the ID attribute of each element in cloned table
        $('*', clonedtableHolder).each(function (index, element) {
            if ($(element).attr('id')) {
                $(element).attr('id', $(element).attr('id') + '_Cloned');
            }
        });

        originalTableHolder.css('border-bottom', '1px solid #aaa');

        // Place the cloned table holder before original one
        originalTableHolder.before(clonedtableHolder);
    });
</script>

e finalmente sotto c'è la classe CSS per un po 'di colorazione.

.table-holder
{
    height:200px;
    overflow:auto;
    border-width:0px;    
}

.customerTable thead
{
    background: #4b6c9e;        
    color:White;
}

Quindi l'idea di questa logica è quella di posizionare la tabella in un div del supporto di tabella e creare un clone di quel supporto sul lato client quando la pagina viene caricata. Ora nascondi il corpo del tavolo all'interno del supporto clone e posiziona la parte rimanente dell'intestazione sull'intestazione originale.

La stessa soluzione funziona anche per asp: gridview, è necessario aggiungere altri due passaggi per raggiungere questo obiettivo in gridview,

  1. Nell'evento OnPrerender dell'oggetto gridview nella tua pagina Web, imposta la sezione della tabella della riga di intestazione uguale a TableHeader.

    if (this.HeaderRow != null)
    {
        this.HeaderRow.TableSection = TableRowSection.TableHeader;
    }
  2. E avvolgi la griglia <div class="table-holder"></div>.

Nota : se l'intestazione ha controlli selezionabili, potrebbe essere necessario aggiungere altro script jQuery per passare gli eventi generati nell'intestazione clonata all'intestazione originale. Questo codice è già disponibile nel plugin jQuery sticky-header creato da jmosbech


+1 per un buon sforzo, ma per tabelle di grandi dimensioni con molti dati, è piuttosto brutto clonare il tutto ... Immagino che raddoppierebbe il tempo di caricamento
khaverim

2

L'uso display: fixednella theadsezione dovrebbe funzionare, ma per funzionare solo nella tabella corrente in vista, avrai bisogno dell'aiuto di JavaScript. E sarà complicato perché dovrà capire i luoghi di scorrimento e la posizione degli elementi relativi al viewport, che è una delle aree principali dell'incompatibilità del browser.

Dai un'occhiata ai famosi framework JavaScript (jQuery, MooTools, YUI, ecc.) Per vedere se sono in grado di fare ciò che desideri o renderlo più semplice.


1
Grazie per il consiglio. Ho fatto una soluzione usando jQuery: vedi la mia risposta.
Craig McQueen,

Ho provato questo e sto pensando che volevi dire posizione piuttosto che display, ma nessuno dei due ha funzionato per Thead in Chome.
ericslaw,

@ericslaw Ack - sì, intendevo dire position: fixed. Mi dispiace che non abbia funzionato in Chrome.
staticsan,

incasinato la mia intestazione ignorando gli stili di larghezza
pavel_kazlou

2

Se usi una tabella a schermo intero potresti essere interessato a impostarlo per visualizzare: fixed; e in alto: 0; oppure prova un approccio molto simile tramite css.

Aggiornare

Crea rapidamente una soluzione funzionante con iframe (html4.0). Questo esempio NON è conforme allo standard, tuttavia sarà possibile risolverlo facilmente:

outer.html

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">     
    <head>      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
        <title>Outer</title>
  <body>
    <iframe src="test.html" width="200" height="100"></iframe>
    </body>
</html> 

test.html

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">     
    <head>      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
        <title>Floating</title>
    <style type="text/css">
      .content{
        position:relative; 
      }

      thead{
        background-color:red;
        position:fixed; 
        top:0;
      }
    </style>
  <body>
    <div class="content">      
      <table>
        <thead>
          <tr class="top"><td>Title</td></tr>
        </head>
        <tbody>
          <tr><td>a</td></tr>
          <tr><td>b</td></tr>
          <tr><td>c</td></tr>
          <tr><td>d</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
          <tr><td>e</td></tr>
        </tbody>
      </table>
    </div>
    </body>
</html> 

@ a_m0d, vero ... ma la richiesta sembra molto confusa. O lo stiamo fraintendendo, oppure chi lo ascolta non capisce completamente cosa vuole.
Sampson,

Ecco un'altra soluzione che utilizza alcuni japascript imaputz.com/cssStuff/bigFourVersion.html
merkuro,

2

La risposta più semplice solo usando CSS: D !!!

table {
  /* Not required only for visualizing */
  border-collapse: collapse;
  width: 100%;
}

table thead tr th {
  /* you could also change td instead th depending your html code */
  background-color: green;
  position: sticky;
  z-index: 100;
  top: 0;
}

td {
  /* Not required only for visualizing */
  padding: 1em;
}
<table>
  <thead>
    <tr>
      <th>Col1</th>
      <th>Col2</th>
      <th>Col3</th>
    </tr>
  </thead>
  <tbody>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>data</td>
       <td>data</td>
       <td>data</td>
     </tr>
     <tr>
       <td>david</td>
       <td>castro</td>
       <td>rocks!</td>
     </tr>
  </tbody>
</table>


1
Grazie David, è l'approccio più bello che ho trovato in questa domanda
Tomasz Smykowski

0

Quella prova di concetto che hai fatto è stata fantastica! Tuttavia ho anche trovato questo plugin jQuery che sembra funzionare molto bene. Spero che sia d'aiuto!


Sembra che implementa una funzionalità diversa . Come ho detto nella mia domanda originale: "Nota: ho visto una soluzione in cui l'area dei dati della tabella è resa scorrevole mentre le intestazioni non scorrono. Non è la soluzione che sto cercando."
Craig McQueen,

2
provando plug-in che hai menzionato ha appena incasinato l'intestazione della mia tabella. Non sono riuscito a usarlo.
pavel_kazlou,

0

È frustrante che ciò che funziona alla grande in un browser non funzioni in altri. Quanto segue funziona in Firefox, ma non in Chrome o IE:

<table width="80%">

 <thead>

 <tr>
  <th>Column 1</th>
  <th>Column 2</th>
  <th>Column 3</th>
 </tr>

 </thead>

 <tbody style="height:50px; overflow:auto">

  <tr>
    <td>Cell A1</td>
    <td>Cell B1</td>
    <td>Cell C1</td>
  </tr>

  <tr>
    <td>Cell A2</td>
    <td>Cell B2</td>
    <td>Cell C2</td>
  </tr>

  <tr>
    <td>Cell A3</td>
    <td>Cell B3</td>
    <td>Cell C3</td>
  </tr>

 </tbody>

</table>

4
Lo sto provando in Firefox 8.0 e non sembra fare nulla. Che cosa fa?
Craig McQueen,

Che cosa è px? È quell'unità legacy utilizzata dalle persone al 90 ° quando un dispositivo di visualizzazione era usato per avere 72 dpi?
ceving

Sono d'accordo: è molto frustrante, sfortunatamente gli sviluppatori di browser non rispettano gli standard in ogni situazione ... e alcuni anni fa era anche peggio! Ora alcuni problemi sono stati risolti e più browser si comportano in un modo più standardizzato, ma molti passi devono ancora essere fatti: speriamo e preghiamo :-)
willy wonka,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.