Como se pode posicionar um SPAN de ser alinhado para ambos os lados e acima de uma mesa?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

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

Como posso posicionar esses vãos (que pode ser alterado a qualquer elemento), de modo que, dependendo de quão grande é a tabela é (não definido em qualquer lugar, e não deveria ser) os vãos estão posicionados apenas na parte superior do lado esquerdo a mesa e o lado direito da tabela.

Exemplo:

a    b
table0
table1
table2

(onde a é a extensão esquerda, e b é a extensão direita)

P.S. Você pode alterar bar nada interior html tabela.

Foi útil?

Solução

Não colocá-los relativamente, nem faz a resposta de Rob Allen, que colocá-los nos confins do navegador não, dentro a largura da tabela.

Bem, eles vão ser vinculados por sua largura recipiente e resposta de Rob faz tanto a mesa e recipiente largura de 100%.

A única solução que eu posso pensar fora da mão é colocar em uma linha em sua tabela com uma única coluna (abrangendo todas as colunas) e nessa linha têm seus DIVs flutuou.

Outras dicas

<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>

Eu corri para problema semelhante e tenho encontrado uma solução. Ela não depende da largura da tabela, mas é um pouco mais complicado. Ele funciona em todos os navegadores, incluindo IE5.5, IE6 e mais recente.

  <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 você não pode usar uma bóia por algum motivo, do que você pode usar um estilo .tablediv alternativa que eu encontrei por um erro. Basta substituir o float:left; to display:inline-block; isso funciona em todos os navegadores modernos, mas não no IE7 e abaixo.

Agora você começa o meu ponto e eu tenho certeza que você encontrar outras soluções. Só não se esqueça que o .tablediv vai ser tão longo como o conteúdo interno. Então, colocando um parágrafo em que fará com que se esticar para um tamanho maior do que a nossa mesa.

Se você tem divs em vez de extensão, tentativa float: left para extensão de um e float: right por extensão 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>

Não colocá-los relativamente, nem a resposta de Rob Allen, que colocá-los nos confins do navegador não, dentro da largura da tabela.

Eu não posso pensar de qualquer maneira, exceto para definir a largura da tabela para algo. No meu caso eu escolher 100%, que se estende até a largura do rapper em 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, você pode ter alguma coisa lá. E depois é só usar float:? Esquerda e flutuar direito Presumo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top