Home Page Johny Lab
Link para a página de contato Fale comigo

siga-me: @JohnyLab

DIVs em círculo dinamicamente

O código abaixo produziu um efeito legal de posicionamento em círculo, calculando o seno e cosseno dos ângulos de cada div para gerar as coordenadas ao redor de um ponto. Coloquei na seção ASP porque o código está em VBScript com ASP, mas pode ser feito em qualquer linguagem de programação para web, como JavaScript. Veja a página de exemplo aqui. Para testar a formação em círculo, é só passar a quantidade de div a ser geradas através do parâmetro "n" na URL. Por exemplo: https://johnylab.net/exemplos/testecirc.asp?n=5
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  2. <%
  3. centroX = 400
  4. centroY = 400
  5. raio = 200
  6. numPontos = Request("n")
  7.    If numPontos < 1 Then numPontos = 1
  8. angulo = 360 / (numPontos + 1)
  9. %>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  14. <title>Teste de menu em círculo</title>
  15. </head>
  16. <body onload="document.myForm.n.select();">
  17. <%
  18. For i = 1 to numPontos
  19. x = Round(centroX + Cos(angulo * i) * raio)
  20. y = Round(centroY + Sin(angulo * i) * raio)
  21.    Response.Write "<div style=""position: absolute; left: "
  22.    Response.Write x & "px; "
  23.    Response.Write "top: "
  24.    Response.Write y & "px;"">"
  25.    Response.Write i & " ° (" & x & ", " & y & ")</div>" & VbCrLf
  26. Next
  27. %>
  28. <form action="" method="get" name="myForm"><label for="n">Nº de pontos: </label><input name="n" type="text" value="<%= numPontos %>" size="11" maxlength="11" /><input name="submit" type="submit" value="Testar" /></form>
  29. </body>
  30. </html>


As variáveis centroX e centroY servem para determinar o ponto central do círculo que será formado pelas divs. Raio é o raio do círculo em pixels. A linha numPontos = Request("n") recebe a variável "n" passada como parâmetro na URL. Em seguida, o script verifica se o valor é menor que 1 e estabelece o valor mínimo de 1 para evitar um erro, caso numPontos seja igual a 0 (zero). Com todas as variáveis na mão, o cálculo faz a iteração entre os ângulos em que cada div vai ficar calculando as coordenadas de cada div. Este teste serve apenas para exemplificar, pois o resultado não sai sempre como esperado, embora as coordenadas obedeçam sempre o raio que foi determinado.

johnylab.net © 2010 - - Contato - Facebook - Twitter - LinkeIn