Search code examples
htmlcss

Permanent 2x3 CSS image gallery


I have a very basic image gallery how can I fix it to be 3 columns by 2 rows

This is the HTML code

<div id="gallery">
    <div class="img">
        <a target="_blank" href="klematis_big.htm"> <img src="../zeela/img/image_1.png" alt="Klematis" /> </a>
        <div class="descHead">
            כותרת
        </div>
        <div class="desc">
            Add a description of the image here
        </div>
    </div>
    <div class="img">
        <a target="_blank" href="klematis2_big.htm"> <img src="../zeela/img/image_1.png" alt="Klematis" /> </a>
        <div class="descHead">
            כותרת
        </div>
        <div class="desc">
            Add a description of the image here
        </div>
    </div>
    <div class="img">
        <a target="_blank" href="klematis3_big.htm"> <img src="../zeela/img/image_1.png" alt="Klematis" /> </a>
        <div class="descHead">
            כותרת
        </div>
        <div class="desc">
            Add a description of the image here
        </div>
    </div>
    <div class="img">
        <a target="_blank" href="klematis4_big.htm"> <img src="../zeela/img/image_1.png" alt="Klematis" /> </a>
        <div class="descHead">
            כותרת
        </div>

        <div class="desc">
            Add a description of the image here
        </div>

    </div>
    <div class="img">
        <a target="_blank" href="klematis4_big.htm"> <img src="../zeela/img/image_1.png" alt="Klematis" /> </a>
        <div class="descHead">
            כותרת
        </div>
        <div class="desc">
            Add a description of the image here
        </div>

    </div>
    <div class="img">
        <a target="_blank" href="klematis4_big.htm"> <img src="../zeela/img/image_1.png" alt="Klematis" /> </a>
        <div class="descHead">
            כותרת
        </div>
        <div class="desc">
            Add a description of the image here
        </div>

    </div>

</div>

and this is the CSS code

#gallery{
    
}
div.img {
    margin: 2px;
    height: auto;
    width: auto;
    float: right;
}
div.img img {
    width: 200px; /* what is the img size*/
    height: 200px;
    display: inline;
    margin-left: 30px;
    margin-right: 30px;
    margin-bottom: 20px;
    border: 1px solid #ffffff;
}

/*
 div.img a:hover img {
 border: 1px solid #0000ff;
 }*/
div.desc {
    text-align: center;
    font-weight: normal;
    width: 120px;
    margin: 30px;
}
.descHead {
    margin-right: 30px;
    margin-top: 20px;
    margin-bottom: 15px;
    font-family: Tahoma;
    font-size: 24px;
    color: #323232;
}

.desc {
    margin-right: 30px !important;
    margin-bottom: 40px !important;
    font-family: Tahoma;
    font-size: 14px;
    color: #323232;
}

Solution

  • If you cannot alter the HTML, this will do it:

    .gallery {
        width: /* ((width of .image including padding/margin) * 3) */
        overflow: hidden;
        margin: /* top: 0, right: 0, bottom: -(size of .image's bottom margin), left: -(size of .image's left margin) */
        /*
        yes, that's right, the left/bottom margins are negative, but it's purely presentational
        for left floated .image, replace right with left
        */
    }
    

    Otherwise, using the CSS display properties will work.

    Should also point out that section/heading/paragraph tags are probably more appropriate than meaningless div tags. Alternately, the figure/figcaption collection might also be appropriate:

    http://html5doctor.com/the-figure-figcaption-elements/