【问题标题】:Responsive Media Card Image on left, text on right响应式媒体卡图像在左侧,文本在右侧
【发布时间】:2020-12-03 18:12:06
【问题描述】:

这是我当前的代码in jsfiddle

<div class="card-container">
  <div class="float-layout">
    <div class="card-image">
      <img src="https://images.pexels.com/photos/534151/pexels-photo-534151.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260">
      <div class="card">
        <div class="card-title">Title</div>
        <div class="card-desc">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce ullamcorper
          mollis tempus. Mauris eu maximus lectus, eu auctor justo. Aenean porta purus
          vel commodo consequat.
        </div>
      </div>
    </div>
  </div>
</div>
.float-layout {
  padding: 5px 5px;
  float: left;
  width: 100%;
  height: auto;
  box-sizing: border-box;
  margin: 0;
}

.card-container {
  overflow: hidden;
}

.card {
  background-color: dodgerblue;
  color: black;
  height: 100%;
  width: 50%;
  float: right;
}

.card-title {
  font-size: 30px;
  text-align: center;
  font-weight: bold;
  padding-top: 20px;
}

.card-desc {
  padding: 10px;
  text-align: left;
  font-size: 18px;
}

div.card-image img {
  width: 50%;
  height: auto;
}

/* Phone Devices Query */
@media only screen and (max-width: 37.5em) {
  div.card-image img {
    width: 100%;
    height: auto;
  }

  .card {
    width: 100%;
    margin-top: -4px;
  }
}

我不确定是否需要 clearfix hack 来解决这个问题,但是当我调整浏览器窗口时,媒体卡的右侧(包含标题和描述)无法与图像所在的左侧正确缩放放。我希望它们都以相同的高度和大小进行响应式缩放。

为了更好地理解,我当前的代码如下所示: https://i.stack.imgur.com/xebaE.png

我希望它以相同的高度缩放,当我将浏览器窗口调整为任意大小时,像这样响应: https://i.stack.imgur.com/IkXok.png

【问题讨论】:

    标签: html css responsive-design css-float clearfix


    【解决方案1】:

    有必要吗?

    .float-layout {
      padding: 5px 5px;
      float: left;
      width: 100%;
      height: auto;
      box-sizing: border-box;
      margin: 0;
    }
    
    .card-container {
      overflow: hidden;
    }
    
    .card {
      background-color: dodgerblue;
      color: black;
      min-height: 100%; /*replace this it in width: 100%*/
      width: 50%;
      float: right;
    }
    
    .card-title {
      font-size: 30px;
      text-align: center;
      font-weight: bold;
      padding-top: 20px;
    }
    
    .card-desc {
      padding: 10px;
      text-align: left;
      font-size: 18px;
    }
    
    /*add this it*/
    .card-image {
      display: flex;
    }
    /*-------------*/
    
    div.card-image img {
      width: 50%;
      height: auto;
    }
    
    /* Phone Devices Query */
    @media only screen and (max-width: 37.5em) {
      div.card-image img {
        width: 100%;
        height: auto;
      }
      
      /*add this it*/
      .card-image {
         flex-direction: column;
      }
      /*----------------------*/
    
      .card {
        width: 100%;
        margin-top: -4px;
      }
    }
    <div class="card-container">
      <div class="float-layout">
        <div class="card-image">
          <img src="https://images.pexels.com/photos/534151/pexels-photo-534151.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260">
          <div class="card">
            <div class="card-title">Title</div>
            <div class="card-desc">
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce ullamcorper
              mollis tempus. Mauris eu maximus lectus, eu auctor justo. Aenean porta purus
              vel commodo consequat.
            </div>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

    • 谢谢!这完美无缺。我尝试了clearfix,但它没有用。这个组件最初是我制作的不同代码库的一部分。我试图将其更改为您的解决方案,但未成功。我的大多数组件共享相同的基本代码,只做了一些小的改动。附带说明一下,与其他解决方案相比,此代码速率如何?
    • 很可能你还没有使用我的所有代码。在 css 中,我标记了我添加和替换的所有内容。再试一次。
    • 我说你的解决方案有效。我的意思是,最初当我致力于将其更改为应有的工作方式(以及您如何解决它)时,我没有成功。你的解决方案很好,非常感谢。我没想到这么简单。将 float 与 flex 结合起来似乎是一个非常简单且强大的解决方案。
    猜你喜欢
    • 2020-11-09
    • 2016-07-11
    • 1970-01-01
    • 2018-07-28
    • 2021-03-16
    • 2017-01-06
    • 1970-01-01
    • 2022-08-17
    • 2016-03-11
    相关资源
    最近更新 更多