How can I get a left-sided gap? As you can see the Box1 is sitting 'sticky' to the left side I've used grid-gap: 1em;
but it only applies to top bottom and right?
/*Defining the font and pixels so we can work with em later*/
body {
font-family: 'Poppins', sans-serif;
font-size: 25px;
}
/*BG gradient layer + bg elements*/
.BG_gradient {
background-image: linear-gradient(-135deg, #FEE140 0%, #FA709A 100%);
/*Padding = 10vh top + 10vh bottom = 20vh*/
padding: 10vh 5vh 10vh 5vh;
/*Padding top and bottom is already 20vh combined so height left is 70vh*/
height: 80vh;
}
/* wrapper of the content*/
.wrapper {
/*Here we define the start of the grid*/
display: grid;
/*This means left colom is 1fr, middle 2fr, and right 1fr so total it's 4fr*/
grid-template-columns: 1fr 2fr 1fr;
/*Rows = vertical so min it should be 95px atleast and max it's on auto*/
grid-auto-rows: minmax(95px, auto);
grid-gap: 1em;
/* BG visuals: */
background: #EEF3F4;
box-shadow: 0 0 90px 0 rgba(0,0,0,0.10);
border-radius: 15px;
height: 500px;
}
.header {
grid-column: 4/4;
}
.left {
background-color: rgba(230,45,45,0.50);
}
.middle {
background-color: rgba(50,115,180,0.50);
}
.right {
background-color: rgba(120,230,45,0.50);
}
<div class="BG_gradient">
<div class="wrapper">
<section class="header"></section>
<section class="mainbox left">Box 1</section>
<section class="mainbox middle">Box 2</section>
<section class="mainbox right">Box 3</section>
</div>
</div>
https://jsfiddle.net/ZanicL3/Ldtcqdtb/
The grid-gap property defines the size of the gap between the rows and columns in a grid layout, and is a shorthand property for the following properties: grid-row-gap. grid-column-gap.
'grid-gap' has been deprecated in favor of 'gap'. In a similar vein 'grid-row-gap' and 'grid-column-gap' have been deprecated in favor of 'row-gap' and 'column-gap'.
The grid-column-gap property defines the size of the gap between the columns in a grid layout. Note: This property was renamed to column-gap in CSS3.
The row-gap CSS property sets the size of the gap (gutter) between an element's rows.
The grid-gap
property applies only between grid items. It never applies between a grid item and the grid container.
If you want a gap between the item and the container, then use padding
on the container.
.wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: minmax(95px, auto);
grid-gap: 1em;
padding: 1em; /* NEW */
}
https://jsfiddle.net/Ldtcqdtb/3/
Here's an alternative approach that allows you to apply the grid (or flex) gap to the 'outer' of the object using collapsed tracks.
This method lends itself nicely to dynamic content where the parent element may not always be the same, providing a powerful single property to set the margins/gutters.
Edit: The following example demonstrates an explicit grid, but the same method can be used for implicit grids when combined with the use of the grid-row-start/end grid-column-start/end properties.
.parent {
display: grid;
grid: 0 repeat(3, auto) 0 / 0 repeat(3, auto) 0;
grid-template-areas: " . . . . . "
" . a b c . "
" . d e f . "
" . g h i . "
" . . . . . ";
gap: 0.5em;
width: 100%;
height: 100vh;
background: #ddd;
}
.child {
grid-area: var(--position);
width: 100%;
height: 100%;
background: #fff;
}
body {
margin: 0;
}
<div class="parent">
<div class="child" style="--position: a;"></div>
<div class="child" style="--position: b;"></div>
<div class="child" style="--position: c;"></div>
<div class="child" style="--position: d;"></div>
<div class="child" style="--position: e;"></div>
<div class="child" style="--position: f;"></div>
<div class="child" style="--position: g;"></div>
<div class="child" style="--position: h;"></div>
<div class="child" style="--position: i;"></div>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With