Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ CSS _ [Bootstrap] Dynamiczna liczba kolumn

Napisany przez: markonix 29.09.2017, 23:47:10

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.

Napisany przez: Neutral 30.09.2017, 00:48:51

Nie wiem, czy się da w bootstrapie. W PHP to dałoby radę to napisać chyba dzięki pętli.

https://medium.com/@fionnachan/dynamic-number-of-rows-and-columns-with-css-grid-layout-and-css-variables-cb8e8381b6f2
https://stackoverflow.com/questions/2117320/set-maximum-displayed-rows-count-for-html-table
http://willschenk.com/bootstrap-advanced-grid-tricks/
https://stackoverflow.com/questions/24175998/meaning-of-numbers-in-col-md-4-col-xs-1-col-lg-2-in-bootstrap
https://github.com/twbs/bootstrap/issues/9454

Napisany przez: markonix 30.09.2017, 01:22:57

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ść.

Napisany przez: viking 30.09.2017, 04:24:06

Bootstrap v4 jest oparty o flex.

Napisany przez: Pyton_000 30.09.2017, 06:20:28

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

Napisany przez: markonix 30.09.2017, 11:43:44

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"

Napisany przez: Pyton_000 30.09.2017, 12:11:50

Węszę importer z CSV smile.gif

Napisany przez: markonix 30.09.2017, 12:24:24

http://prntscr.com/griu7q

Paniee wink.gif Laravel-Excel i xls czy ods niestraszny wink.gif

Napisany przez: prowseed 30.09.2017, 13:16:07

Ja polecam http://flexboxgrid.com/
Nazewnictwo zgodne mniej-więcej z bs3, więc łatwo się przesiąść smile.gif

Generalnie flexbox.

Napisany przez: Pyton_000 30.09.2017, 13:41:19

Generalnie to przyszłość jest w Grid wink.gif

Napisany przez: viking 30.09.2017, 14:10:12

W grid plus flex. Grid jest dobry ale do budowania layoutu ogólnego. Gorzej jak trzeba coś dokładniej ułożyć.

Napisany przez: markonix 30.09.2017, 17:58:14

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

Napisany przez: Pyton_000 30.09.2017, 19:02:27

@viking ja mówię o tym grid: https://css-tricks.com/snippets/css/complete-guide-grid/

Napisany przez: Neutral 30.09.2017, 21:25:27

  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. http://www.php.net/echo "<span style='color:red'>red</span>";
  39. }
  40.  
  41. ?>

Napisany przez: Pyton_000 1.10.2017, 08:51:41

A to co biggrin.gif

Napisany przez: Comandeer 2.10.2017, 11:38:11

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

Napisany przez: Pyton_000 2.10.2017, 11: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

Napisany przez: prowseed 4.10.2017, 15:49:09

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)