1

I am trying to achieve and Masonry like layout with flexbox only.

i figured i would need to use a mix of columns and rows, but what i cant achieve is that the elements will all have the same distance (like stacked) below and above each other, as well as the second element in the first row wont align towards the first...is it even possible to achieve it without js? Thanks a lot

**

UPDATE:

**

I managed to pull the middle and right column up in the second row, so its just the second element that needs to be aligned with the middle column....so i guess js is not really neded

http://codepen.io/HendrikEng/pen/PpzYqM?editors=1100

This is how it should look:

enter image description here

HTML

<section>
  <div class="c-team-tiles">
    <div class="c-team-row">
      <figure class="c-team-tile">
        <div class="u-margin-bottom c-team-tile__img">
          <img src="http://placehold.it/390x590" alt="">
        </div>
        <figcaption class="c-image-tile__cpt">
          <h4 class="u-margin-bottom-tiny">Name</h4>
          <p class="u-margin-bottom-tiny">Position</p>
        </figcaption>
      </figure>
      <figure class="c-team-tile">
        <div class="u-margin-bottom c-team-tile__img">
          <img src="http://placehold.it/590x390" alt="">
        </div>
        <figcaption class="c-image-tile__cpt">
          <h4 class="u-margin-bottom-tiny">Name</h4>
          <p class="u-margin-bottom-tiny">Position</p>
        </figcaption>
      </figure>
    </div>
    <div class="c-team-row">
      <div class="c-team-column">
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x330" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x590" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x590" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x590" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>

      </div>
      <div class="c-team-column">
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x590" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x330" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x420" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x330" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x330" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
      </div>
      <div class="c-team-column">
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x450" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x330" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x590" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x330" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
        <figure class="c-team-tile">
          <div class="u-margin-bottom c-team-tile__img">
            <img src="http://placehold.it/390x450" alt="">
          </div>
          <figcaption class="c-image-tile__cpt">
            <h4 class="u-margin-bottom-tiny">Name</h4>
            <p class="u-margin-bottom-tiny">Position</p>
          </figcaption>
        </figure>
      </div>

    </div>
  </div>
</section>

CSS

* {
  margin: 0;
  padding: 0;
}

.c-team-row {
  align-content: stretch;
  align-items: stretch;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
}

.c-team-coumn {
  align-content: stretch;
  align-items: stretch;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  justify-content: space-between;
}

.c-team-tile {
  align-self: auto;
  flex: 0 1 auto;
  order: 0;
}
HendrikEng
  • 654
  • 1
  • 10
  • 32
  • http://stackoverflow.com/q/34480760/3597276 – Michael Benjamin Mar 03 '17 at 19:28
  • @Michael_B Let's give the author of the [`Pinterest layout script`](http://stackoverflow.com/a/7128902/1891677) script the credits on this one. – tao Mar 03 '17 at 19:34
  • 1
    @AndreiGheorghiu, you should post that link in the other question, where it would be more relevant. – Michael Benjamin Mar 03 '17 at 19:36
  • thanks guys, i came super close with flexbox only, the only thing was the second element, thats why i thought i wont need a masonry js, and i could maybe just pull the two columns below up with negative margin. – HendrikEng Mar 03 '17 at 20:04

0 Answers0