Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Div`y podobne jak tabela ale...
Forum PHP.pl > Forum > Po stronie przeglądarki
Fluke
Witam,

Nie wiem za bardzo jak dobrze zatytułować ten wątek, więc może dla tego nie znalazłem rozwiązania w google.
Chciałem zrobić coś takiego:
Mam 4 diwy obok siebie w 1 kolumnie i 2 divy obok siebie w 2 kolumnie. Teraz chciałbym aby wszystkie diwy w danej kolumnie rozszerzały się równomiernie, czyli w 1 kolumnie po +-25% oraz w 2 po +-50%.
Dla każdego diva jest ustawiona min-width: 100px. Jeśli przeglądarka zmieni swój rozmiar tak, że w 1 kolumnie zabraknie miejsca to od prawej diwy mają spadać w dół.

Najlepiej sprawdza się display: inline-block; ale nie wiem jak rozszerzyć divy równomiernie.

Mam nadzieję, że przynajmniej dobrze to wytłumaczyłem o co mi chodzi.
Czekam na jakiekolwiek propozycje smile.gif

Pozdrawiam.
mar1aczi
Coś w tą stronę: http://jsfiddle.net/M3Afr/
Fluke
Bardziej coś takiego: http://jsfiddle.net/qVEMd/

tylko te box`y czerwone po lewej stronie muszą się rozszerzać równomiernie. I jeśli przekroczą granicę szerokości mają spadać jak by były ustawione na display: block;

Napisałem prostą wtyczkę do tego:

  1. (function($) {
  2. $.fn.extend({
  3. schemaContainerTable: function($options) {
  4. var $root = this;
  5. var $defaults = {
  6. minRowWidth: 800,
  7. rootWidth: '100%'
  8. };
  9.  
  10. $options = $.extend($defaults, $options);
  11.  
  12. $root.width($options.rootWidth);
  13.  
  14. var setContainerItems = function() {
  15. var $rows = $root.find('> div');
  16.  
  17. if($rows.length > 0) {
  18. $.each($rows, function() {
  19. var $rowWidth = $(this).width();
  20. var $colsInRow = $(this).find('> div');
  21.  
  22. $(this).css({
  23. display: 'block',
  24. overflow: 'hidden'
  25. });
  26.  
  27. if($rowWidth > $options.minRowWidth) {
  28. $colsInRow.width(parseInt($rowWidth/$colsInRow.length));
  29. }
  30.  
  31. $.each($colsInRow, function() {
  32. $(this).css({float: 'left'});
  33. });
  34. });
  35. }
  36. }
  37.  
  38. setContainerItems();
  39. $(window).resize(function() {
  40. setContainerItems();
  41. });
  42. },
  43. });
  44. })(jQuery);


Użycie jej:
  1. <scirpt>
  2. $(function(){
  3. $('div.container').schemaContainerTable();
  4. });
  5. <div class="container">
  6. <div>
  7. <div>{{ form.shortName|raw }}{{ form.country|raw }}</div>
  8. <div>{{ form.taxNumber|raw }}{{ form.city|raw }}</div>
  9. <div>{{ form.type|raw }}{{ form.street|raw }}</div>
  10. <div>{{ form.category|raw }}{{ form.zipcode|raw }}</div>
  11. <div>{{ form.isActive|raw }}{{ form.voivodeship|raw }}</div>
  12. </div>
  13. <div class="clear"></div>
  14. </div>


Ale lepiej chyba takie rzeczy robić w css i html
com
jak chcesz mieć je jak tabela to czemu nie display:table?
http://quirksmode.org/css/css2/display.html#table
Fluke
@com

Ponieważ jak wyświetlę je tak jakbym robił tabelki to po zmniejszeniu strony divy od lewej nie spadały by.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.