【问题标题】:Floating divs inside inline-block parent goes down on resize内联块父级中的浮动 div 在调整大小时下降
【发布时间】:2017-04-26 13:07:00
【问题描述】:

我有 2 个浮动 div,inner-leftinner-right 在父容器 inner-container 内。

inner-container 设置为 display: inline-block; 使其宽度等于其子项的宽度。

问题是,当我调整窗口大小时,inner-right div 下降,然后才开始调整自身大小。

我如何inner-right 使其与inner-left 保持在同一行,并且在调整窗口大小的情况下调整大小而不是缩小?

HTML:

<div class="container">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    <div class="inner-container">
        <div class="inner-left"><img src="http://placehold.it/100x100" alt=""></div>
        <div class="inner-right"><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In justo orci, rutrum nec feugiat sed, ultrices non dolor. Aliquam laoreet.</strong><br>
    Vivamus purus metus.
        </div>
    </div>
</div>

CSS:

.container {
    background-color: #f0fff0;
    padding: 10px;
    border: 1px solid #bce2c1;
    border-radius: 5px;
}

.inner-container {
    padding: 10px;
    background-color: #ffffff;
    border: 1px solid #bce2c1;
    border-radius: 5px;
    margin-top: 10px;
    display: inline-block;
}

.inner-left {
    float:left;
    width: 60px;
}

.inner-left img {
    height: 60px;
    width: 60px;
}

.inner-right {
    float:right;
    text-align: left;
    padding-left: 10px;
}

JSFIDDLE:

https://jsfiddle.net/acidonyx/naw6ojwe/4/

【问题讨论】:

    标签: html css responsive-design css-float


    【解决方案1】:

    为此,您应该使用flexbox,这里使用inline-flex 来满足您的要求

    .container {
      display: inline-block;
      background-color: #f0fff0;
      padding: 10px;
      border: 1px solid #bce2c1;
      border-radius: 5px;
    }
    .inner-container {
      display: inline-flex;
      padding: 10px;
      background-color: #ffffff;
      border: 1px solid #bce2c1;
      border-radius: 5px;
      margin-top: 10px;
    }
    .inner-left img {
      height: 60px;
      width: 60px;
    }
    .inner-right {
      padding-left: 10px;
    }
    <div class="container">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      <div class="wrap-container">
        <div class="inner-container">
    
          <div class="inner-left">
            <img src="http://placehold.it/100x100" alt="">
          </div>
    
          <div class="inner-right"><strong>Lorem ipsum dolor sit</strong>
            <br>Vivamus purus metus.
          </div>
    
        </div>
      </div>
    </div>

    【讨论】:

    【解决方案2】:

    只需从.inner-right 中删除float: right 即可解决您的问题。

    .inner-right {
        text-align: left;
        padding-left: 10px;
    }
    

    要解决您的其他问题,您可以这样做

    .inner-right {
        overflow: hidden;
        text-align: left;
        padding-left: 10px;
    }
    

    【讨论】:

    • 它几乎是我需要的,但由于某种原因,inner-right 中的第一行(粗体)正在接近结尾(在 jsfiddle 中的“Aliquam”一词之后)并且没有一直延伸向右。 - jsfiddle.net/acidonyx/naw6ojwe/5
    • 给内部容器一个 100% 的宽度 .. 和 box-sizing:border-box... 一个更酷的解决方案是给溢出:隐藏到 .inner-right
    【解决方案3】:

    您可以尝试将.inner-right 浮动到左侧,并以百分比值设置宽度,如下所示:

    .inner-right {
        float:left;
        width: 85%;
    }
    

    JSFIDDLE

    您可以根据需要使用媒体查询来更新百分比。

    【讨论】:

    • 在 Jsfiddle 中右内的第一行(粗体)正在接近末尾(在 jsfiddle 中的单词“ultrices”之后)并且没有一直延伸到右侧。只要container 的宽度允许,我需要该行默认保留为一行。
    猜你喜欢
    • 1970-01-01
    • 2016-02-13
    • 2017-02-14
    • 2013-08-16
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多