Responsive thumbnail grid equal spacing

后端 未结 1 500
我寻月下人不归
我寻月下人不归 2020-12-21 21:23

I have a grid of thumbnails:

.thumbnail-container {
          border: 1px solid red;
          float: left;
          width: 25%; (depending on screen size)
         


        
相关标签:
1条回答
  • 2020-12-21 22:14

    I made this responsive grid that does what you need using CSS. It uses media queries and nth-child().

    The horizontal and vertical margins are equal.

    FIDDLE

    It shows you can use calculation to position grid elements with equal margins between each other. The margin between elements and window is also the same.

    Code for screens wider than 751px isn't written yet though but you get the idea. Here is the code :

    HTML :

    <div id="container">
        <div class="wrap">
            <div class="foto">1</div>
        </div>
        <div class="wrap">
            <div class="foto">2</div>
        </div>
        <div class="wrap">
            <div class="foto">3</div>
        </div>
        ... And so on ...
    </div>
    

    CSS :

    html, body {
        margin:0;
        padding:0;
        min-width:150px;
    }
    .wrap {
        float:left;
        position:relative;
    }
    .foto {
        width: 150px;
        height: 150px;
        background: gold;
        position:absolute;
    }
    
    #warning{display:none;}
    @media screen and (min-width: 631px) {
        .wrap {
            width:20%;
            padding-bottom:25%;
        }
        .wrap:nth-child(4n+2), .wrap:nth-child(4n+3){
    
        }
        .wrap .foto {
            top:-75px;
            margin-top:100%;
            right:-30px;
        }
        .wrap:nth-child(4n+2){
            margin:0 5% 0 7.5%;
        }
        .wrap:nth-child(4n+3){
         margin-right:7.5%;
        }
        .wrap:nth-child(4n+2) .foto{
            left:50%;
            margin-left:-75px;
        }
        .wrap:nth-child(4n+3) .foto{
            right:50%;
            margin-right:-75px;
        }
        .wrap:nth-child(4n) .foto{
            left:-30px;
        }   
        #container{
            margin-top:-45px;
        }
    }
    
    @media screen and (min-width: 481px) and (max-width: 631px) {
        .wrap {
            width:25%;
            padding-bottom:33.3%;
        }
        .wrap:nth-child(3n+2){
            margin:0 12.5%;        
        }
        .wrap .foto {
            top:-75px;
            margin-top:100%;
            right:-37px;
        }
         .wrap:nth-child(3n+2) .foto{
            left:50%;
            margin-left:-75px;
        }
         .wrap:nth-child(3n) .foto{
            left:-37px;
        }
        #container{
            margin-top:-37px;
        }
    }
    
    
    @media screen and (min-width: 331px) and (max-width: 480px) {
        .wrap {
            width:33.3%;
            padding-bottom:50%;
            clear:left;
        }
        .wrap:nth-child(even) {
            float:right;
            clear:right;
        }
        .wrap .foto {
            top:-75px;
            margin-top:100%;
            right:-50px;
        }
        .wrap:nth-child(even) .foto {
            left:-50px;
        }
        .wrap:nth-child(4n+3) .foto, .wrap:nth-child(4n+4) .foto {
            bottom:-75px;
            margin-bottom:100%;
        }
        #container{
            margin-top:-25px;
        }
    }
    
    
    @media screen and (max-width: 330px) {
        .wrap {
            width:50%;
            padding-bottom:100%;
            clear:left;
        }
        .wrap:nth-child(odd) .foto {
            right:-75px;
            bottom:0;
            bottom:-75px;
            margin-bottom:100%;
        }
        .wrap:nth-child(even) .foto {
            top:0px;
            right:-75px;
            top:-75px;
            margin-top:100%;
        }
    }
    
    @media screen and (min-width: 751px) {
        #warning{
            color:#fff;
            display:block;
            position:fixed;
            width:100%;
            height:50%;
            top:25%;
            left:0;
            background:#000;
            text-align:center;
            font-size:30px;
    }
    
    0 讨论(0)
提交回复
热议问题