07-16-flexbox-columns-equalheight.html 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Using flexbox to create equal-height columns</title>
  6. <!-- the base styles and "housekeeping" styles are in here: -->
  7. <link rel="stylesheet" href="css/grid-base.css">
  8. <!-- Modernizr script to detect flexbox support,
  9. which also includes HTML5 shiv,
  10. to help older browsers understand styling
  11. on newer HTML5 elements: -->
  12. <script src="js/modernizr.min.js"></script>
  13. <style>
  14. /* grid styling */
  15. .row {
  16. list-style: none;
  17. padding: 0;
  18. margin: 0 -.6875em;
  19. }
  20. .flexbox .row,
  21. .flexboxtweener .row {
  22. display: -webkit-flex;
  23. display: -ms-flexbox;
  24. display: flex;
  25. }
  26. .row:after {
  27. content: '';
  28. display: block;
  29. clear: both;
  30. }
  31. .row-quartet > * {
  32. width: 25%;
  33. }
  34. .row-trio > * {
  35. width: 33.3333%;
  36. }
  37. .row-wrapping {
  38. font-size: 0;
  39. margin: 0 -11px;
  40. margin: 0 -.6875rem;
  41. }
  42. .flexwrap .row-wrapping {
  43. display: -webkit-flex;
  44. display: -ms-flexbox;
  45. display: flex;
  46. -webkit-flex-wrap: wrap;
  47. -ms-flex-wrap: wrap;
  48. flex-wrap: wrap;
  49. }
  50. .row-wrapping > .col {
  51. float: none;
  52. vertical-align: top;
  53. display: inline-block;
  54. font-size: 16px;
  55. font-size: 1rem;
  56. }
  57. .col {
  58. float: left;
  59. -moz-box-sizing: border-box;
  60. box-sizing: border-box;
  61. padding: 0 .6875em 1.375em;
  62. }
  63. .flexbox .col,
  64. .flexboxtweener .col {
  65. display: -webkit-flex;
  66. display: -ms-flexbox;
  67. display: flex;
  68. -webkit-flex-direction: column;
  69. -ms-flex-direction: column;
  70. flex-direction: column;
  71. }
  72. .flexbox .col > *,
  73. .flexboxtweener .col > * {
  74. -webkit-flex: 1;
  75. -ms-flex: 1 0 auto;
  76. flex: 1;
  77. }
  78. .col:last-child {
  79. float: right;
  80. }
  81. /* content styling */
  82. .subcategory {
  83. margin-top: 1.5em;
  84. border-bottom: 1px solid #8e3339;
  85. }
  86. .subcategory-featured {
  87. width: 50%;
  88. }
  89. .subcategory-content {
  90. width: 80%;
  91. }
  92. .subcategory-header {
  93. width: 20%;
  94. }
  95. .story {
  96. padding: .6875em;
  97. background-color: #eee;
  98. }
  99. .story + .story {
  100. margin-top: 1.375em;
  101. }
  102. .story img {
  103. width: 100%;
  104. }
  105. </style>
  106. </head>
  107. <body>
  108. <header class="masthead">
  109. <div class="wrapper">
  110. <h1>Important News</h1>
  111. </div>
  112. </header>
  113. <nav role="navigation" class="navbar">
  114. <div class="wrapper">
  115. <ul class="navlist">
  116. <li><a href="#">Home</a></li>
  117. <li><a href="#">World</a></li>
  118. <li><a href="#">Local</a></li>
  119. <li><a href="#">Sports</a></li>
  120. </ul>
  121. </div>
  122. </nav>
  123. <main class="wrapper">
  124. <section class="subcategory">
  125. <div class="row">
  126. <header class="col subcategory-header">
  127. <h2>Lorem ipsum</h2>
  128. </header>
  129. <div class="col subcategory-content">
  130. <div class="row row-quartet">
  131. <div class="col subcategory-featured">
  132. <article class="story">
  133. <img src="http://placehold.it/600x300" alt="Dummy image">
  134. <h3><a href="#">Cras suscipit nec leo id.</a></h3>
  135. <p>Autem repudiandae aliquid tempora quos reprehenderit architecto, sequi repellat.</p>
  136. </article>
  137. </div>
  138. <div class="col">
  139. <article class="story">
  140. <img src="http://placehold.it/600x300" alt="Dummy image">
  141. <h3><a href="#">Perferendis, ipsam!</a></h3>
  142. <p>Neque magnam vero obcaecati facere nobis sint dolore accusamus vitae consequuntur ad necessitatibus, laborum molestiae.</p>
  143. </article>
  144. </div>
  145. <div class="col">
  146. <article class="story">
  147. <img src="http://placehold.it/600x300" alt="Dummy image">
  148. <h3><a href="#">Curabitur mattis purus nec velit.</a></h3>
  149. <p>Neque magnam vero obcaecati facere nobis sint dolore accusamus vitae consequuntur ad necessitatibus, laborum molestiae.</p>
  150. </article>
  151. </div>
  152. </div>
  153. <ul class="row row-quartet row-wrapping">
  154. <li class="col">
  155. <div class="story">
  156. <h3><a href="#">Perferendis, ipsam! Dolor sit amet consectetur</a></h3>
  157. </div>
  158. </li>
  159. <li class="col">
  160. <div class="story">
  161. <h3><a href="#">Aliquam mattis eros id posuere.</a></h3>
  162. </div>
  163. </li>
  164. <li class="col">
  165. <div class="story">
  166. <h3><a href="#">Proin leo felis, semper nec</a></h3>
  167. </div>
  168. </li>
  169. <li class="col">
  170. <div class="story">
  171. <h3><a href="#">Aliquam vitae risus tortor. Sed!</a></h3>
  172. </div>
  173. </li>
  174. <li class="col">
  175. <div class="story">
  176. <h3><a href="#">Perferendis, ipsam!</a></h3>
  177. </div>
  178. </li>
  179. <li class="col">
  180. <div class="story">
  181. <h3><a href="#">Aliquam mattis eros id posuere.</a></h3>
  182. </div>
  183. </li>
  184. <li class="col">
  185. <div class="story">
  186. <h3><a href="#">Proin leo felis, semper nec</a></h3>
  187. </div>
  188. </li>
  189. <li class="col">
  190. <div class="story">
  191. <h3><a href="#">Aliquam vitae risus tortor. Sed!</a></h3>
  192. </div>
  193. </li>
  194. </ul>
  195. </div>
  196. </div>
  197. </section>
  198. <section class="subcategory">
  199. <div class="row">
  200. <header class="col subcategory-header">
  201. <h2>Dolor sit amet</h2>
  202. </header>
  203. <div class="col subcategory-content">
  204. <div class="row row-trio">
  205. <div class="col">
  206. <article class="story">
  207. <img src="http://placehold.it/600x300" alt="Dummy image">
  208. <h3><a href="#">Ut sit amet mi massa</a></h3>
  209. <p>Neque magnam vero obcaecati facere nobis sint dolore accusamus vitae consequuntur ad necessitatibus, laborum molestiae.</p>
  210. </article>
  211. </div>
  212. <div class="col">
  213. <article class="story">
  214. <h3><a href="#">Nunc mollis sit amet nunc</a></h3>
  215. <p>Neque magnam vero obcaecati facere nobis sint dolore accusamus vitae consequuntur ad necessitatibus, laborum molestiae.</p>
  216. </article>
  217. <article class="story">
  218. <h3><a href="#">Duis sed ante enim. Cras</a></h3>
  219. <p>Neque magnam vero obcaecati facere nobis sint dolore accusamus vitae consequuntur ad necessitatibus, laborum molestiae.</p>
  220. </article>
  221. </div>
  222. <div class="col">
  223. <article class="story">
  224. <img src="http://placehold.it/600x300" alt="Dummy image">
  225. <h3><a href="#">Animi, explicabo, ipsum</a></h3>
  226. <p>Neque magnam vero obcaecati facere nobis sint dolore accusamus vitae consequuntur ad necessitatibus, laborum molestiae.</p>
  227. </article>
  228. </div>
  229. </div>
  230. </div>
  231. </div>
  232. </section>
  233. </main>
  234. </body>
  235. </html>