【问题标题】:css: horizontally center floated image gallerycss:水平居中浮动图片库
【发布时间】:2012-11-21 15:16:25
【问题描述】:

我有一个类似于画廊的带有文本内容的块项目列表。使用 display: table* stuff 将文本内容与底部对齐。该列表不是固定宽度,因为它通过创建更多列扩展到视口宽度。我想使列表在屏幕上居中,这样底行仍将与所有其他行的左侧对齐(我无法弄清楚如何使用内联块的原因之一)。示例:

<!doctype html>
<html>
    <head>
        <title>test</title>
        <style>
            ul{
                margin: 0;
                padding: 0;
                list-style: none;
            }
            ul:after{
                display: block;
                clear: both;
                content: ' ';
            }
            li{
                display: table;
                float: left;
                border: 1px solid red;
                width: 300px;
                height: 300px;
            }
            .gridRow{
                display: table-row;
            }
            .gridCell{
                display: table-cell;
                vertical-align: bottom;
            }
        </style>
    </head>
    <body>
        <ul>
            <li><span class="gridRow"><span class="gridCell">1</span></span></li>
            <li><span class="gridRow"><span class="gridCell">2</span></span></li>
            <li><span class="gridRow"><span class="gridCell">3</span></span></li>
            <li><span class="gridRow"><span class="gridCell">4</span></span></li>
            <li><span class="gridRow"><span class="gridCell">5</span></span></li>
            <li><span class="gridRow"><span class="gridCell">6</span></span></li>
            <li><span class="gridRow"><span class="gridCell">7</span></span></li>
            <li><span class="gridRow"><span class="gridCell">8</span></span></li>
            <li><span class="gridRow"><span class="gridCell">9</span></span></li>
            <li><span class="gridRow"><span class="gridCell">10</span></span></li>
            <li><span class="gridRow"><span class="gridCell">11</span></span></li>
            <li><span class="gridRow"><span class="gridCell">12</span></span></li>
            <li><span class="gridRow"><span class="gridCell">13</span></span></li>
            <li><span class="gridRow"><span class="gridCell">14</span></span></li>
            <li><span class="gridRow"><span class="gridCell">15</span></span></li>
            <li><span class="gridRow"><span class="gridCell">16</span></span></li>
            <li><span class="gridRow"><span class="gridCell">17</span></span></li>
            <li><span class="gridRow"><span class="gridCell">18</span></span></li>
            <li><span class="gridRow"><span class="gridCell">19</span></span></li>
        </ul>
    </body>
</html>

【问题讨论】:

    标签: css


    【解决方案1】:

    你需要给 UL 一个宽度,或者把它放在一个包含宽度和 "overflow:auto;" 的元素中。

    宽度可以是 px 或 %。

    然后给容器一个边距“margin:0 auto;”

    然后您只需将 LI 元素设置为“display:inline-block;”或者给他们“float:left;”

    示例:http://jsfiddle.net/jDqbJ/1/

    .container {
     width:75%;
     overflow:auto;
     margin:0 auto;
    }
    
    .container ul li {
     float:left;width:75px;
     height:75px;
     background:#ccc;
     margin:0 10px 20px 0;
    }
    

    【讨论】:

    • 请注意,在您的示例中,当容器扩展至 100% 或将框设为 300 像素宽时会发生什么。列表的“宽度”应该是列表的表观宽度,基于适合视口的列数。因此,在我的示例中,如果视口为 900-1199 像素宽,则列表将为 900 像素宽,然后以 900-1199 像素空间为中心。我可以对每个可以想象的断点使用媒体查询来执行此操作,然后边距自动会起作用,但这会很烦人。
    • 我认为您需要一个基于 javascript 的解决方案。
    • 该死。那就走媒体查询路线,不用担心 IE8- 是否左对齐。如果我们使用预处理器,我可以很容易地输出一堆断点,但由于它是纯 CSS,我最多使用 6 列
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2010-11-06
    • 2011-10-15
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多