【问题标题】:Robustly keeping two divs vertically separated稳健地保持两个 div 垂直分离
【发布时间】:2017-11-10 02:07:19
【问题描述】:

确保图像和文本以完全响应的方式彼此垂直分离的规范方法是什么?

看看这个:

通过将图像和文本放在单独的divs 中,指定width 并确保display:block-inline,我可以创建以下内容:

但这并不是完全响应。如何?例如,对于非常小的尺寸(我必须支持的尺寸),图像和文本会相互碰撞,如下所示:

必须有一种方法可以使它们沿任何屏幕尺寸垂直分开。也许我应该使用表格?

请提供一个说明性示例,最好使用支持良好的 CSS 2.1 属性,因为我必须满足的大量客户是不支持 CSS3 或 JS 的 Opera Mini 浏览器。


我的代码是:

<div style="background-color:#E1F5FE;border-radius:10px;padding:10px;overflow:hidden;">
    <div style="width:20%;display:inline-block;">
        <img src="X.png">
    </div>
    <div style="width:80%;display:inline-block;float:right;text-align:center;">
        Lorem ipsum dolor sit amet, ex eam nulla veritus abhorreant, magna vocent molestiae ea pri, ut eos tritani incorrupte
    </div>
</div>

这是对类似SO question 给出的答案的变体。它并没有真正解决我的问题。

【问题讨论】:

    标签: html css


    【解决方案1】:

    只需为图片添加width:100%

    但是检查整个css,在小屏幕上最好将div显示在彼此下方

    .main{
      background-color:#E1F5FE;
      border-radius:10px;
      padding:10px;
      overflow:hidden;
    }
    .main > div{
      display:inline-block;
      float:left;
      text-align:center;
    }
    .imgDiv{
      width:20%;
    }
    .textDiv{
      width:80%;
    }
    .imgDiv > img{
      width:100%;
    }
    
    @media screen and (max-width: 450px) {
      .imgDiv{
        margin: 0 0 20px 25%;
        width:50%;
      }
      .textDiv{
        width:100%;
      }
    }
    <div class="main">
      <div class="imgDiv">
          <img src="https://pbs.twimg.com/profile_images/839721704163155970/LI_TRk1z_400x400.jpg" style="width:100%">
      </div>
      <div class="textDiv">
          Lorem ipsum dolor sit amet, ex eam nulla veritus abhorreant, magna vocent molestiae ea pri, ut eos tritani incorrupte
      </div>
    </div>

    【讨论】:

    • 检查我更新的答案。为小屏幕添加了一个 CSS,其中 div 将位于彼此下方。更人性化
    • 这个问题是,它不尊重图像的纵横比,随着视口的变化而拉伸和倾斜。
    【解决方案2】:

    这是一个使用flexflex-wrap: wrap 来处理响应式大小的解决方案。在小尺寸时,图标和文本将垂直堆叠,而在较大尺寸时,图标和文本将水平对齐。

    Flex has great support these days,即使是你提到的浏览器。

    .main {
      display: flex;
      flex-wrap: wrap;
      flex-direction: row;
    }
    
    .imgDiv {
      flex: 1 1;
      min-width: 80px;
      text-align: center;
      
    }
    
    .imgDiv > img {
      width: 80%;
      height: auto;
      max-width: 150px;
      line-height: 0px;
    }
    
    .textDiv {
      flex: 1 1 250px;
      display: flex;
    }
    
    .textDiv > p {
      flex: 1 0 0px;
      padding: 0;
      margin: 0;
      align-self: center;
    }
    <div class="main">
      <div class="imgDiv">
          <img src="https://pbs.twimg.com/profile_images/839721704163155970/LI_TRk1z_400x400.jpg">
      </div>
      <div class="textDiv">
        <p>Lorem ipsum dolor sit amet, ex eam nulla veritus abhorreant, magna vocent molestiae ea pri, ut eos tritani incorrupte</p>
      </div>
    </div>

    【讨论】:

    • “歪斜”是什么意思?我让它在较小的屏幕上使图像居中,但这很容易被删除。
    • 我的意思是它会拉伸图像,但不会保持纵横比不变。
    • 你在哪个浏览器上看到这个?
    • 55.0.2 Mozilla Firefox for Ubuntu
    • 使.textDiv 成为flex 容器并将align-self 添加到p 标签也可以。
    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多