_grid.scss 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. $container-max-width: 112rem !default; // 1120px
  2. .container {
  3. margin: 0 auto;
  4. max-width: $container-max-width;
  5. padding: 0 2rem;
  6. position: relative;
  7. width: 100%;
  8. }
  9. // Using flexbox for the grid, inspired by Philip Walton:
  10. // http://philipwalton.github.io/solved-by-flexbox/demos/grids/
  11. // By default each .column within a .row will evenly take up
  12. // available width, and the height of each .column with take
  13. // up the height of the tallest .column in the same .row
  14. .row {
  15. display: flex;
  16. flex-direction: column;
  17. padding: 0;
  18. width: 100%;
  19. &.row-no-padding {
  20. padding: 0;
  21. &> .column { padding: 0 }
  22. }
  23. &.row-wrap { flex-wrap: wrap }
  24. // Vertically align every .col in the .row
  25. &.row-top { align-items: flex-start }
  26. &.row-bottom { align-items: flex-end }
  27. &.row-center { align-items: center }
  28. &.row-stretch { align-items: stretch }
  29. &.row-baseline { align-items: baseline }
  30. .column {
  31. display: block;
  32. flex: 1 1 auto; // IE 11 requires explicit flex-basis for mobile
  33. margin-left: 0;
  34. max-width: 100%;
  35. width: 100%;
  36. // Column Offset Percent Sizes
  37. &.column-offset-10 { margin-left: 10% }
  38. &.column-offset-20 { margin-left: 20% }
  39. &.column-offset-25 { margin-left: 25% }
  40. &.column-offset-33,
  41. &.column-offset-34 { margin-left: 33.3333% }
  42. &.column-offset-50 { margin-left: 50% }
  43. &.column-offset-66,
  44. &.column-offset-67 { margin-left: 66.6666% }
  45. &.column-offset-75 { margin-left: 75% }
  46. &.column-offset-80 { margin-left: 80% }
  47. &.column-offset-90 { margin-left: 90% }
  48. // Individual Column Percent Sizes
  49. &.column-10 { flex: 0 0 10%; max-width: 10% }
  50. &.column-20 { flex: 0 0 20%; max-width: 20% }
  51. &.column-25 { flex: 0 0 25%; max-width: 25% }
  52. &.column-33,
  53. &.column-34 { flex: 0 0 33.3333%; max-width: 33.3333% }
  54. &.column-40 { flex: 0 0 40%; max-width: 40% }
  55. &.column-50 { flex: 0 0 50%; max-width: 50% }
  56. &.column-60 { flex: 0 0 60%; max-width: 60% }
  57. &.column-66,
  58. &.column-67 { flex: 0 0 66.6666%; max-width: 66.6666% }
  59. &.column-75 { flex: 0 0 75%; max-width: 75% }
  60. &.column-80 { flex: 0 0 80%; max-width: 80% }
  61. &.column-90 { flex: 0 0 90%; max-width: 90% }
  62. // Vertically align an individual .column
  63. .column-top { align-self: flex-start }
  64. .column-bottom { align-self: flex-end }
  65. .column-center { align-self: center }
  66. } // .column
  67. } // .row
  68. // Safari desktop has a `rem` bug, but Safari mobile works
  69. @media (min-width: 20rem) { // (min-width: 40rem)
  70. .row {
  71. flex-direction: row;
  72. margin-left: -1em;
  73. width: calc(100% + 2rem);
  74. .column { margin-bottom: inherit; padding: 0 1rem }
  75. }
  76. } // @media