Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
eu preciso aumentar o tamanho de uma div de maneira automática. É assim:
estou criando algumas divs dentro de uma laço for, no conteudo da div eu puxo algumas informações do banco de dados. Exemplo:
>
Citar
for($i=0; $i<=count($rows); $i++){
<div id=nome class=nome><?php echo "Texto";?></div>
}
Então veja, que dentro do laço for vai criando várias divs. Até aqui tudo bem, as divs aparecem normalmente uma embaixo da outra.
O problema é que cada div, sua largura uma é diferente da outra. A primeira pode ter 10 pixels, a segunda 303 pixels, a terceira pode ter 12 pixels, e assim sucssivamente, o valor é
aleatório.
Tem como fazer isto??mostra o css
>
1 hora atrás, William Bruno disse:
E qual a dúvida? ainda não entendi..
se você der "float" ou "display: inline-block", isso acontece naturalmente.
ah...tá.... por isso que é bom falar com quem sabe...vou testar...
grato.
William Bruno, mas como mudar o tamanho da div? Preciso alterar a largura da div.
Dentro do laço for, a largura de cada div muda a cada passagem do laço for...
Ainda não consegui entender o que você quer... você quer a div ajustada automaticamente de acordo com o conteúdo dela ou você quer um padrão para todas as divs independente do conteudo dela?
Mas acredito que ambas as duas se resolve no css
execute isso:
<style>
.largura {
display: inline-block;
border: 1px solid #000;
}
</style>
<div class="largura">lorem</div>
<div class="largura">lorem ipsum dolor</div>
<div class="largura">lorem ipsum</div>
<div class="largura">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem ipsa error assumenda deleniti voluptatibus rerum quibusdam minus </div>
<div class="largura">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Impedit vero voluptatem quia eos beatae, esse omnis sapiente debitis eius non! Est reiciendis molestiae recusandae perspiciatis ut rerum, sit expedita facere?</div>
cada uma tem uma largura ai.
Se não for, tente reproduzir um screenshot do que você precisa.bem, pelo o que percebi, a largura no seu exemplo aumenta de acordo com o texto inserido.
No meu caso não vai texto algum. Será apenas uma div com um fundo de alguma cor.
Falando exatamente o que quero, esta div irá simular uma barra de progressão, sabe quando está fazendo o download de algum arquivo e a barra vai crescendo enquanto faz o download? Seria mais ou menos isso, no caso não precisa mostrar ela aumentando, pode ser fixa, porém seu tamanho de largura será variável de acordo com valores que irei extrair do banco de dados.
por exemplo:
caixa de laranjas cabem 200 laranjas.
porém na caixa tem apenas 50 laranjas.
portanto, 50/200 = 25, ou seja, a caixa contém 25% do seu espaço ocupado.
A barra será portanto de 25% de comprimento.
Num proximo registro a caixa poderá ter 80 laranjas que irá dar um outro resultado percentual, fazendo com que a
barra da div seja de outro tamanho.
Não sei como são feitas estas barras progressivas que a gente costuma ver nos downloads, então estou bolando esta idéia com a div.
>
16 minutos atrás, halfar disse:
bem, pelo o que percebi, a largura no seu exemplo aumenta de acordo com o texto inserido.
No meu caso não vai texto algum. Será apenas uma div com um fundo de alguma cor.
Falando exatamente o que quero, esta div irá simular uma barra de progressão, sabe quando está fazendo o download de algum arquivo e a barra vai crescendo enquanto faz o download? Seria mais ou menos isso, no caso não precisa mostrar ela aumentando, pode ser fixa, porém seu tamanho de largura será variável de acordo com valores que irei extrair do banco de dados.
por exemplo:
caixa de laranjas cabem 200 laranjas.
porém na caixa tem apenas 50 laranjas.
portanto, 50/200 = 25, ou seja, a caixa contém 25% do seu espaço ocupado.
A barra será portanto de 25% de comprimento.
Num proximo registro a caixa poderá ter 80 laranjas que irá dar um outro resultado percentual, fazendo com que a
barra da div seja de outro tamanho.
Não sei como são feitas estas barras progressivas que a gente costuma ver nos downloads, então estou bolando esta idéia com a div.
Diga exatamente o que quer fazer... para a div aumentar de tamanho até onde sei ela precisa de conteúdo!
Se o que você que é uma barra de progresso, sugiro que faça de outra forma.
Segue um exemplo pra barra de progresso usando bootstrap:
e pq ao invez de ir somando, você pega o valor ja final aquilo que ja tem de laranja e apartir dai faz a barra
que, de forma básica, seria uma div com uma certa altura e dentro dela uma outra com a mesma altura e largura de X% que é o valor do seu calculo e cor de fundo diferente da outra
https://jsfiddle.net/g81r2jmu/
só ficaria a largura pra ser definida na tag depois que o php fizer o calculo
<?php
for($i=0; $i<=count($_SERVER); $i++){
echo "<div id='nome' style='padding:10px' class='nome'>{$i}</div>";
}
?>
[http://www.runphponline.com/](http://www.runphponline.com/)bem pessoal, veja só: a forma como se faz o calculo não é importante, porque esta parte já tenho resolvido.
a questão é fazer a div assumir o tamanho na largura de acordo com a resposta do cálculo.
fiz assim:
neste ponto do programa já foi feita o acesso ao banco de dados, então no laço for abaixo recupero os valores do bd e faço o estilo da div (se bem que desta forma não acho legal, mas não encontrei outra solução ainda)
>
Citar
for($i =0; $i <=count($rows)-1; $i++){
...recupero valores do BD
$largura[$i] = $rows[$i]["largura"];
echo "<style>";
echo ".barra {";
echo "width: " . $largura[$i] . "px";
echo "}";
echo "</style>";
echo "GRUPO: " . $rows2[$i]["grupo"] . "<div class='barra'></div>";
}
existe uma classe já previamente definida no arquivo estilos.css, porém contém as informações basicas da div, não contém valor de largura, pois o valor da largura será definida dentro do laço for.
o arquivo de estilos é este:
>
Citar
.barra {
height: 30px;
background-color: #ADFF2F;
left: 122px;
border: 1px solid #000000;
}
Agora vejam só: o código funciona de boa, os valores da largura são captados corretamente, a div é montada corretamente no html, só que a div não fica no tamanho correto, de acordo com a largura específica de cada uma, na realidade ambas ficam com o mesmo tamanho.
Veja o código html como ficou, apos executar a pagina:
<style>.barra {width: 24px}</style>GRUPO: A<div class='barra'></div><style>.barra {width: 10px}</style>GRUPO: B<div class='barra'></div>
A resposta do codigo html está correta, note que uma div tem o valor width com 24 e outra com 10. Mas ambas
aparecem com o mesmo tamanho.
Para ser sincero, não sei se fica bem colocar o style dentro do laço for. Antes eu tinha colocado os valores dos estilos dentro da própria div, assim: style="width: $largura px"...etc...
funcionava também, porém também as divs ficavam n mesmo tamanho...resolvido.
consegui fazer de melhor maneira, retirando a declaracao dos estilos dentro do laço for (coisa que eu não estava gostando mesmo). Mantive o arquivo de estilos base num arquivo css, e para alterar a largura dinamicamente, uma
vez capturado do banco de dados o tamanho da largura foi só montar a div assim:
>
Citar
echo "GRUPO: " . $rows2[$i]["grupo"] . "<div class='barra' style='width: $largura[$i]" . "px'></div>";
O problema estava na maneira como se escreve este código acima, apesar do navegador mostrar tudo correto, mas estava dando problema na hora de exibir. Foi só mudar o jeito de escrever o código. É uma daquelas questões que crreio se deve usar as barras de scape... mas consegui fazer funcionar da maneira acima.
A maneira errada como havia escrito estava assim:
>
Citar
echo "GRUPO: " . $rows2[$i]["grupo"] . "<div class='barra' style='width: $largura[$i] px; '></div>";
E qual a dúvida? ainda não entendi..
se você der "float" ou "display: inline-block", isso acontece naturalmente.