Come posso posizionare uno SPAN in modo che sia allineato su entrambi i lati e sopra una TABELLA?

StackOverflow https://stackoverflow.com/questions/228102

  •  03-07-2019
  •  | 
  •  

Domanda

<div>
<span>left</span>
<span>right</span>
<!-- new line break, so no more content on that line -->
<table> 
...
</table>
</div>

Come posso posizionare quegli span (possono essere cambiati in qualsiasi elemento) in modo che a seconda di quanto sia grande la tabella (non definita da nessuna parte e non dovrebbe essere) gli span sono posizionati proprio sopra il lato sinistro di il tavolo e il lato destro del tavolo.

Esempio:

a    b
table0
table1
table2

(dove a è l'intervallo sinistro e b è l'intervallo destro)

P.S. Puoi modificare qualsiasi cosa html della tabella interna della barra.

È stato utile?

Soluzione

  

Non li posiziona relativamente, né   risponde Rob Allen, le hanno messe   ai confini del browser no,   all'interno della larghezza della tabella.

Bene, saranno vincolati dalla larghezza del loro contenitore e la risposta di Rob rende sia la tabella che la larghezza del contenitore al 100%.

L'unica soluzione a cui riesco a pensare fuori mano è quella di mettere una riga nella tabella con una singola colonna (che si estende su tutte le colonne) e in quella riga avere i DIV in virgola mobile.

Altri suggerimenti

<style type="text/css">
    #wrapper, #top, #tableArea
     {
       width: 100%;
       padding: 10px;
       margin: 0px auto;
      }

     #top
      {
        padding: 0px;
      }

      #leftBox, #rightBox
      {
          margin: 0px;
          float: left;
          display: inline;
          clear: none;
       }

       #rightBox
        {
            float: right;
        }
     </style>
<div id="wrapper">
    <div id="top">
        <div id="leftBox">A</div>
        <div id="rightBox">b<</div>
    </div>
    <div id="tableArea">
        <table> ... </table>
    </div>
</div>

Ho riscontrato un problema simile e ho trovato una soluzione. Non dipende dalla larghezza del tavolo ma è un po 'più complicato. Funziona con tutti i browser inclusi IE5.5, IE6 e successivi.

  <style>
  .tablediv {
  float:left; /* this is a must otherwise the div will take a full width of our page and this way it wraps only our content (so only the table)   */
  position:relative; /* we are setting this to start the trickie part */  
  padding-top:2.7em; /* we have to set the room for our spans, 2.7em is enough for two rows otherwise try to use something else; for one row e.g. 1.7em */
  }
  .leftspan {
  position:absolute; /* seting this to our spans will start our behaviour */
  top:0; /* we are setting the position where it will be placed inside the .tablediv */
  left:0;
  }
  .rightspan {
  position:absolute; 
  top:0; 
  right:0; 
  }
  </style>
<div class="tablediv">
 <span class="leftspan">Left text</span>
 <span class="rightspan">Right text <br /> with row</span>
  <table border="1">
   <tr><td colspan="3">Header</td></tr>
   <tr><td rowspan="2">Left content</td><td>Content</td><td rowspan="2">Right content</td></tr>
   <tr><td>Bottom content</td></tr>
  </table>
</div>
 <!-- If you don't want to float this on the right side of the table than you must use the clear style -->
 <p style="clear:both">
  something that continues under our tablediv
 </p>

Se non puoi usare un float per qualche motivo, allora puoi usare uno stile .tablediv alternativo che ho trovato per errore. Sostituisci semplicemente il float: left; da visualizzare: inline-block; Funziona con tutti i browser moderni ma non con IE7 e successivi.

Ora ottieni il mio punto e sono sicuro di trovare altre soluzioni. Basta non dimenticare che .tablediv sarà lungo quanto il contenuto interiore. Quindi inserendo un paragrafo in esso si allungherà a una dimensione maggiore rispetto alla nostra tabella.

se hai div invece di span, prova float: left per span a e float: right per span b

<div>
<div style="float:left">a</div><div style="float:right">b</div>
<br style="clear: both">
aaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
aaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
aaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
</div>

Non li posiziona relativamente, né la risposta di Rob Allen, non li colloca ai confini del browser, all'interno della larghezza del tavolo.

Non riesco a pensare comunque, tranne che per impostare la larghezza della tabella su qualcosa. Nel mio caso scelgo 100%, che si estende fino alla larghezza del rapper a 50em:

<style type="text/css">
#wrapper {
    width: 1%;
    min-width:50em;
    padding: 10px;
}
#mainTable {
    width:100%;
}

#leftBox {
    float: left;
}

#rightBox {
    float: right;
}
</style>
<div id="wrapper">
    <div id="leftBox">A</div>
    <div id="rightBox">b</div>
    <br style="clear: both" />
    some text some text some text some text some text <br />
    some text some text some text some text some text <br />
    some text some text some text some text some text
    <table id="mainTable" border="1"><tr><td>test</td><td>test 2</td></tr></table>
</div>

@MattMitchell, potresti avere qualcosa lì. E poi usa solo float: sinistra e float destra suppongo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top