代码之家  ›  专栏  ›  技术社区  ›  Mygod

使用动态宽度居中多行内嵌块

  •  0
  • Mygod  · 技术社区  · 12 年前

    下面是HTML:

    <div>
        <div>
            <div>large test <br /> block #1</div>
            <div>large test <br /> block #2</div>
            <div>large test <br /> block #3</div>
            <div>large test <br /> block #4</div>
            <div>large test <br /> block #5</div>
        </div>
    </div>
    

    以及CSS:

    div {
        background: #f00;
        text-align: center;
    }
    
    div > div {
        display: inline-block;
        margin: auto;
        background: #0f0;
        text-align: left;
    }
    
    div > div > div {
        background: #00f;
        display: inline-block;
    }
    

    测试: http://jsfiddle.net/wnV3H/ 您可以看到,当宽度足够大,可以将所有内容都放在一行中时,效果很好。但是,当内容被包装成两行或更多行时,第二个div采用整个宽度,并且不居中。这样地:

    #1 #2 #3 #4 (blank)
    #5          (blank)
    

    我想要的是:

    (blank) #1 #2 #3 #4 (blank)
    (blank) #5          (blank)
    

    不是这个:

    (blank) #1 #2 #3 #4 (blank)
    (blank)     #5      (blank)
    

    有什么解决办法吗?提前感谢。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Zach Saucier    12 年前

    要做得比目前更好,必须使用javascript。

    基本上,您必须计算 max-width 在父容器中,计算每个子元素的宽度,将子元素的宽度相加,直到达到父容器的最大宽度(移动任何不完全符合下一行的子元素),然后将父容器的宽度设置为刚刚计算的子元素宽度之和

    可以看到演示(使用其他HTML) here ,您可以将该方法应用于您的情况。很可能这是比你想做的更多的工作,你必须接受其间的微小间隙

    另一方面,类有助于组织代码,保持代码整洁,并使其不会在页面上出现类似情况。你应该使用它们