【问题标题】:How to stack three divs horizontally in parent div with fluid proportions and position each child div individually?如何以流畅的比例在父 div 中水平堆叠三个 div 并单独定位每个子 div?
【发布时间】:2012-12-23 22:12:04
【问题描述】:

我正在寻找三个 div 并将它们水平堆叠(彼此相邻)在包含 div 中。这个包含 div 的宽度是可变的,因此当浏览器缩小时(这是针对响应式设计的),三个子 div 会按比例缩放。此外,三个子 div 必须单独定位,使最左边的 div 在左侧,中间的 div 居中,最右边的 div 一直到包含 div 的右侧。

我尝试通过将容器 div 设置为 display: table 并将三个子 div 设置为 display: table-cell 来实现这一点——这很好用,除了我无法将三个子 div 定位在我上面描述的方式。我在父 div 上尝试了边框间距;但是,这不符合我的目标。

这是我的 Fiddle 代码:http://jsfiddle.net/mkerny45/97mt7/7/

所需结果的屏幕截图:http://d.pr/i/KUfd (在这里您将看到三个子 div:包含 div 中的左、中、右。左右 div 分别一直到左侧/右侧,中心 div 位于包含 div 的中心。边距也是在照片中描绘。我希望整个包含 div 和子 div 按比例缩小,并让子 div 始终保持在适当的位置。)

代码

<div class="articles">
  <article>
    <img src="http://placehold.it/380x214/000000&text=Left" />
  </article>

  <article>
    <img src="http://placehold.it/380x214/3D6AA2&text=Middle" />
  </article>

  <article>
    <img src="http://placehold.it/380x214/98BD56&text=Right" />
  </article>
</div>

【问题讨论】:

    标签: html css responsive-design fluid-layout


    【解决方案1】:

    您可以使用 text-align:justify 来实现此目的,以使 div 的间距均匀,使它们与边缘齐平。然后你添加一个宽度为 100% 的 span 类来强制包装器的宽度。

    演示 -> http://jsfiddle.net/spUKQ/2/

    HTML

    <div id="container">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
        <span class="stretch"></span>
    </div>
    

    CSS

    #container {
        border: 2px dashed #444;
        height: 125px;
    
        text-align: justify;
        -ms-text-justify: distribute-all-lines;
        text-justify: distribute-all-lines;
    
        /* just for demo */
        min-width: 612px;
    }
    
    .box1, .box2, .box3 {
        width: 150px;
        height: 125px;
        vertical-align: top;
        display: inline-block;
        *display: inline;
        zoom: 1
    }
    .stretch {
        width: 100%;
        display: inline-block;
        font-size: 0;
        line-height: 0
    }
    
    /* just for demo */
    .box1, .box3 {
        background: #ccc
    }
    .box2 {
        background: #0ff
    }
    

    【讨论】:

    • 请链接到original answer,其中包含相当多的额外信息(也在 cmets 中)。谢谢!
    • 抱歉找不到链接,刚刚保存了一个页面
    • @reekogi - 如何让图像按比例缩放?我实现了您的代码并且它正在工作,除了当图像相互碰撞时它们会下降到另一行而不是按比例缩小。
    • 使用百分比并添加 display:block;宽度:100%;到图像 -> jsfiddle.net/spUKQ/4 拖动结果窗口大小以查看它的实际效果
    • @reekogi - 这是 CSS3 属性 Flexbox 试图解决的问题,即使浏览器对此的支持非常有限?
    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 2012-08-09
    • 2013-12-14
    • 2017-08-14
    • 2011-10-13
    • 1970-01-01
    • 2019-08-25
    • 2012-05-02
    相关资源
    最近更新 更多