Projet

Général

Profil

0001-CSS-new-grid-system-with-flexbox-52336.patch

Thomas Jund, 19 mai 2021 10:31

Télécharger (3,8 ko)

Voir les différences:

Subject: [PATCH] CSS: new grid system with flexbox (#52336)

 static/includes/_fx-grid.scss    | 111 +++++++++++++++++++++++++++++++
 static/includes/gadjo-extra.scss |   6 +-
 2 files changed, 116 insertions(+), 1 deletion(-)
 create mode 100644 static/includes/_fx-grid.scss
static/includes/_fx-grid.scss
1
// ======
2
//	fx-grid.css
3
//	flexbox grid system
4
// =====
5

  
6
// Publik vars
7
$fx-grid-gutter: 1.5rem !default;
8
$fx-grid-cell-min-size: 10em !default; // for .fx-grid--auto
9
$grid-mobile-limit: $very-small-limit !default;
10
$grid-tablet-limit: $mobile-limit !default;
11
$max-cols-mobile : 3;
12
$max-cols-tablet : 6;
13
$max-cols-desktop : 9;
14

  
15
// Private vars
16
$fx-grid-half-gutter: $fx-grid-gutter / 2;
17

  
18
//	custom media queries
19
//		@media ($max-grid-mobile-viewport) {}
20
//		@media ($min-grid-desktop-viewport) {}
21
$max-grid-mobile-viewport: "max-width: #{$grid-mobile-limit}";
22
$min-grid-tablet-viewport: "min-width: #{min-desktop-viewport($grid-mobile-limit)}";
23
$min-grid-desktop-viewport: "min-width: #{min-desktop-viewport($grid-tablet-limit)}";
24

  
25

  
26
.fx-grid,
27
[class*="fx-grid--"] {
28
	display: flex;
29
	flex-wrap : wrap;
30
	margin: 0;
31
	padding: 0;
32
	margin-left: -1 * $fx-grid-half-gutter;
33
	margin-right: -1 * $fx-grid-half-gutter;
34
	/* if flex item are list-items */
35
	list-style-type: none;
36

  
37

  
38
	> * {
39
		box-sizing: border-box; // for gadjo
40
		margin-left: $fx-grid-half-gutter;
41
		margin-right: $fx-grid-half-gutter;
42
		flex-basis: calc(100% - #{$fx-grid-gutter});
43
		hyphens: auto;
44
	}
45
}
46

  
47

  
48
// mode auto
49
.fx-grid--auto {
50
	> * {
51
		flex-basis: $fx-grid-cell-min-size;
52
		flex-shrink: 1;
53
		flex-grow: 1;
54
	}
55
}
56

  
57
// mode cols
58
@for $i from 2 through $max-cols-mobile {
59
	.fx-grid--#{$i} > *,
60
	[class*="fx-grid--"][class*="--m#{$i}"] > * {
61
		flex-basis: calc(#{100%/$i} - #{$fx-grid-gutter});
62
	}
63
}
64
@media ($min-grid-tablet-viewport) {
65
		@for $i from 2 through $max-cols-tablet {
66
		[class*="fx-grid--"][class*="--t#{$i}"] > * {
67
			flex-basis: calc(#{100%/$i} - #{$fx-grid-gutter});
68
		}
69
	}
70
}
71
@media ($min-grid-desktop-viewport) {
72
		@for $i from 2 through $max-cols-desktop {
73
		[class*="fx-grid--"][class*="--d#{$i}"] > * {
74
			flex-basis: calc(#{100%/$i} - #{$fx-grid-gutter});
75
		}
76
	}
77
}
78

  
79
// custom grid cell size
80
.fx-grid,
81
[class*="fx-grid--"] {
82
	@for $i from 1 through $max-cols-mobile {
83
		@for $j from 1 through $i {
84
			> .size--#{$j}-#{$i},
85
			> [class*="size--"][class*="--m#{$j}-#{$i}"] {
86
				flex-basis: calc( #{100%*$j/$i} - #{$fx-grid-gutter});
87
				flex-grow: 0;
88
			}
89
		}
90
	}
91
	@media ($min-grid-tablet-viewport) {
92
		@for $i from 1 through $max-cols-tablet {
93
			@for $j from 1 through $i {
94
				> [class*="size--"][class*="--t#{$j}-#{$i}"] {
95
					flex-basis: calc( #{100%*$j/$i} - #{$fx-grid-gutter});
96
					flex-grow: 0;
97
				}
98
			}
99
		}
100
	}
101
	@media ($min-grid-desktop-viewport) {
102
		@for $i from 1 through $max-cols-desktop {
103
			@for $j from 1 through $i {
104
				> [class*="size--"][class*="--d#{$j}-#{$i}"] {
105
					flex-basis: calc( #{100%*$j/$i} - #{$fx-grid-gutter});
106
					flex-grow: 0;
107
				}
108
			}
109
		}
110
	}
111
}
static/includes/gadjo-extra.scss
1 1
$widget-focus-outline: none;
2 2
$widget-border: 1px solid #AAA;
3 3

  
4
$grid-mobile-limit: 400px;
5
$grid-tablet-limit: 600px;
6

  
4 7
@import 'utils';
5
@import 'wcs/evaluation';
8
@import 'fx-grid';
9
@import 'wcs/evaluation';
6
-