{"id":17169,"date":"2017-10-04T11:30:30","date_gmt":"2017-10-04T11:30:30","guid":{"rendered":"https:\/\/www.heartinternet.uk\/blog\/?p=17169"},"modified":"2017-10-04T11:30:30","modified_gmt":"2017-10-04T11:30:30","slug":"fearless-guide-using-css-grid-today","status":"publish","type":"post","link":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/","title":{"rendered":"A fearless guide to using CSS Grid today"},"content":{"rendered":"<p>My fellow CSS developers,<\/p>\n<p>I know you\u2019ve been burned before with tales of exciting new CSS specifications that won\u2019t be ready to use in production for years. I\u2019m here to tell you, those days are in our past and the brightest example of our future is with CSS Grid! You can absolutely use it now, and in this article, I\u2019ll show you how without much fuss or the need for any external dependencies.<\/p>\n<h3>The backstory: How CSS Grid went from 0 to approximately 70% browser support in under a month<\/h3>\n<p>Before we dive into the &#8220;how&#8221;, let\u2019s better understand a little of the &#8220;why&#8221; Grid is different than the CSS features that have come before.<\/p>\n<p>In early 2017, three major browsers, Firefox, Chrome, and Safari, shipped unprefixed and consistent Grid implementations within weeks of each other. This approach is drastically different from how Flexbox was rolled out, and this was intentional to avoid all the drama we developers have had to deal with (and still have to deal with) around vendor prefixing. Grid was worked on behind browser flags instead of being rolled out with vendor prefixes so it could still be tested, but could not be used on production sites while it was being developed and iterated on. So unlike Flexbox, Grid has been delivered prefix-free and ready to use from the onset&#8230; with one small exception.<\/p>\n<p>The origin of the Grid specification came from Microsoft and this early version has been live in Microsoft browsers with an -ms prefix since Internet Explorer 10 in 2012. The specification has grown considerably since these early days, with new properties and values that were not part of the original specification. The key thing to remember from this is that vendor prefixed Grid properties mean old Microsoft specification, and there are no prefixed versions that exist in any other browsers. Later on, I\u2019ll talk about what that means and how to easily get around it so the old prefixed version does not cause unintentional layout problems.<\/p>\n<h3>A step by step guide to writing CSS Grid<\/h3>\n<p>I have been confidently writing Grid for use in production since November of 2016, before it had shipped in any browser. Here\u2019s how I go about it:<\/p>\n<h4>Identify a good use case for Grid<\/h4>\n<p>Is it worth the hype? What exactly is Grid and what is it good for?<\/p>\n<p>Grid is <em>awesome<\/em>! It can create layouts that we couldn\u2019t achieve with pure CSS before, and it can make layouts we already have much easier to write and maintain without frameworks. This of course, is not going to be the right solution for every problem and it is not a replacement for Flexbox, although it shares a lot of the same traits.<\/p>\n<p>Flexbox is great for laying out elements in one direction.<\/p>\n<p>Either in rows&#8230;<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cssgrids-flexboxflow.jpg\" alt=\"The flow of boxes using Flexbox in rows\" width=\"650\" height=\"350\" class=\"aligncenter size-full wp-image-17178\" \/><\/p>\n<p>&#8230;or columns.<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cssgrids-flexboxcolumns.jpg\" alt=\"The flow of boxes in Flexbox using columns\" width=\"650\" height=\"350\" class=\"aligncenter size-full wp-image-17176\" \/><\/p>\n<p>Grid allows you to layout elements in two directions, columns and rows!<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cssgrids-gridflow.jpg\" alt=\"The flow of boxes using Grid\" width=\"650\" height=\"350\" class=\"aligncenter size-full wp-image-17179\" \/><\/p>\n<p>The major benefit here is that we don\u2019t need elements to depend on each other for placement. We can specify their position on the x and y axis independent of what is around them.<\/p>\n<p>Think of the possibilities! There are already so many terrific resources out there for how to use Grid. Two sites I recommend for in-depth tutorials and examples of Grid are by Jen Simmons at <a href=\"http:\/\/labs.jensimmons.com\/\" target=\"_blank\">labs.jensimmons.com<\/a> and Rachel Andrew at <a href=\"https:\/\/gridbyexample.com\/\" target=\"_blank\">gridbyexample.com<\/a>. Rachel has also created a great guide to getting started: <a href=\"https:\/\/gridbyexample.com\/learn\/\" target=\"_blank\">gridbyexample.com\/learn<\/a>.<\/p>\n<p>Now that we have a bit more history and background, let\u2019s look back at the original question: when should I use Grid? I consider it whenever I would normally reach for a different common layout property: either Flexbox, floats, or positioning, and then play around with Grid to see if I can make it work. What I have found is that most of the time, Grid makes things much more simple and I end up learning a lot about how the new specification works in the process.<\/p>\n<h4>Write Grid code<\/h4>\n<p>Make sure you are working with a browser that supports Grid, which as of this publication is the latest versions of Chrome, Safari, and Firefox, with Edge support coming on 17 October 2017. If you aren\u2019t sure, check <a href=\"http:\/\/caniuse.com\/#feat=css-grid\" target=\"_blank\">Can I Use?<\/a> for a list of supported browsers.<\/p>\n<p>For the rest of this article, we\u2019ll use an example implementation of Grid from a side project of mine, <a href=\"http:\/\/grub-gallery.com\/\" target=\"_blank\" rel=\"nofollow\">Grub Gallery<\/a>, a single page app that displays Foursquare search results as images. <\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/cssgrids-grubgallery.jpg\" alt=\"Screenshot of Grub Gallery, a site designed by Brenda Storer\" width=\"650\" height=\"580\" class=\"aligncenter size-full wp-image-17172\" \/><\/p>\n<p>This is a pretty straight forward use of Grid: display images of equal width and height in rows and columns.<\/p>\n<\/p>\n<p>Here\u2019s the markup we will style (I\u2019ve simplified the markup so we can focus only on what we are working with):<\/p>\n<p><code>&lt;ul class=\"search-results\"&gt;<br \/>\n&lt;li class=\"search-results__result\"&gt;<br \/>\n&lt;img class=\"search-results__photo\" src=\"path-to-image.jpg\"&gt;<br \/>\n&lt;\/li&gt;<br \/>\n&lt;li class=\"search-results__result\"&gt;<br \/>\n&lt;img class=\"search-results__photo\" src=\"path-to-image.jpg\"&gt;<br \/>\n&lt;\/li&gt;<br \/>\n<em>...more &lt;li&gt;s<\/em><br \/>\n&lt;\/ul&gt;<\/code><\/p>\n<p>Here\u2019s the CSS using Grid:<\/p>\n<p><code>.search-results {<br \/>\ndisplay: grid;<br \/>\ngrid-gap: 10px;<br \/>\ngrid-template-columns: repeat(auto-fit, minmax(320px, 1fr));<br \/>\npadding: 10px;<br \/>\n}<\/code><\/p>\n<p>Yes, that\u2019s all we need! Four properties on the parent element to make this layout fully responsive, flexible, and fluid. This code is saying, &#8220;I want the children of <code>.search-results<\/code> to be in a grid with 10px gutters between each element, and 10px around the edge of their container. Each element should be no smaller than 320px, but go ahead and size them larger to fill the width of their container evenly until you can fit another element in the row at 320px.&#8221; <\/p>\n<p>Here\u2019s an article with a more detailed explanation on <a href=\"https:\/\/rachelandrew.co.uk\/archives\/2016\/04\/12\/flexible-sized-grids-with-auto-fill-and-minmax\/\" target=\"_blank\">auto-fit and minmax<\/a>. Rachel Andrew also has a great in-depth <a href=\"https:\/\/gridbyexample.com\/video\/series-the-fr-unit\/\" target=\"_blank\">video tutorial on the fr unit<\/a>.<\/p>\n<h3>Fallback gracefully with CSS <code>@supports<\/code><\/h3>\n<p>We can use <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/@supports\" target=\"_blank\">@supports<\/a> in our CSS to perform a feature query, and wrap our grid code in a rule like this:<\/p>\n<p><code>@supports (display: grid)<br \/>\n.search-results {<br \/>\ndisplay: grid;<br \/>\ngrid-gap: 10px;<br \/>\ngrid-template-columns: repeat(auto-fit, minmax(320px, 1fr));<br \/>\n}<br \/>\n}<\/code><\/p>\n<p>These styles will now only be read by browsers that support the <code>display: grid;<\/code> property. Every browser that supports Grid also supports <code>@supports<\/code>, so if a browser doesn\u2019t know how to read <code>@supports<\/code>, it will ignore what\u2019s inside of it. For this reason, we should make our fallback styles our default CSS styles to cover all cases.<\/p>\n<p>Since you are working in a browser that supports Grid, comment out the Grid styles while you write your fallback styles to be able to test them in your browser, and don\u2019t forget to uncomment them out when you are finished. <\/p>\n<\/p>\n<p>Here is my final code with Flexbox as a fallback and my Grid styles wrapped in an <code>@supports<\/code> rule. Make sure to put your Grid styles after your default fallback styles. This way you can override any styles from the fallback that aren\u2019t needed for Grid. In the following example, I originally didn\u2019t need any styling on the child <code>.search-results__result<\/code> elements with my Grid-only solution, but after writing the fallback, I needed to override the default styles for margin and width. Look at all those media queries I had to add with my fallback that I didn\u2019t need with Grid!<\/p>\n<p><code>.search-results {<br \/>\ndisplay: flex;<br \/>\nflex-wrap: wrap;<br \/>\npadding: 5px;<br \/>\n}<\/code><\/p>\n<p><code>@supports (display: grid) {<br \/>\n.search-results {<br \/>\ndisplay: grid;<br \/>\ngrid-gap: 10px;<br \/>\ngrid-template-columns: repeat(auto-fit, minmax(320px, 1fr));<br \/>\npadding: 10px<br \/>\n}<br \/>\n}<\/code><\/p>\n<p><code>.search-results__result {<br \/>\nmargin: 5px;<br \/>\n}<\/code><\/p>\n<p><code>@media only screen and (min-width: 500px) {<br \/>\n.search-results__result {<br \/>\nwidth: calc(50% - 10px);<br \/>\n}<br \/>\n}<\/code><\/p>\n<p><code>@media only screen and (min-width: 800px) {<br \/>\n.search-results__result {<br \/>\nwidth: calc(33.3333% - 10px);<br \/>\n}<br \/>\n}<\/code><\/p>\n<p><code>@media only screen and (min-width: 1200px) {<br \/>\n.search-results__result {<br \/>\nwidth: calc(25% - 10px);<br \/>\n}<br \/>\n}<\/code><\/p>\n<p><code>@supports (display: grid) {<br \/>\n.search-results__result {<br \/>\nmargin: 0;<br \/>\nwidth: auto;<br \/>\n}<br \/>\n}<\/code><\/p>\n<h3>Considerations with Autoprefixer<\/h3>\n<p>With the above approach, you have all bases covered with a fallback for browsers that don\u2019t support Grid. The <code>@supports (display: grid)<\/code> rule will not apply to browsers that support only the prefixed version of grid (Internet Explorer). However, if you use <a href=\"https:\/\/github.com\/postcss\/autoprefixer\" target=\"_blank\">Autoprefixer<\/a> as a post-processor and you are using the method above, you most likely don\u2019t want it to translate Grid for you. It\u2019s easier to have Internet Explorer rely on your fallback, so you need to make sure that Autoprefixer has Grid disabled.<\/p>\n<p>If you are using Autoprefixer version 7.0 or above, Grid is disabled by default and you don\u2019t have to do anything! If you are using an earlier version of Autoprefixer, either upgrade to version 7.0 or above, or you can set <code>grid: false<\/code> in your Autoprefixer configuration. Where that configuration occurs varies depending on how you are serving it (Webpack, Gulp, Rails, etc). <\/p>\n<h4>Ship It!<\/h4>\n<p>Yes, that\u2019s all! No JavaScript, no polyfills, no frameworks, no fuss, not much extra time to implement. I find it generally takes me longer to write the fallback than to write the Grid code (I told you it was awesome!).<\/p>\n<h3>Super graceful degradation<\/h3>\n<p>In our example, we are accomplishing practically the same layout with Grid or with Flexbox, but that doesn\u2019t have to be the case. CSS doesn\u2019t have to be all or nothing anymore. Let\u2019s push the boundaries forward! We have been conditioned to strive for pixel perfection, but we\u2019ve had the world of responsive design and unlimited device widths to consider for a few years now. I encourage you to optimise for the best experience in modern browsers (right now, over 70% usage globally for Grid and climbing!) and to provide a great, usable experience for the rest.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Brenda Storer gets into the details about CSS Grid, and how, unlike many other CSS specifications, you can start using it today to build elegant and beautiful grid layouts that just work.<\/p>\n","protected":false},"author":2,"featured_media":17175,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,24],"tags":[],"class_list":{"0":"post-17169","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-guest-posts","8":"category-web-design"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A fearless guide to using CSS Grid today - Heart Internet<\/title>\n<meta name=\"description\" content=\"Brenda Storer gets into the details about CSS Grid, and how you can start using it today to build elegant and beautiful grid layouts that just work.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A fearless guide to using CSS Grid today - Heart Internet\" \/>\n<meta property=\"og:description\" content=\"Brenda Storer gets into the details about CSS Grid, and how you can start using it today to build elegant and beautiful grid layouts that just work.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\" \/>\n<meta property=\"og:site_name\" content=\"Heart Internet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/heartinternet\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-04T11:30:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1265\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Eliot Chambers-Ostler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:site\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eliot Chambers-Ostler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\"},\"author\":{\"name\":\"Eliot Chambers-Ostler\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\"},\"headline\":\"A fearless guide to using CSS Grid today\",\"datePublished\":\"2017-10-04T11:30:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\"},\"wordCount\":1428,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg\",\"articleSection\":[\"Guest Posts\",\"Web Design\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\",\"name\":\"A fearless guide to using CSS Grid today - Heart Internet\",\"isPartOf\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg\",\"datePublished\":\"2017-10-04T11:30:30+00:00\",\"description\":\"Brenda Storer gets into the details about CSS Grid, and how you can start using it today to build elegant and beautiful grid layouts that just work.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg\",\"width\":1265,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.heartinternet.uk\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A fearless guide to using CSS Grid today\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/heartblog.victory.digital\/#website\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"name\":\"Heart Internet\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/heartblog.victory.digital\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\",\"name\":\"Heart Internet\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"width\":992,\"height\":252,\"caption\":\"Heart Internet\"},\"image\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/heartinternet\/\",\"https:\/\/x.com\/heartinternet\",\"https:\/\/www.linkedin.com\/company\/heart-internet-ltd\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\",\"name\":\"Eliot Chambers-Ostler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"caption\":\"Eliot Chambers-Ostler\"},\"url\":\"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A fearless guide to using CSS Grid today - Heart Internet","description":"Brenda Storer gets into the details about CSS Grid, and how you can start using it today to build elegant and beautiful grid layouts that just work.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/","og_locale":"en_GB","og_type":"article","og_title":"A fearless guide to using CSS Grid today - Heart Internet","og_description":"Brenda Storer gets into the details about CSS Grid, and how you can start using it today to build elegant and beautiful grid layouts that just work.","og_url":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/","og_site_name":"Heart Internet","article_publisher":"https:\/\/www.facebook.com\/heartinternet\/","article_published_time":"2017-10-04T11:30:30+00:00","og_image":[{"width":1265,"height":500,"url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg","type":"image\/jpeg"}],"author":"Eliot Chambers-Ostler","twitter_card":"summary_large_image","twitter_creator":"@heartinternet","twitter_site":"@heartinternet","twitter_misc":{"Written by":"Eliot Chambers-Ostler","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#article","isPartOf":{"@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/"},"author":{"name":"Eliot Chambers-Ostler","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28"},"headline":"A fearless guide to using CSS Grid today","datePublished":"2017-10-04T11:30:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/"},"wordCount":1428,"commentCount":6,"publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg","articleSection":["Guest Posts","Web Design"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/","url":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/","name":"A fearless guide to using CSS Grid today - Heart Internet","isPartOf":{"@id":"https:\/\/heartblog.victory.digital\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg","datePublished":"2017-10-04T11:30:30+00:00","description":"Brenda Storer gets into the details about CSS Grid, and how you can start using it today to build elegant and beautiful grid layouts that just work.","breadcrumb":{"@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#primaryimage","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2017\/10\/cssgrids-background.jpg","width":1265,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.heartinternet.uk\/blog\/fearless-guide-using-css-grid-today\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.heartinternet.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"A fearless guide to using CSS Grid today"}]},{"@type":"WebSite","@id":"https:\/\/heartblog.victory.digital\/#website","url":"https:\/\/heartblog.victory.digital\/","name":"Heart Internet","description":"","publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/heartblog.victory.digital\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/heartblog.victory.digital\/#organization","name":"Heart Internet","url":"https:\/\/heartblog.victory.digital\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","width":992,"height":252,"caption":"Heart Internet"},"image":{"@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/heartinternet\/","https:\/\/x.com\/heartinternet","https:\/\/www.linkedin.com\/company\/heart-internet-ltd"]},{"@type":"Person","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28","name":"Eliot Chambers-Ostler","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","caption":"Eliot Chambers-Ostler"},"url":"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/"}]}},"_links":{"self":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/17169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/comments?post=17169"}],"version-history":[{"count":0,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/17169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media\/17175"}],"wp:attachment":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media?parent=17169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/categories?post=17169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/tags?post=17169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}