Skip to content

Commit 9c87ec4

Browse files
authored
Merge pull request #65 from zepdev/ZDS-407/implement-grid-into-ZDS-website
Zds 407/implement grid into zds website
2 parents 7565749 + cf058ad commit 9c87ec4

File tree

1 file changed

+75
-95
lines changed

1 file changed

+75
-95
lines changed

src/guidelines/_grid.scss

Lines changed: 75 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
// this grid should be only implemented on full browser width elements!
22

3+
//
4+
// breakpoints:
5+
// xxs: max. 575px
6+
// xs: min. 576px
7+
// s: min. 768px
8+
// m: min. 992px
9+
// l: min. 1200px
10+
// xl: min. 1680px
11+
// xxl: min. 1920px
12+
313
// values: colums, margin, grid-gutter
414
$grid-values-map: (
515
xs: (
@@ -58,24 +68,20 @@ $grid-max-width: #{map-get($min-screensize-map, l)}px;
5868
$min-screensize-map,
5969
$screensize
6070
) {
61-
@if $margin == auto {
62-
min-width: calc(#{$grid-max-width} - (#{$max-grid-h-margin} * 2));
63-
} @else {
64-
min-width: calc(
65-
#{map-get($min-screensize-map, $screensize)}px - (#{$margin} * 2)
66-
);
67-
}
68-
69-
margin-left: $margin;
70-
margin-right: $margin;
71+
padding-left: $margin;
72+
padding-right: $margin;
7173
}
7274

7375
.#{$prefix}grid {
76+
box-sizing: content-box;
7477
position: relative;
7578
display: flex;
7679
flex-direction: column;
77-
margin-left: $grid-h-margin;
78-
margin-right: $grid-h-margin;
80+
81+
padding-left: $grid-h-margin;
82+
padding-right: $grid-h-margin;
83+
margin-left: auto;
84+
margin-right: auto;
7985

8086
// set horizontal margin and width of grid container
8187
@each $screensize, $valuelist in $grid-values-map {
@@ -129,8 +135,7 @@ $grid-max-width: #{map-get($min-screensize-map, l)}px;
129135

130136
// get grid max screen with from style-basics/_breakpoints.scss
131137
max-width: $grid-max-width;
132-
133-
border: 1px solid blue;
138+
// border: 1px solid blue;
134139

135140
&:after,
136141
&:before {
@@ -140,15 +145,28 @@ $grid-max-width: #{map-get($min-screensize-map, l)}px;
140145
}
141146
}
142147

148+
.#{$prefix}grid--valign-center {
149+
justify-content: center;
150+
}
151+
.#{$prefix}grid--valign-bottom {
152+
justify-content: flex-end;
153+
}
154+
143155
.#{$prefix}grid--no-h-margin {
144156
$grid-h-margin: 0;
145157
margin-left: $grid-h-margin;
146158
margin-right: $grid-h-margin;
147159
}
148160

149161
.#{$prefix}grid__row {
162+
$half-grid-gutter: $grid-gutter / 2;
163+
// use negative margin to clear grid-gutter
164+
margin-left: -#{$half-grid-gutter};
165+
margin-right: -#{$half-grid-gutter};
166+
167+
align-items: stretch;
168+
150169
padding: 0;
151-
margin: 0;
152170
display: block;
153171
position: relative;
154172
display: flex;
@@ -175,95 +193,43 @@ $grid-max-width: #{map-get($min-screensize-map, l)}px;
175193
}
176194
}
177195

196+
.#{$prefix}grid__row--align-items-flex-start {
197+
align-items: flex-start;
198+
}
199+
.#{$prefix}grid__row--align-items-flex-end {
200+
align-items: flex-end;
201+
}
202+
.#{$prefix}grid__row--align-items-center {
203+
align-items: center;
204+
}
205+
.#{$prefix}grid__row--align-items-baseline {
206+
align-items: baseline;
207+
}
208+
178209
.#{$prefix}grid__col {
179210
// float is only for non flexbox browsers and overwritten by flex properties in modern browsers
180211
position: relative;
181212
display: block;
182213
float: left;
183214
flex-shrink: 1;
184-
border: 1px green solid;
215+
// border: 1px green solid;
216+
width: 100%;
185217
}
186218

187-
// set col width for 12 col layout
188-
@for $i from 1 through $grid-max-cols {
189-
.#{$prefix}grid__col--#{$i}-#{$grid-max-cols} {
190-
$cols: $grid-min-cols;
191-
192-
$current-cols: $i;
193-
@if $current-cols > $cols {
194-
$current-cols: $cols;
195-
}
196-
@include grid-breakpoint-content($current-cols, $cols, $grid-gutter);
197-
198-
// change col with and grid-gutter on different breakpoints
199-
@each $screensize, $valuelist in $grid-values-map {
200-
$index: index(($grid-values-map), ($screensize $valuelist));
201-
202-
// get next element from grid-values-map for max-with on breakpoint media query.
203-
@if $index < $grid-values-map-length {
204-
$iterator-next: nth($grid-values-map, $index + 1);
205-
$next-screen-size: nth($iterator-next, 1);
206-
207-
@include breakpoint--min-max(#{$screensize}, #{$next-screen-size}) {
208-
$cols: nth($valuelist, 1);
209-
// grid-gutter changes with breakpoint
210-
$grid-gutter: nth($valuelist, 3);
211-
212-
$current-cols: $i;
213-
@if $current-cols > $cols {
214-
$current-cols: $cols;
215-
}
216-
@include grid-breakpoint-content($current-cols, $cols, $grid-gutter);
217-
}
218-
}
219-
// bigger than xl - breakpoint uses just min-width in media query
220-
@else {
221-
@include breakpoint--min(#{$screensize}) {
222-
$cols: nth($valuelist, 1);
223-
$grid-gutter: nth($valuelist, 3);
224-
225-
@include grid-breakpoint-content($i, $cols, $grid-gutter);
226-
}
227-
}
228-
}
229-
}
219+
.#{$prefix}grid__col--align-self-flex-start {
220+
align-self: flex-start;
230221
}
231-
232-
// reverse map for specifity reasons
233-
$grid-values-reverse-map: mapReverse($grid-values-map);
234-
// @debug $grid-values-reverse-map;
235-
236-
// set cols for xl, l, m, s, xs
237-
@each $screensize, $valuelist in $grid-values-reverse-map {
238-
$index: index(($grid-values-reverse-map), ($screensize $valuelist));
239-
$cols: nth($valuelist, 1);
240-
$grid-gutter: nth($valuelist, 3);
241-
242-
// get next screen size from reversed map as long as a next element in map exists
243-
@if $grid-values-map-length > $index {
244-
$iterator-next: nth($grid-values-reverse-map, $index + 1);
245-
$next-screen-size: nth($iterator-next, 1);
246-
247-
@for $i from 1 through $cols {
248-
.#{$prefix}grid__col--#{$screensize}-#{$i}-#{$cols} {
249-
@include breakpoint--min-max(#{$next-screen-size}, #{$screensize}) {
250-
@include grid-breakpoint-content($i, $cols, $grid-gutter);
251-
}
252-
}
253-
}
254-
// get last screen size for media query to display smallest variant
255-
} @else {
256-
$iterator-next: nth($grid-values-reverse-map, $index - 1);
257-
$last-screen-size: nth($iterator-next, 1);
258-
259-
@for $i from 1 through $cols {
260-
.#{$prefix}grid__col--#{$screensize}-#{$i}-#{$cols} {
261-
@include breakpoint--min-max(#{$screensize}, #{$last-screen-size}) {
262-
@include grid-breakpoint-content($i, $cols, $grid-gutter);
263-
}
264-
}
265-
}
266-
}
222+
.#{$prefix}grid__col--align-self-flex-end {
223+
align-self: flex-end;
224+
}
225+
.#{$prefix}grid__col--align-self-center {
226+
align-self: center;
227+
}
228+
.#{$prefix}grid__col--align-self-baseline {
229+
align-self: baseline;
230+
}
231+
.#{$prefix}grid__col--align-self-stretch {
232+
align-self: stretch;
267233
}
268234

269235
// set cols for xxs
@@ -281,3 +247,17 @@ $grid-gutter: 24px;
281247
}
282248
}
283249
}
250+
251+
// set cols for xs - xl
252+
@each $screensize, $valuelist in $grid-values-map {
253+
$cols: nth($valuelist, 1);
254+
$grid-gutter: nth($valuelist, 3);
255+
256+
@for $i from 1 through $cols {
257+
.#{$prefix}grid__col--#{$screensize}-#{$i}-#{$cols} {
258+
@include breakpoint--min(#{$screensize}) {
259+
@include grid-breakpoint-content($i, $cols, $grid-gutter);
260+
}
261+
}
262+
}
263+
}

0 commit comments

Comments
 (0)