How to create Full Screen Responsive Image Gallery using CSS and Masonry
Html 20-Feb-2017

How to create Full Screen Responsive Image Gallery using CSS and Masonry

In this tutorial I am going to show you how to create a full screen responsive image gallery using CSS and Masonry ( is a JavaScript grid layout library ), I am giving you image gallery example but you can create your blog posts, user profiles, video wall etc using this technique so we are giving you this tutorial with a nice demo and source to download for free.

Step 1:

Create a grid and add images with different sizes.

<div id="container">
    <div class="grid-sizer"></div>
    <div class="item">
        <img src="http://placekitten.com/650/450" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/650/750" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1650/1250" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/850/450" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/900/700" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/700/1400" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1200/1300" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/750/650" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1600/900" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/700/400" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1100/1200" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/800/1100" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/600/400" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1100/900" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1320/1200" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
    <div class="item">
        <img src="http://placekitten.com/1024/768" class="image">
        <a class="onhandover" href="#">
            <h3 class="title">Your Image Title</h3>
            <div class="description">
                <p>
                    Description Goes here!!
                </p>
            </div>
        </a>
    </div>
</div>

Above markup create images grid with title and description with images placeholder for fast images delivery http://placekitten.com/1024/768 placekitten.com is A quick and simple service for getting pictures of kittens for use as placeholders in your designs or code.

CSS to organize your gallery:

<style>
.item {
    float: left;
    position: relative;
    line-height: 1em;
}

.grid-sizer { width: 20%; }
.item { width: 20%; }

@media screen and (max-width: 1224px) {
  /* 10 columns for larger screens */
  .grid-sizer { width: 33.33%; }
  .item { width: 33.33%; }
}

@media screen and (max-width: 720px) {
  /* 10 columns for larger screens */
  .grid-sizer { width: 50%; }
  .item { width: 50%; }
}

@media screen and (max-width: 480px) {
  /* 10 columns for larger screens */
  .grid-sizer { width: 100%; }
  .item { width: 100%; }
}

.image{
    max-width: 100%;
    margin: 0;
    display: block;
}

.image:after {
    clear:both;
}

.onhandover {
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,0.5);
    position: absolute;
    top: 0;
    left: 0;
    text-decoration: none;
    color: #fff;
    display: none;
}

.onhandover .title {
    text-align: center;
    font-size: 30px;
}

.onhandover .description {
    position: absolute;
    bottom: 0;
    left: 0;
    background-color: rgba(0,0,0,0.80);
    width: 100%;
    margin: 0;
}

.onhandover .description p {
    text-align: center;
}

.item:hover .onhandover {
    display: block;
}
</style>

We used @media for different screens to make gallery responsive and .onhandover class to show title and description oh handover event.

jQuery files to Include:

<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="http://demo.phpgang.com/full-screen-image-gallery-css-masonry/masonry.pkgd.min.js"></script>

Initialize Masonry using the following:

<script type="text/javascript">
$(window).load( function() {

    $("#container").masonry({
        "itemSelector": ".item",
        "columnWidth": ".grid-sizer",
    });

});
</script>

That’s all for today’s tutorial I hope you like this tutorial please don’t forget to give us your feedback and share with your friends.