代码之家  ›  专栏  ›  技术社区  ›  Rupert Madden-Abbott

均匀地放置图片库

  •  3
  • Rupert Madden-Abbott  · 技术社区  · 15 年前

    我有一个图片库,每个图片都有相同的宽度和高度,比如10px。我希望它们之间有一定的间隔,这样每行有5个,并且每5个都是分开的,在所有的边上。容器分区有5px的填充物。有多行!

    我的问题是,如果我给每个图像留5倍的左边距,那么:

    a)容器分区的大小适合,因此只有4个图像适合一行,因为五分之一的边距将其分流到下一行。

    b)容器DIV的尺寸额外增加了5px,导致每行末尾有一个额外的间隙。

    我应该如何设计我的图像的样式,使它们都适合正确的行,并且没有任何难看的间隙 不改变容器填充 ?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Strelok    15 年前

    您希望在图像分隔符上有右下边距,在容器分隔符上有左上边距。

    CSS:

    .container {
        padding: 5px 0 0 5px;
        background-color: green;
        width: 75px;
        position: relative;
        overflow: hidden;
    }
    
    .image {
        margin-right: 5px;
        margin-bottom: 5px;
        float:left;
        width:10px;
        height:10px;
        background-color: red;
    }
    

    HTML:

    <div class="container">
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
        <div class="image"></div>
    </div>​
    

    实际检查: http://jsfiddle.net/RP9Cg/

    我刚刚重新阅读了你的问题,我看到了“没有改变容器的填充物”的一点。如果容器的所有侧面都必须有5px的填充(不确定原因,也许可以这样说),则需要为每行最后一个图像和库最后一行的所有图像添加一些额外的样式。查看可能的解决方案: http://jsfiddle.net/T3HrJ/

        2
  •  0
  •   anthr    15 年前

    我自己对HTML&css还是相当陌生,尽管当我想这样做时,我包括

            text-align:center;
    

    在该分区的CSS文件中,这似乎有效。值得一试!

        3
  •  0
  •   babtek    15 年前

    在用于生成图像标记的任何代码循环中,都可以使用modulo运算符为每个图像分配一个列索引的CSS类。然后在样式中,您可以执行一些操作,例如关闭第一个“列”中每个图像的左边距。

    循环输出的伪代码:

    for ( $i=0; $i<gallerySize; $i++ ) {
        echo '<img class="galleryimage gridcolumn' . ($i%5) . '" src="blahblah.gif">';
    }
    

    然后,您可以使用这样的CSS规则更改每行中的第一项:

    img.galleryimage { margin: 5px; }
    img.gridcolumn0 { margin-left: 0px; }