Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Bootstrap] Dynamiczna liczba kolumn
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
markonix
Liczba kolumn w jednym wierszu będzie dynamiczna, może wynieść 2, a może 5.
Nie bardzo mi się chce zaprzęgać do tego PHP i wolałbym aby to było po stronie css.
Korzystam z Boostrap, czy tam da się w jednym .row dać dowolną liczbę kolumn tak aby było działało to jak mniej więcej col-md-X gdzie X jest właśnie niewiadomą?
https://www.bootply.com/RuRv7e70sD
Czyli jak będą 3 to będą 3, jak będzie 12 to będzie ich 12 odpowiednio mniejsze. Ciągle wszystko full width.
Gdy dam col-md-1 to nie będzie użyta pełna szerokość, jak dam znów coś większego to duża szansa że będzie za dużo i przeskoczy do nowej linii.
markonix
No ok, w Bootstrap może i nie będzie szło ale już w czystym CSS/HTML chyba by dało radę, przecież to nie brzmi jak jakiś mega wymyślny problem.
Tak, w PHP to bym ogarnął bo już tak raz zrobiłem:

  1. if ($count > 6) {
  2. $columnGrid = 1; // 7 ... n
  3. } elseif ($count > 4) {
  4. $columnGrid = 2; // 5 ... 6
  5. } elseif ($count > 3) {
  6. $columnGrid = 3; // 4
  7. } elseif ($count > 2) {
  8. $columnGrid = 4; // 3
  9. } else {
  10. $columnGrid = 6; // 2 or 1
  11. }

Ale szczerze? Słabe to no i przy niektórych opcjach np. 11 kolumnach zostanie odstęp, a ja bym chciał aby te 11 kolumn rozciągnęło się na pełną szerokość.
viking
Bootstrap v4 jest oparty o flex.
Pyton_000
Dopiero smile.gif Natywny Grid jest bardzo fajny.
A co do problemu to właśnie można utworzyć .row i nadać mu właściwości flex. https://stackoverflow.com/a/31935155/3732803
markonix
Mmm.. Aż się dziwie, że to taka nowość.. Trzeba się troszkę poduczyć na nowo bo nie wszystko działa tak jak byśmy się od razu spodziewali (np. z statyczną szerokością jednej z kolumn) ale generalnie miodzio, nawet nie pytam o kompatybilność smile.gif

Efekt, o który mi chodziło (nie znam z góry ilości kolumn w pliku):
http://prntscr.com/griigy

Kod ostateczny:

  1. .flex-row {
  2. display: flex;
  3. flex: auto;
  4. }
  5.  
  6. .flex-column {
  7. flex: 1;
  8. min-height: 1px;
  9. padding-left: 10px;
  10. padding-right: 10px;
  11. }


Statyczna szerokość kolumny:

  1. style="flex: 0 0 60px"
Pyton_000
Węszę importer z CSV smile.gif
markonix
http://prntscr.com/griu7q

Paniee wink.gif Laravel-Excel i xls czy ods niestraszny wink.gif
prowseed
Ja polecam http://flexboxgrid.com/
Nazewnictwo zgodne mniej-więcej z bs3, więc łatwo się przesiąść smile.gif

Generalnie flexbox.
Pyton_000
Generalnie to przyszłość jest w Grid wink.gif
viking
W grid plus flex. Grid jest dobry ale do budowania layoutu ogólnego. Gorzej jak trzeba coś dokładniej ułożyć.
markonix
W tym konkretnym projekcie jest już użyty premium template oparty o Bootstrap więc troszkę słabe aby zaprzęgać równolegle drugi framework, zwłaszcza, że póki co BS dobrze się sprawdza przy większości widoków no i ktoś tu wspomniał, że BS też idzie w stronę flex'a więc wystarczy poczekać.
Pyton_000
@viking ja mówię o tym grid: https://css-tricks.com/snippets/css/complete-guide-grid/
Neutral
  1. <?php
  2. $count =3;
  3.  
  4. for($u=7;$u>6;$u--){
  5. $arr4[]=$u;
  6. }
  7. for($u2=4;$u2>3;$u2--){
  8. $arr5[]=$u2;
  9. }
  10. for($j=5;$j>=4;$j--){
  11. $arr[] = $j;
  12. }
  13. for($i=3;$i>=2;$i--){
  14. $arr2[]=$i;
  15. }
  16. for($k=3;$k<=4;$k++){
  17. $arr3[]=$k;
  18. }
  19.  
  20. $arr5[1]=null;
  21. $arr4[1]=null;
  22.  
  23. for($r=0;$r<=1;$r++){
  24.  
  25. if($count>$arr2[$r] && $count<$arr[$r]){
  26. $grid = $arr3[$r];
  27. }else if($count > $arr5[$r] && $count < $arr4[$r]){
  28. $grid = 2;
  29. }else if($count > 6){
  30. $grid = 1;
  31. }else if($count < 3){
  32. $grid = 6;
  33. }
  34.  
  35. }
  36.  
  37. for($y=1;$y<=$grid;$y++){
  38. echo "<span style='color:red'>red</span>";
  39. }
  40.  
  41. ?>
Pyton_000
A to co biggrin.gif
Comandeer
Cytat
Generalnie to przyszłość jest w Grid

Już nie przeginajmy… Obecnie mamy modę na "flex all the things" i nawet jak ktoś chce zrobić opływanie obrazka, to mu się wciska flexboxa. Nie chcę, żeby za rok do opływania obrazka polecano mu grida.

CSS Grid jest dość skomplikowanym narzędziem i czasami jest armatą na muchę.
Pyton_000
Ale Grid jako narzędzie do tworzenia template jest całkiem niezły. Owszem nie wszędzie i nie zawsze wszystko.

Wszystko z umiarem smile.gif
prowseed
Cytat(Comandeer @ 2.10.2017, 12:38:11 ) *
Już nie przeginajmy… Obecnie mamy modę na "flex all the things" i nawet jak ktoś chce zrobić opływanie obrazka, to mu się wciska flexboxa. Nie chcę, żeby za rok do opływania obrazka polecano mu grida.

CSS Grid jest dość skomplikowanym narzędziem i czasami jest armatą na muchę.



Cytat(Pyton_000 @ 2.10.2017, 12:58:41 ) *
Ale Grid jako narzędzie do tworzenia template jest całkiem niezły. Owszem nie wszędzie i nie zawsze wszystko.

Wszystko z umiarem smile.gif


Dlatego tak jak napisał viking - flex + grid. Korzystam z grida na co dzień, bo jest ultrawygodny i ma pełne wsparcie, flex wniósł dużo świeżości do pozycjonowania el. na stronie.

Jak ktoś się słucha głupich rad i nie potrafi sam pomyśleć, to niestety, być może użyje flexa wtedy, kiedy nie powinien, natomiast flex+grid to w końcu krok w kierunku oderwania css od layout'owania w stylu "Word 97".
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-2024 Invision Power Services, Inc.