【问题标题】:Height / Width aspect ratio not working with width: 100% and padding-top CSS trick高度/宽度纵横比不适用于宽度:100% 和 padding-top CSS 技巧
【发布时间】:2019-12-03 01:36:33
【问题描述】:

.line-score-card {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.325), 0 1px 5px 0 rgba(0, 0, 0, 0.325), 0 3px 1px -2px rgba(0, 0, 0, 0.325);
  width: 100%;
  padding-top: 40%;
  padding-left: 5px;
  padding-right: 5px;
}

.line-score-card .card-row {
  display: flex;
  align-items: center;
  border-bottom: 1px solid #CCCCCC;
  padding: 4px 0px;
}

.line-score-card .card-row .card-value {
  flex: 1;
  text-align: center;
}

.line-score-card .card-row .card-value.score-total {
  font-weight: 700;
}
<div style="width: 300px">
  <div class="line-score-card">
    <div class="card-row" style="border-top: none;">
      <div class="card-value"></div>
      <div class="card-value">Half 1</div>
      <div class="card-value">Half 2</div>
      <div class="card-value score-total">Total</div>
    </div>
    <div class="card-row">
      <div class="card-value">
        <a href="/stats/teams/UNC/overview"><img src="https://s3.amazonaws.com/cbbteamlogos/UNC-logo.png" style="width: 33px;"></a>
      </div>
      <div class="card-value">44</div>
      <div class="card-value">29</div>
      <div class="card-value score-total">73</div>
    </div>
    <div class="card-row" style="border-bottom: none;">
      <div class="card-value">
        <a href="/stats/teams/DUKE/overview"><img src="https://s3.amazonaws.com/cbbteamlogos/DUKE-logo.png" style="width: 33px;"></a>
      </div>
      <div class="card-value">44</div>
      <div class="card-value">30</div>
      <div class="card-value score-total">74</div>
    </div>
  </div>
</div>

大家好,

在上面的示例中创建响应式 div 时遇到问题。一般来说,随着包装 div(设置 width: 300px 的 div)改变宽度,我希望内部 div(类 line-score-card)保持 2.5 比 1 的宽高比。To(尝试)这样做,我设置了width: 100%padding-top: 40%,根据很多文章建议为 div 创建这种类型的纵横比的方法是以这种方式使用 padding-top。

在我的示例中,line-score-card div 中的内容(行及其各自的内容)显示在填充下方,我认为这是有道理的,但结果显然不是我想要的。对此的任何帮助将不胜感激!

【问题讨论】:

  • 使内容位置:绝对。只有填充需要在 div 内才能具有比例
  • 我尝试对外部/内部内容使用相对/绝对定位,但没有成功
  • 如果你不想使用javascript,试试这个stackoverflow.com/questions/1495407/…>
  • 啊,当使用绝对位置时,我没有将内部内容包装在自己的 div 中,根据下面的答案

标签: html css


【解决方案1】:

添加 position:relative to ".line-score-card" 创建一个新的 div 包装器(我称它为 "inner-content" 但你可以叫它任何名称)来包装内部卡行,然后应用 position:absolute 到新创建的包装器。这将允许父容器保持与填充的比例,并将内容适当地定位在内部。小心溢出。

.line-score-card {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.325), 0 1px 5px 0 rgba(0, 0, 0, 0.325), 0 3px 1px -2px rgba(0, 0, 0, 0.325);
  width: 100%;
  padding-top: 40%;
  padding-left: 5px;
  padding-right: 5px;
  position: relative; 
}

/* add this to reflect the new inner div */
.line-score-card .inner-content {
  position: absolute;
  top:0;
  left:0;
  width: 100%;
}

.line-score-card .card-row {
  display: flex;
  align-items: center;
  border-bottom: 1px solid #CCCCCC;
  padding: 4px 0px;
}

.line-score-card .card-row .card-value {
  flex: 1;
  text-align: center;
}

.line-score-card .card-row .card-value.score-total {
  font-weight: 700;
}
<div style="width: 300px">
  <div class="line-score-card">
    <!-- Begin inner wrapper for absolute positioning -->
    <div class="inner-content">
      <div class="card-row" style="border-top: none;">
        <div class="card-value"></div>
        <div class="card-value">Half 1</div>
        <div class="card-value">Half 2</div>
        <div class="card-value score-total">Total</div>
      </div>
      <div class="card-row">
        <div class="card-value">
          <a href="/stats/teams/UNC/overview"><img src="https://s3.amazonaws.com/cbbteamlogos/UNC-logo.png" style="width: 33px;"></a>
        </div>
        <div class="card-value">44</div>
        <div class="card-value">29</div>
        <div class="card-value score-total">73</div>
      </div>
      <div class="card-row" style="border-bottom: none;">
        <div class="card-value">
          <a href="/stats/teams/DUKE/overview"><img src="https://s3.amazonaws.com/cbbteamlogos/DUKE-logo.png" style="width: 33px;"></a>
        </div>
        <div class="card-value">44</div>
        <div class="card-value">30</div>
        <div class="card-value score-total">74</div>
      </div>
    </div>
    <!-- End inner wrapper for absolute positioning -->
  </div>
</div>

【讨论】:

  • 具有正相对/绝对位置的内部内容 div 有意义 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2014-07-01
  • 2016-12-30
  • 2018-12-18
  • 2013-08-26
  • 1970-01-01
  • 2011-04-14
相关资源
最近更新 更多